Class: Pione::Agent::TaskWorkerBroker

Inherits:
BasicAgent
  • Object
show all
Defined in:
lib/pione/agent/task-worker-broker.rb

Overview

TaskWorkerBroker is an agent for providing task workers to tuple spaces.

Instance Attribute Summary

Attributes inherited from BasicAgent

#chain_threads

Instance Method Summary collapse

Methods inherited from BasicAgent

agent_type, inherited, set_agent_type, #start, #start!, #states, #terminate, #terminated?, #transit, #wait_until, #wait_until_after, #wait_until_before, #wait_until_terminated

Methods included from StateTransitionSingletonMethod

#chain, #define_exception_handler, #define_transition, #exception_handler, #start, #transition_chain

Constructor Details

#initialize(model) ⇒ TaskWorkerBroker

instance methods



11
12
13
14
15
# File 'lib/pione/agent/task-worker-broker.rb', line 11

def initialize(model)
  super()
  @model = model
  @provider = Global.task_worker_provider.new(model)
end

Instance Method Details

#transit_to_check_task_worker_lifeObject



68
69
70
71
# File 'lib/pione/agent/task-worker-broker.rb', line 68

def transit_to_check_task_worker_life
  @model.delete_dead_task_workers
  sleep Global.task_worker_broker_short_sleep_time
end

#transit_to_check_tuple_spaceObject



56
57
58
# File 'lib/pione/agent/task-worker-broker.rb', line 56

def transit_to_check_tuple_space
  @model.check_tuple_space
end

#transit_to_count_tuple_spaceObject



48
49
50
# File 'lib/pione/agent/task-worker-broker.rb', line 48

def transit_to_count_tuple_space
  @model.tuple_space.size
end

#transit_to_initObject

transitions



44
45
46
# File 'lib/pione/agent/task-worker-broker.rb', line 44

def transit_to_init
  Log::SystemLog.info "Task worker broker starts the activity."
end

#transit_to_provide_task_workerObject



52
53
54
# File 'lib/pione/agent/task-worker-broker.rb', line 52

def transit_to_provide_task_worker
  @provider.provide
end

#transit_to_sleepObject



60
61
62
63
64
65
66
# File 'lib/pione/agent/task-worker-broker.rb', line 60

def transit_to_sleep
  if @model.tuple_space.size == 0 or @model.excess_task_workers == 0
    sleep Global.task_worker_broker_long_sleep_time
  else
    sleep Global.task_worker_broker_short_sleep_time
  end
end

#transit_to_terminateObject

Send bye messages to tuple spaces when the agent is terminated.



74
75
76
77
78
79
80
81
# File 'lib/pione/agent/task-worker-broker.rb', line 74

def transit_to_terminate
  @model.tuple_space_lock.synchronize do
    @model.tuple_spaces.each do |tuple_space|
      Util.ignore_exception {timeout(1) {tuple_space.bye}}
    end
  end
  Log::SystemLog.info "Task worker broker ends the activity."
end