Net::IRC::Server::Session (Class)
# 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
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