class FFWD::Debug::MonitorSession

Public Class Methods

new(channel, type) click to toggle source
# File lib/ffwd/debug/monitor_session.rb, line 20
def initialize channel, type
  @type = type
  @clients = {}

  subs = []

  channel.starting do
    subs << channel.event_subscribe do |event|
      data = @type.serialize_event event

      begin
        send JSON.dump(:id => channel.id, :type => :event, :data => data)
      rescue => e
        log.error "Failed to serialize event", e
        return
      end
    end

    subs << channel.metric_subscribe do |metric|
      data = @type.serialize_metric metric

      begin
        send JSON.dump(:id => channel.id, :type => :metric, :data => data)
      rescue => e
        log.error "Failed to serialize metric", e
        return
      end
    end
  end

  channel.stopping do
    subs.each(&:unsubscribe).clear
  end
end

Public Instance Methods

register(peer, client) click to toggle source
# File lib/ffwd/debug/monitor_session.rb, line 55
def register peer, client
  @clients[peer] = client
end
send(line) click to toggle source
# File lib/ffwd/debug/monitor_session.rb, line 63
def send line
  @clients.each do |peer, client|
    client.send_line line
  end
end
unregister(peer, client) click to toggle source
# File lib/ffwd/debug/monitor_session.rb, line 59
def unregister peer, client
  @clients.delete peer
end