Class: Net::IRC::Server

Net::IRC::Server (Class)

In files
lib/net/irc/server.rb
Parent
Object

Methods

Classes and Modules

Class Net::IRC::Server::Session

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