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

Methods

Included Modules

Net::IRC Constants

Attributes

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

Public Class methods

[Source]

    # File lib/net/irc/server.rb, line 81
81:                 def initialize(server, socket, logger, opts={})
82:                         @server, @socket, @log, @opts = server, socket, logger, opts
83:                 end

[Source]

    # File lib/net/irc/server.rb, line 85
85:                 def self.start(*args)
86:                         new(*args).start
87:                 end

Public Instance methods

Override subclass.

[Source]

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

Override subclass.

[Source]

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

Close this session.

[Source]

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

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

[Source]

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

Call when socket connected.

[Source]

     # File lib/net/irc/server.rb, line 144
144:                 def on_connected
145:                 end

Call when socket closed.

[Source]

     # File lib/net/irc/server.rb, line 148
148:                 def on_disconnected
149:                 end

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

[Source]

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

Default NICK callback. Set @nick.

[Source]

     # File lib/net/irc/server.rb, line 128
128:                 def on_nick(m)
129:                         @nick = m.params[0]
130:                         @prefix = Prefix.new("#{@nick}!#{@user}@#{@host}") if defined? @prefix
131:                 end

Default PASS callback. Set @pass.

[Source]

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

Default PING callback. Response PONG.

[Source]

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

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

[Source]

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

Override subclass.

[Source]

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

Override subclass.

[Source]

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

Start session loop.

[Source]

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

[Validate]