module CZTop::Reactor::SocketMonitoring

Methods for logging monitor events.

Attributes

monitor[R]

The CZTop::Monitor for the server socket

Public Class Methods

included( mod ) click to toggle source

Inclusion callback – add Loggability to including classes.

Calls superclass method
# 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

clean_up_socket_monitor( mon ) click to toggle source

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_event( monitor_event )
Alias for: on_monitor_event
on_monitor_event( monitor_event ) click to toggle source

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
Also aliased as: handle_monitor_event
set_up_socket_monitor( reactor, socket, *events ) click to toggle source

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
with_socket_monitor( reactor, socket, *events ) { || ... } click to toggle source

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

initialize( * ) click to toggle source

Set up a monitor instance variable on object creation.

Calls superclass method
# File lib/cztop/reactor/socket_monitoring.rb, line 17
def initialize( * ) # :notnew:
        super if defined?( super )
        @monitor = nil
end
on_accept_failed( fd, endpoint ) click to toggle source

Monitor event callback for socket accept failed events

Calls superclass method
# 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
on_accepted( fd, endpoint ) click to toggle source

Monitor event callback for socket accepted events

Calls superclass method
# 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
on_bind_failed( fd, endpoint ) click to toggle source

Monitor event callback for bind failure events

Calls superclass method
# 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
on_close_failed( fd, endpoint ) click to toggle source

Monitor event callback for socket close failed events

Calls superclass method
# 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
on_closed( fd, endpoint ) click to toggle source

Monitor event callback for socket closed events

Calls superclass method
# 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
on_connect_delayed( fd, endpoint ) click to toggle source

Monitor event callback for socket connection-delayed events

Calls superclass method
# 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
on_connect_retried( fd, endpoint ) click to toggle source

Monitor event callback for socket retry events

Calls superclass method
# 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
on_connected( fd, endpoint ) click to toggle source

Monitor event callback for socket connection events

Calls superclass method
# 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
on_disconnected( fd, endpoint ) click to toggle source

Monitor event callback for socket disconnection events

Calls superclass method
# 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
on_handshake_failed_auth( fd, endpoint ) click to toggle source

Monitor event callback for failed auth events.

Calls superclass method
# 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
on_handshake_failed_no_detail( fd, endpoint ) click to toggle source

Monitor event callback for failed handshake events.

Calls superclass method
# 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
on_handshake_failed_protocol( fd, endpoint ) click to toggle source

Monitor event callback for failed handshake events.

Calls superclass method
# 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
on_handshake_succeeded( fd, endpoint ) click to toggle source

Monitor event callback for successful auth events.

Calls superclass method
# 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
on_listening( fd, endpoint ) click to toggle source

Monitor event callback for listening events

Calls superclass method
# 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
on_monitor_stopped( fd, endpoint ) click to toggle source

Monitor event callback for monitor stopped events.

Calls superclass method
# 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