class LogStash::MultiQueue

Attributes

logger[RW]

Public Class Methods

new(*queues) click to toggle source
# File lib/logstash/multiqueue.rb, line 9
def initialize(*queues)
  @logger = Cabin::Channel.get(LogStash)
  @mutex = Mutex.new
  @queues = queues
end

Public Instance Methods

<<(object)
Alias for: push
add_queue(queue) click to toggle source

Add a new Queue to this queue.

# File lib/logstash/multiqueue.rb, line 36
def add_queue(queue)
  @mutex.synchronize do
    @queues << queue
  end
end
logger=(_logger) click to toggle source
# File lib/logstash/multiqueue.rb, line 16
def logger=(_logger)
  @logger = _logger

  # Set the logger for all known queues, too.
  @queues.each do |q|
    q.logger = _logger
  end
end
push(object) click to toggle source

Push an object to all queues.

# File lib/logstash/multiqueue.rb, line 27
def push(object)
  @queues.each { |q| q.push(object) }
end
Also aliased as: <<, <<
remove_queue(queue) click to toggle source
# File lib/logstash/multiqueue.rb, line 43
def remove_queue(queue)
  @mutex.synchronize do
    @queues.delete(queue)
  end
end
size() click to toggle source
# File lib/logstash/multiqueue.rb, line 50
def size
  return @queues.collect { |q| q.size }
end