@last_ping = nil
}
@client[:nick] = proc {|data|
+ # debug "Message source is #{data[:source].inspect}"
+ # debug "Bot is #{myself.inspect}"
source = data[:source]
old = data[:oldnick]
new = data[:newnick]
exit 2
end
- stop_server_pings
- server.clear
- if @socket.connected?
- @socket.clearq
- @socket.shutdown
- end
+ disconnect
- log "disconnected"
+ log "\n\nDisconnected\n\n"
quit if $interrupted > 0
- log "waiting to reconnect"
+ log "\n\nWaiting to reconnect\n\n"
sleep @config['server.reconnect_wait']
end
end
sendq "TOPIC #{where} :#{topic}", where, 2
end
+ def disconnect(message = nil)
+ message = @lang.get("quit") if (message.nil? || message.empty?)
+ if @socket.connected?
+ debug "Clearing socket"
+ @socket.clearq
+ debug "Sending quit message"
+ @socket.emergency_puts "QUIT :#{message}"
+ debug "Flushing socket"
+ @socket.flush
+ debug "Shutting down socket"
+ @socket.shutdown
+ end
+ debug "Logging quits"
+ server.channels.each { |ch|
+ irclog "@ quit (#{message})", ch
+ }
+ stop_server_pings
+ @client.reset
+ end
+
# disconnect from the server and cleanup all plugins and modules
def shutdown(message = nil)
@quit_mutex.synchronize do
# rescue => e
# debug "failed to restore signals: #{e.inspect}\nProbably running on windows?"
# end
- message = @lang.get("quit") if (message.nil? || message.empty?)
- if @socket.connected?
- debug "Clearing socket"
- @socket.clearq
- debug "Sending quit message"
- @socket.emergency_puts "QUIT :#{message}"
- debug "Flushing socket"
- @socket.flush
- debug "Shutting down socket"
- @socket.shutdown
- end
- debug "Logging quits"
- server.channels.each { |ch|
- irclog "@ quit (#{message})", ch
- }
+ disconnect
debug "Saving"
save
debug "Cleaning up"
# create a new Client instance
def initialize
@server = Server.new # The Server
- @user = @server.user("") # The User representing the client on this Server
+ @user = @server.user("") # The User representing the client on this Server
@handlers = Hash.new
@tmpusers = []
end
+ # clear the server and reset the User
+ def reset
+ @server.clear
+ @user = @server.user("")
+ end
+
# key:: server event to handle
# value:: proc object called when event occurs
# set a handler for a server event