Attributes
- state [RW]
- Server global state for accessing Server::Session
Public Class methods
# File lib/net/irc/server.rb, line 5
5: def initialize(host, port, session_class, opts={})
6: @host = host
7: @port = port
8: @session_class = session_class
9: @opts = OpenStruct.new(opts)
10: @sessions = []
11: @state = {}
12: end
Public Instance methods
Close all sessions.
# File lib/net/irc/server.rb, line 40
40: def finish
41: Thread.exclusive do
42: @accept.kill
43: begin
44: @serv.close
45: rescue
46: end
47: @sessions.each do |s|
48: s.finish
49: end
50: end
51: end
Start server loop.
# File lib/net/irc/server.rb, line 15
15: def start
16: @serv = TCPServer.new(@host, @port)
17: @log = @opts.logger || Logger.new($stdout)
18: @log.info "Host: #{@host} Port:#{@port}"
19: @accept = Thread.start do
20: loop do
21: Thread.start(@serv.accept) do |s|
22: begin
23: @log.info "Client connected, new session starting..."
24: s = @session_class.new(self, s, @log, @opts)
25: @sessions << s
26: s.start
27: rescue Exception => e
28: puts e
29: puts e.backtrace
30: ensure
31: @sessions.delete(s)
32: end
33: end
34: end
35: end
36: @accept.join
37: end