Sha256: b048a5c67a2c4c3e52770b2cb30860cac31dcc705ce80963ff5bdf10a72ae82f

Contents?: true

Size: 964 Bytes

Versions: 2

Compression:

Stored size: 964 Bytes

Contents

module Pione
  module Agent
    # JobTerminator is an agent that terminates the target agent when
    # "terminate" command is received.
    class JobTerminator < TupleSpaceClient
      set_agent_type :job_terminator, self

      def initialize(space, &b)
        super(space)
        @action = b
      end

      #
      # transition definitions
      #

      define_transition :wait
      define_transition :fire

      chain :init => :wait
      chain :wait => :fire
      chain :fire => :terminate

      #
      # transition methods
      #

      def transit_to_wait
        tuple = read(TupleSpace::CommandTuple.new(name: "terminate"))
        status = System::Status.success
        unless tuple.args.empty?
          status = tuple.args.first
        end
        return status
      end

      def transit_to_fire(status)
        Log::Debug.system("job terminator fires the action %s." % @action)
        @action.call(status)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pione-0.3.2 lib/pione/agent/job-terminator.rb
pione-0.3.1 lib/pione/agent/job-terminator.rb