Class: Net::IRC::Server::Session

Net::IRC::Server::Session (Class)

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

Included Modules

Attributes

host [R]
nick [R]
prefix [R]
real [R]

Public Class methods

    # File lib/net/irc/server.rb, line 80
80:                 def initialize(server, socket, logger, opts={})
81:                         @server, @socket, @log, @opts = server, socket, logger, opts
82:                 end
    # File lib/net/irc/server.rb, line 84
84:                 def self.start(*args)
85:                         new(*args).start
86:                 end

Public Instance methods

Override subclass.

    # File lib/net/irc/server.rb, line 76
76:                 def avaiable_channel_modes
77:                         "spknm"
78:                 end

Override subclass.

    # File lib/net/irc/server.rb, line 71
71:                 def avaiable_user_modes
72:                         "eixwy"
73:                 end

Close this session.

     # File lib/net/irc/server.rb, line 111
111:                 def finish
112:                         begin
113:                                 @socket.close
114:                         rescue
115:                         end
116:                         on_disconnected
117:                 end

Do nothing. This is for avoiding error on calling super. So you can always call super at subclass.

     # File lib/net/irc/server.rb, line 161
161:                 def method_missing(name, *args)
162:                 end

Call when socket connected.

     # File lib/net/irc/server.rb, line 141
141:                 def on_connected
142:                 end

Call when socket closed.

     # File lib/net/irc/server.rb, line 145
145:                 def on_disconnected
146:                 end

Catch all messages. If this method return true, aother callback will not be called.

     # File lib/net/irc/server.rb, line 150
150:                 def on_message(m)
151:                 end

Default NICK callback. Set @nick.

     # File lib/net/irc/server.rb, line 127
127:                 def on_nick(m)
128:                         @nick = m.params[0]
129:                 end

Default PASS callback. Set @pass.

     # File lib/net/irc/server.rb, line 121
121:                 def on_pass(m)
122:                         @pass = m.params[0]
123:                 end

Default PING callback. Response PONG.

     # File lib/net/irc/server.rb, line 154
154:                 def on_ping(m)
155:                         post server_name, PONG, m.params[0]
156:                 end

Default USER callback. Set @user, @real, @host and call initial_message.

     # File lib/net/irc/server.rb, line 133
133:                 def on_user(m)
134:                         @user, @real = m.params[0], m.params[3]
135:                         @host = @socket.peeraddr[2]
136:                         @prefix = Prefix.new("#{@nick}!#{@user}@#{@host}")
137:                         initial_message
138:                 end

Override subclass.

    # File lib/net/irc/server.rb, line 61
61:                 def server_name
62:                         "net-irc"
63:                 end

Override subclass.

    # File lib/net/irc/server.rb, line 66
66:                 def server_version
67:                         "0.0.0"
68:                 end

Start session loop.

     # File lib/net/irc/server.rb, line 89
 89:                 def start
 90:                         on_connected
 91:                         while l = @socket.gets
 92:                                 begin
 93:                                         @log.debug "RECEIVE: #{l.chomp}"
 94:                                         m = Message.parse(l)
 95:                                         next if on_message(m) === true
 96: 
 97:                                         name = "on_#{(COMMANDS[m.command.upcase] || m.command).downcase}"
 98:                                         send(name, m) if respond_to?(name)
 99: 
100:                                         break if m.command == QUIT
101:                                 rescue Message::InvalidMessage
102:                                         @log.error "MessageParse: " + l.inspect
103:                                 end
104:                         end
105:                 rescue IOError
106:                 ensure
107:                         finish
108:                 end