Sha256: 95d58c3a362235836f472be1b717a80ff007464d8cf2c100deaad8b56dcd6e66

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module Pione
  module Command
    # PioneBroker is a command for starting a PIONE broker agent. Brokers
    # provides task processing ability to the system.
    class PioneBroker < DaemonProcess
      define_info do
        set_name "pione-broker"
        set_tail {|cmd| "{TaskWorker: %s}" % cmd.option[:task_worker]}
        set_banner "Run broker agent to launch task workers."
      end

      define_option do
        use :color
        use :daemon
        use :debug
        use :features
        use :my_ip_address
        use :show_communication
        use :task_worker

        validate do |option|
          unless option[:task_worker] > 0
            abort("error: no task worker resources")
          end
        end
      end

      attr_reader :broker

      def create_front
        Front::BrokerFront.new(self)
      end

      prepare do
        @broker = Pione::Agent[:broker].new(
          option[:features],
          task_worker_resource: option[:task_worker]
        )
        @tuple_space_receiver = Pione::TupleSpaceReceiver.instance
      end

      start do
        # start broker agent
        @broker.start

        # start tuple space receiver with the broker agent
        @tuple_space_receiver.register(@broker)

        # wait
        begin
          DRb.thread.join
        rescue DRb::ReplyReaderThreadError
          retry
        end
      end

      terminate do
        @broker.terminate
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/command/pione-broker.rb
pione-0.2.1 lib/pione/command/pione-broker.rb