module EM::Nodes::Server::TaskFeature

Public Class Methods

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

Public Instance Methods

on_reschedule_tasks(values) click to toggle source
# File lib/em-nodes/server/task.rb, line 26
def on_reschedule_tasks(values)
  # redefine me
end
on_task_result(res) click to toggle source
# File lib/em-nodes/server/task.rb, line 22
def on_task_result(res)
  # redefine me
end
send_task(data) click to toggle source
# File lib/em-nodes/server/task.rb, line 16
def send_task(data)
  task_id = next_task_id
  add_task(task_id, data)
  send_task_internal(task_id, data)
end
task_count() click to toggle source
# File lib/em-nodes/server/task.rb, line 12
def task_count
  @mutex.synchronize { @tasks.size }
end
unbind() click to toggle source
Calls superclass method
# File lib/em-nodes/server/task.rb, line 30
def unbind
  super
  on_reschedule_tasks(@tasks.values)
  @mutex.synchronize { @tasks.clear }
end

Private Instance Methods

add_task(task_id, data) click to toggle source
# File lib/em-nodes/server/task.rb, line 43
def add_task(task_id, data)
  @mutex.synchronize { @tasks[task_id] = data }
end
del_task(task_id) click to toggle source
# File lib/em-nodes/server/task.rb, line 47
def del_task(task_id)
  @mutex.synchronize { @tasks.delete(task_id) }
end
next_task_id() click to toggle source
# File lib/em-nodes/server/task.rb, line 51
def next_task_id
  @mutex.synchronize { @task_inc += 1 }
end
on_task_result_internal(task_id, res) click to toggle source
# File lib/em-nodes/server/task.rb, line 38
def on_task_result_internal(task_id, res)
  del_task(task_id)
  on_task_result(res)
end