module EM::Nodes::Client::TaskFeature

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/em-nodes/client/task.rb, line 3
def initialize(*args)
  super(*args)
  @mutex = Mutex.new
  @tasks_hash = {}
end

Public Instance Methods

on_task(task_id, data) click to toggle source
# File lib/em-nodes/client/task.rb, line 9
def on_task(task_id, data)
  # redefine me
  # after task done, should call send_task_result(task_id, result)
end
send_task_result(task_id, result) click to toggle source
# File lib/em-nodes/client/task.rb, line 18
def send_task_result(task_id, result)
  send_task_result_internal(task_id, result)
  @mutex.synchronize { @tasks_hash.delete(task_id) }
end
tasks() click to toggle source
# File lib/em-nodes/client/task.rb, line 14
def tasks
  @tasks_hash.values
end

Private Instance Methods

on_task_internal(task_id, data) click to toggle source
# File lib/em-nodes/client/task.rb, line 25
def on_task_internal(task_id, data)
  obj = on_task(task_id, data)
  @mutex.synchronize { @tasks_hash[task_id] = obj }
end