class Chizuru::Consumer

Represents a consumer. Consumer takes tweets from Source, and generates status and passes it to deliverers.

Public Class Methods

new() click to toggle source

Initializes an instance of Consumer and starts loop.

# File lib/chizuru/consumer.rb, line 6
def initialize
  @deliverers = []
  @queue = Queue.new
  Thread.new do
    while true
      data = @queue.deq
      dispatch(data)
    end
  end
end

Public Instance Methods

add_deliverer(deliverer) click to toggle source

Adds deliverer.

# File lib/chizuru/consumer.rb, line 18
def add_deliverer(deliverer)
  @deliverers << deliverer
end
deliver(data) click to toggle source

On delivering a status.

# File lib/chizuru/consumer.rb, line 28
def deliver(data)
  @queue.enq data
end
dispatch(data) click to toggle source

Dispatches a status to deliverers this has.

# File lib/chizuru/consumer.rb, line 33
def dispatch(data)
  @deliverers.each do |deliverer|
    Thread.new do 
      deliverer.deliver(data)
    end
  end
end
remove_deliverer(deliverer) click to toggle source

Removes a deliverer.

# File lib/chizuru/consumer.rb, line 23
def remove_deliverer(deliverer)
  @deliverers.delete(deliverer)
end