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