Sha256: 82e852c634a864533f35a4d9d89839f0aba8970e5fcbbac8a3de9f13cc3b4f8d

Contents?: true

Size: 1.93 KB

Versions: 2

Compression:

Stored size: 1.93 KB

Contents

module Pione
  module Command
    # PioneTupleSpaceReceiver is a command that launchs tuple space receiver
    # agent.
    class PioneTupleSpaceReceiver < ChildProcess
      define_info do
        set_name "pione-tuple-space-receiver"
        set_tail {|cmd|
          front = Global.front.uri
          parent_front = cmd.option[:no_parent_mode] ? "nil" : cmd.option[:parent_front].uri
          "{Front: %s, ParentFront: %s}" % [front, parent_front]
        }
        set_banner <<TXT
Run tuple space receiver process for receiving tuple space presence
notifier. This command is launched by other processes like pione-broker
normally, but you can force to start by calling with --no-parent option.
TXT
      end

      define_option do
        use :debug
        use :color
        use :my_ip_address
        use :no_parent
        use :parent_front
        use :show_communication
        use :show_presence_notifier

        define(:presence_port) do |item|
          item.long = "--presence-port=PORT"
          item.desc = "set presence port number"
          item.action = lambda do |option, port|
            Global.presence_port = port.to_i
          end
        end
      end

      attr_reader :tuple_space_receiver

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

      prepare do
        @tuple_space_receiver = TupleSpaceReceiver.new
      end

      start do
        begin
          # start provider activity
          @tuple_space_receiver.start

          # set my uri to parent front as its provider
          unless option[:no_parent_mode]
            option[:parent_front].set_tuple_space_receiver(Global.front.uri)
          end

          # wait
          DRb.thread.join
        rescue DRb::ReplyReaderThreadError => e
          # ignore reply reader error
        end
      end

      terminate do
        Global.monitor.synchronize do
          @tuple_space_receiver.terminate
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/command/pione-tuple-space-receiver.rb
pione-0.2.1 lib/pione/command/pione-tuple-space-receiver.rb