Sha256: 639013ac8244f2c19473ed995f129effe035b5c9e035318d7dfde487eafe09b2

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

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 :package

      def initialize(tuple_space_server, package, params, stream)
        raise ArgumentError unless package.find_rule("Main")
        super(tuple_space_server)
        @package = package
        @params = params
        @stream = stream
      end

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

      def transit_to_running
        root = @package.create_root_rule(@package.find_rule("Main"), @params)
        if handler = root.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

2 entries across 2 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/agent/process-manager.rb
pione-0.2.1 lib/pione/agent/process-manager.rb