class Readme::RequestQueue
Public Class Methods
new(api_key, buffer_length)
click to toggle source
# File lib/readme/request_queue.rb, line 5 def initialize(api_key, buffer_length) @queue = [] @buffer_length = buffer_length @api_key = api_key @lock = Mutex.new end
Public Instance Methods
length()
click to toggle source
# File lib/readme/request_queue.rb, line 23 def length @queue.length end
push(request)
click to toggle source
# File lib/readme/request_queue.rb, line 12 def push(request) @lock.synchronize do @queue << request if ready_to_send? payloads = @queue.slice!(0, @buffer_length) send_payloads(payloads) end end end
Private Instance Methods
ready_to_send?()
click to toggle source
# File lib/readme/request_queue.rb, line 40 def ready_to_send? length >= @buffer_length end
send_payloads(payloads)
click to toggle source
# File lib/readme/request_queue.rb, line 29 def send_payloads(payloads) Thread.new do HTTParty.post( Readme::Metrics::ENDPOINT, basic_auth: {username: @api_key, password: ""}, headers: {"Content-Type" => "application/json"}, body: to_json(payloads) ) end end
to_json(payloads)
click to toggle source
# File lib/readme/request_queue.rb, line 44 def to_json(payloads) "[#{payloads.join(", ")}]" end