ahawkins/harness

View on GitHub
lib/harness/async_queue.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'thread'

module Harness
  class AsyncQueue
    attr_reader :consumer, :queue

    def initialize
      @queue = Queue.new
      @consumer = Thread.new do
        loop do
          msg = queue.pop

          method_name = msg.first
          args = msg.last

          collector.__send__ method_name, *args
        end
      end
    end

    def push(msg)
      queue.push msg
    end

    def collector
      Harness.collector
    end
  end
end