Sha256: afe08fd722f2f11df07610766dd7ab773829a3e18bc491f5540da45ac3ee861d

Contents?: true

Size: 961 Bytes

Versions: 1

Compression:

Stored size: 961 Bytes

Contents

require 'securerandom'
class FnordMetric::API
  @@opts = nil
  def initialize opts
    @@opts = FnordMetric.default_options(opts)
    connect
  end
  
  def connect
    @redis = @@opts[:redis] if @@opts[:redis]
    @redis = Redis.connect(:url => @@opts[:redis_url])
  end
  
  def event(event_data)
    event_data = event_data.to_json if event_data.is_a?(Hash)
    push_event(get_next_uuid, event_data)
  end

  def disconnect
    @redis.quit
  end
  
  private 
  
  def push_event(event_id, event_data)    
    prefix = @@opts[:redis_prefix]
    @redis.hincrby "#{prefix}-testdata",          "events_received", 1
    @redis.hincrby "#{prefix}-stats",             "events_received", 1
    @redis.set     "#{prefix}-event-#{event_id}", event_data
    @redis.lpush   "#{prefix}-queue",             event_id       
    @redis.expire  "#{prefix}-event-#{event_id}", @@opts[:event_queue_ttl]
    event_id
  end
  
  def get_next_uuid
    SecureRandom.uuid
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fnordmetric-0.6.2 lib/fnordmetric/api.rb