Sha256: 9e9195210c123704cdb78af685cd2b589b66cd932ad696b674b07b7645a9f682

Contents?: true

Size: 983 Bytes

Versions: 6

Compression:

Stored size: 983 Bytes

Contents

module Pione
  module Agent
    class ProcessManager < TupleSpaceClient
      set_agent_type :process_manager

      define_state :running
      define_state_transition :initialized => :sleeping
      define_state_transition :sleeping => :running
      define_state_transition :running => :sleeping

      attr_reader :document

      def initialize(tuple_space_server, document, params, stream)
        raise ArgumentError unless document.main
        super(tuple_space_server)
        @document = document
        @params = params
        @stream = stream
      end

      def transit_to_sleeping
        take(Tuple[:command].new("start-root-rule", nil))
      end

      def transit_to_running
        if handler = @document.root_rule(@params).make_handler(tuple_space_server)
          handler.handle
        else
          user_message "error: no inputs"
          terminate
        end
        terminate unless @stream
      end
    end

    set_agent ProcessManager
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pione-0.2.0 lib/pione/agent/process-manager.rb
pione-0.1.4 lib/pione/agent/process-manager.rb
pione-0.1.3 lib/pione/agent/process-manager.rb
pione-0.1.2 lib/pione/agent/process-manager.rb
pione-0.1.1 lib/pione/agent/process-manager.rb
pione-0.1.0 lib/pione/agent/process-manager.rb