Class Net::IRC::Server
In: lib/net/irc/server.rb
Parent: Object

Methods

finish   new   start  

Classes and Modules

Class Net::IRC::Server::Session

Attributes

sessions  [RW] 
state  [RW]  Server global state for accessing Server::Session

Public Class methods

[Source]

    # File lib/net/irc/server.rb, line 6
 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

Close all sessions.

[Source]

    # File lib/net/irc/server.rb, line 41
41:         def finish
42:                 Thread.exclusive 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 server loop.

[Source]

    # File lib/net/irc/server.rb, line 16
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

[Validate]