Sha256: cff88b7578b0b8ce14980a31adcb130ac69c804046a71bfb26b0f0e51a955464

Contents?: true

Size: 738 Bytes

Versions: 2

Compression:

Stored size: 738 Bytes

Contents

class FluQ::Runner
  include FluQ::Mixins::Loggable

  # Runs the runner (blocking)
  def self.run(&block)
    new(&block).run
  end

  # Constructor
  def initialize(&block)
    @feeds = Celluloid::SupervisionGroup.new
    block.call(self) if block
  end

  # @return [Array<FluQ::Feed>]
  def feeds
    @feeds.actors
  end

  # Registers a new feed
  # @param [String] name
  def feed(name, &block)
    @feeds.supervise FluQ::Feed, name, &block
  end

  # Starts the runner, blocking
  def run
    loop { sleep 5 while @feeds.alive? }
  end

  # Terminates the runner
  def terminate
    @feeds.terminate
  end

  # @return [String] introspection
  def inspect
    "#<#{self.class.name} feeds: #{feeds.map(&:name).inspect}>"
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fluq-0.8.1 lib/fluq/runner.rb
fluq-0.8.0 lib/fluq/runner.rb