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