class Net::IRC::Server

Attributes

sessions[RW]
state[RW]

Server global state for accessing Server::Session

Public Class Methods

new(host, port, session_class, opts={}) click to toggle source
   # File lib/net/irc/server.rb
 6 def initialize(host, port, session_class, opts={})
 7         @host          = host
 8         @port          = port
 9         @session_class = session_class
10         @opts          = OpenStruct.new(opts)
11         @sessions      = []
12         @state         = {}
13 end

Public Instance Methods

finish() click to toggle source

Close all sessions.

   # File lib/net/irc/server.rb
41 def finish
42         m = Thread::Mutex.new ; m.synchronize do
43                 @accept.kill
44                 begin
45                         @serv.close
46                 rescue
47                 end
48                 @sessions.each do |s|
49                         s.finish
50                 end
51         end
52 end
start() click to toggle source

Start server loop.

   # File lib/net/irc/server.rb
16 def start
17         @serv = TCPServer.new(@host, @port)
18         @log  = @opts.logger || Logger.new($stdout)
19         @log.info "Host: #{@host} Port:#{@port}"
20         @accept = Thread.start do
21                 loop do
22                         Thread.start(@serv.accept) do |s|
23                                 begin
24                                         @log.info "Client connected, new session starting..."
25                                         s = @session_class.new(self, s, @log, @opts)
26                                         @sessions << s
27                                         s.start
28                                 rescue Exception => e
29                                         puts e
30                                         puts e.backtrace
31                                 ensure
32                                         @sessions.delete(s)
33                                 end
34                         end
35                 end
36         end
37         @accept.join
38 end