lib/chillout/client.rb in chillout-0.2.1 vs lib/chillout/client.rb in chillout-0.2.2
- old
+ new
@@ -5,19 +5,22 @@
require 'chillout/dispatcher'
require 'chillout/config'
require 'chillout/error'
require 'chillout/event_data_builder'
require 'chillout/prefixed_logger'
+require 'chillout/worker'
+require 'thread'
module Chillout
class Client
extend Forwardable
def_delegators :@dispatcher, :dispatch_error, :send_error, :send_creations
attr_reader :config
attr_reader :logger
+ attr_reader :queue
def initialize(config_or_api_key, options = {})
build_config(config_or_api_key, options)
yield @config if block_given?
@@ -25,15 +28,27 @@
@logger = PrefixedLogger.new("Chillout", @config.logger)
@http_client = HttpClient.new(@config, logger)
@event_data_builder = EventDataBuilder.new(@config)
@server_side = ServerSide.new(@event_data_builder, @http_client)
- @filter = ErrorFilter.new
- @dispatcher = Dispatcher.new(@filter, @server_side)
+ @filter = ErrorFilter.new
+ @dispatcher = Dispatcher.new(@filter, @server_side)
+ @queue = Queue.new
end
def send_exception(exception, environment = {})
send_error(Error.new(exception, environment))
+ end
+
+ def enqueue(creations)
+ @queue << creations
+ end
+
+ def start_worker
+ thread = Thread.new do
+ worker = Worker.new(@dispatcher, @queue, @logger)
+ worker.run
+ end
end
private
def build_config(config_or_api_key, options)
case config_or_api_key