class GameAnalytics::Client

Public Class Methods

new() click to toggle source
# File lib/game_analytics/client.rb, line 7
def initialize
  @queue = Queue.new
  @worker_mutex = Mutex.new
end

Public Instance Methods

enqueue(metric) click to toggle source
# File lib/game_analytics/client.rb, line 12
def enqueue(metric)
  return if disabled
  ensure_worker_running
  @queue << metric
  nil
end

Private Instance Methods

ensure_worker_running() click to toggle source
# File lib/game_analytics/client.rb, line 22
def ensure_worker_running
  return if worker_running?
  @worker_mutex.synchronize do
    return if worker_running?
    start_worker
  end
end
start_worker() click to toggle source
# File lib/game_analytics/client.rb, line 34
def start_worker
  @worker_thread = Thread.new do
    begin
      Worker.new(@queue).run
    rescue => ex
      logger.info "GameAnalytics worker thread exception: #{ex}"
    end
  end
end
worker_running?() click to toggle source
# File lib/game_analytics/client.rb, line 30
def worker_running?
  @worker_thread && @worker_thread.alive?
end