class FnordMetric::FyrehoseAcceptor

Public Class Methods

new(opts) click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 10
def initialize(opts)
  reactor = EM.connect(opts[:host], opts[:port], Fyrehose::Reactor)

  reactor.on_message do |channel, data|
    event = JSON.parse(data)
    event["_type"] ||= channel
    events << event
    push_next_event
  end

  opts[:channels].each do |channel|
    reactor.subscribe(channel)
  end
end
outboud?() click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 39
def self.outboud?
  true
end
start(opts) click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 3
def self.start(opts)
  require "fyrehose"
  require "fyrehose/reactor"

  new(opts)
end

Public Instance Methods

api() click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 35
def api
  @api ||= FnordMetric::API.new(FnordMetric.options)
end
events() click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 31
def events
  @events ||= []
end
push_next_event() click to toggle source
# File lib/fnordmetric/acceptors/fyrehose_acceptor.rb, line 25
def push_next_event
  return true if events.empty?
  api.event(@events.pop)
  EM.next_tick(&method(:push_next_event))
end