Class: Timber::LogDevices::HTTP::DroppingSizedQueue

Inherits:
SizedQueue
  • Object
show all
Defined in:
lib/timber/log_devices/http.rb

Overview

Works like SizedQueue, but drops message instead of blocking. Pass one of these in to HTTP#intiialize via the :request_queue option if you’d prefer to drop messages in the event of a buffer overflow instead of applying back pressure.

Instance Method Summary collapse

Instance Method Details

#push(obj) ⇒ Object

Returns true/false depending on whether the queue is full or not



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/timber/log_devices/http.rb', line 56

def push(obj)
  @mutex.synchronize do
    return false unless @que.length < @max

    @que.push obj
    begin
      t = @waiting.shift
      t.wakeup if t
    rescue ThreadError
      retry
    end
    return true
  end
end