Sha256: 491d55bfcc1f1c9a7596110c583d462efb63ad4b1692e594be8c6551af973824
Contents?: true
Size: 1.29 KB
Versions: 19
Compression:
Stored size: 1.29 KB
Contents
module Timber module LogDevices class HTTP # A simple thread-safe queue implementation that provides a #flush method. # The built-in ruby `Queue` class does not provide a #flush method that allows # the caller to retrieve all items on the queue in one call. The Ruby `SizedQueue` also # implements thread waiting, which is something we want to avoid. To keep things # simple and straight-forward, we designed this queue class. # @private class FlushableDroppingSizedQueue def initialize(max_size) @lock = Mutex.new @max_size = max_size @array = [] end # Adds a message to the queue def enq(msg) @lock.synchronize do if !full? @array << msg end end end # Removes a single item from the queue def deq @lock.synchronize do @array.pop end end # Flushes all message from the queue and returns them. def flush @lock.synchronize do old = @array @array = [] return old end end def full? size >= @max_size end def size @array.size end end end end end
Version data entries
19 entries across 19 versions & 1 rubygems