class FFWD::Debug::TCP
Public Class Methods
new(host, port, rebind_timeout)
click to toggle source
# File lib/ffwd/debug/tcp.rb, line 28 def initialize host, port, rebind_timeout @clients = {} @sessions = {} @host = host @port = port @peer = "#{@host}:#{@port}" info = "tcp://#{@peer}" r = FFWD.retry :timeout => rebind_timeout do |attempt| EM.start_server @host, @port, Connection, self log.info "Bind on #{info} (attempt #{attempt})" end r.error do |a, t, e| log.warning "Bind on #{info} failed, retry ##{a} in #{t}s: #{e}" end r.depend_on self end
Public Instance Methods
monitor(channel, type)
click to toggle source
Setup monitor hooks for the specified input and output channel.
# File lib/ffwd/debug/tcp.rb, line 65 def monitor channel, type channel.starting do if session = @sessions[channel.id] log.error "Session already monitored: #{channel.id}" return end session = MonitorSession.new channel, type # provide the session to any already connected clients. @clients.each do |peer, client| session.register peer, client end @sessions[channel.id] = session end channel.stopping do @sessions.delete channel.id end end
register_client(peer, client)
click to toggle source
# File lib/ffwd/debug/tcp.rb, line 48 def register_client peer, client @sessions.each do |id, session| session.register peer, client end @clients[peer] = client end
unregister_client(peer, client)
click to toggle source
# File lib/ffwd/debug/tcp.rb, line 56 def unregister_client peer, client @sessions.each do |id, session| session.unregister peer, client end @clients.delete peer end