module CZTop::Reactor::SocketMonitoring
Methods for logging monitor events.
Attributes
The CZTop::Monitor for the server socket
Public Class Methods
Inclusion callback – add Loggability to including classes.
# File lib/cztop/reactor/socket_monitoring.rb, line 9 def self::included( mod ) super mod.extend( Loggability ) mod.log_to( :cztop ) unless Loggability.log_host?( mod ) end
Public Instance Methods
Tear down the monitor.
# File lib/cztop/reactor/socket_monitoring.rb, line 44 def clean_up_socket_monitor( mon ) mon.terminate if mon self.log.debug "Monitor is: %p" % [ mon ] end
Handle monitor events.
# File lib/cztop/reactor/socket_monitoring.rb, line 51 def on_monitor_event( monitor_event ) # self.log.debug "Got monitor event: %p" % [ monitor_event ] msg = monitor_event.socket.receive type, *payload = *msg callback_name = "on_#{type.downcase}" if self.respond_to?( callback_name, true ) self.send( callback_name, *payload ) else self.log.warn "No handler (#%s) for monitored %s event." % [ callback_name, type ] end end
Create a monitor for the specified socket
.
# File lib/cztop/reactor/socket_monitoring.rb, line 38 def set_up_socket_monitor( reactor, socket, *events ) return reactor.register_monitor( socket, *events, &self.method(:on_monitor_event) ) end
Run the block with monitoring for the specified socket
.
# File lib/cztop/reactor/socket_monitoring.rb, line 28 def with_socket_monitor( reactor, socket, *events ) mon = self.set_up_socket_monitor( reactor, socket, *events ) return yield ensure self.clean_up_socket_monitor( mon ) end
Protected Instance Methods
Set up a monitor instance variable on object creation.
# File lib/cztop/reactor/socket_monitoring.rb, line 17 def initialize( * ) # :notnew: super if defined?( super ) @monitor = nil end
Monitor event callback for socket accept failed events
# File lib/cztop/reactor/socket_monitoring.rb, line 115 def on_accept_failed( fd, endpoint ) self.log.debug "Client socket on FD %d accept failed" % [ fd ] super if defined?( super ) end
Monitor event callback for socket accepted events
# File lib/cztop/reactor/socket_monitoring.rb, line 108 def on_accepted( fd, endpoint ) self.log.debug "Client socket on FD %d accepted" % [ fd ] super if defined?( super ) end
Monitor event callback for bind failure events
# File lib/cztop/reactor/socket_monitoring.rb, line 101 def on_bind_failed( fd, endpoint ) self.log.debug "Socket on FD %d could not be bound" % [ fd ] super if defined?( super ) end
Monitor event callback for socket close failed events
# File lib/cztop/reactor/socket_monitoring.rb, line 129 def on_close_failed( fd, endpoint ) self.log.debug "Close failed for socket on FD %d" % [ fd ] super if defined?( super ) end
Monitor event callback for socket closed events
# File lib/cztop/reactor/socket_monitoring.rb, line 122 def on_closed( fd, endpoint ) self.log.debug "Client socket on FD %d closed" % [ fd ] super if defined?( super ) end
Monitor event callback for socket connection-delayed events
# File lib/cztop/reactor/socket_monitoring.rb, line 80 def on_connect_delayed( fd, endpoint ) self.log.debug "Client socket on FD %d connection delayed" % [ fd ] super if defined?( super ) end
Monitor event callback for socket retry events
# File lib/cztop/reactor/socket_monitoring.rb, line 87 def on_connect_retried( fd, endpoint ) self.log.debug "Retrying connection for socket on FD %d" % [ fd ] super if defined?( super ) end
Monitor event callback for socket connection events
# File lib/cztop/reactor/socket_monitoring.rb, line 73 def on_connected( fd, endpoint ) self.log.debug "Client socket on FD %d connected" % [ fd ] super if defined?( super ) end
Monitor event callback for socket disconnection events
# File lib/cztop/reactor/socket_monitoring.rb, line 136 def on_disconnected( fd, endpoint ) self.log.debug "Client socket on FD %d disconnected" % [ fd ] super if defined?( super ) end
Monitor event callback for failed auth events.
# File lib/cztop/reactor/socket_monitoring.rb, line 171 def on_handshake_failed_auth( fd, endpoint ) self.log.debug "Client socket on FD %d handshake failed: authentication failure" % [ fd ] super if defined?( super ) end
Monitor event callback for failed handshake events.
# File lib/cztop/reactor/socket_monitoring.rb, line 157 def on_handshake_failed_no_detail( fd, endpoint ) self.log.debug "Client socket on FD %d handshake failed; no further details are known" % [ fd ] super if defined?( super ) end
Monitor event callback for failed handshake events.
# File lib/cztop/reactor/socket_monitoring.rb, line 164 def on_handshake_failed_protocol( fd, endpoint ) self.log.debug "Client socket on FD %d handshake failed: protocol error" % [ fd ] super if defined?( super ) end
Monitor event callback for successful auth events.
# File lib/cztop/reactor/socket_monitoring.rb, line 150 def on_handshake_succeeded( fd, endpoint ) self.log.debug "Client socket on FD %d handshake succeeded" % [ fd ] super if defined?( super ) end
Monitor event callback for listening events
# File lib/cztop/reactor/socket_monitoring.rb, line 94 def on_listening( fd, endpoint ) self.log.debug "Socket on FD %d is now listening for connections" % [ fd ] super if defined?( super ) end
Monitor event callback for monitor stopped events.
# File lib/cztop/reactor/socket_monitoring.rb, line 143 def on_monitor_stopped( fd, endpoint ) self.log.debug "Monitor for socket on FD %d stopped." % [ fd ] super if defined?( super ) end