Class: Termtter::TaskManager
- Inherits:
-
Object
- Object
- Termtter::TaskManager
- Defined in:
- lib/termtter/task_manager.rb
Instance Method Summary collapse
- #add_task(args = {}, &block) ⇒ Object
- #delete_task(key) ⇒ Object
- #get_task(key) ⇒ Object
-
#initialize(interval = 1) ⇒ TaskManager
constructor
A new instance of TaskManager.
- #invoke_and_wait(&block) ⇒ Object
- #invoke_later ⇒ Object
- #kill ⇒ Object
- #pause ⇒ Object
- #resume ⇒ Object
- #run ⇒ Object
- #step ⇒ Object
Constructor Details
#initialize(interval = 1) ⇒ TaskManager
Returns a new instance of TaskManager.
6 7 8 9 10 11 12 |
# File 'lib/termtter/task_manager.rb', line 6 def initialize(interval = 1) @interval = interval @tasks = {} @work = true @mutex = Mutex.new @pause = false end |
Instance Method Details
#add_task(args = {}, &block) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/termtter/task_manager.rb', line 55 def add_task(args = {}, &block) synchronize do task = Task.new(args, &block) @tasks[task.name || task.object_id] = task end end |
#delete_task(key) ⇒ Object
68 69 70 71 72 |
# File 'lib/termtter/task_manager.rb', line 68 def delete_task(key) synchronize do @tasks.delete(key) end end |
#get_task(key) ⇒ Object
62 63 64 65 66 |
# File 'lib/termtter/task_manager.rb', line 62 def get_task(key) synchronize do @tasks[key] end end |
#invoke_and_wait(&block) ⇒ Object
49 50 51 52 53 |
# File 'lib/termtter/task_manager.rb', line 49 def invoke_and_wait(&block) synchronize do yield end end |
#invoke_later ⇒ Object
43 44 45 46 47 |
# File 'lib/termtter/task_manager.rb', line 43 def invoke_later Thread.new do invoke_and_wait { yield } end end |
#kill ⇒ Object
22 23 24 |
# File 'lib/termtter/task_manager.rb', line 22 def kill @work = false end |
#pause ⇒ Object
14 15 16 |
# File 'lib/termtter/task_manager.rb', line 14 def pause @pause = true end |
#resume ⇒ Object
18 19 20 |
# File 'lib/termtter/task_manager.rb', line 18 def resume @pause = false end |
#run ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/termtter/task_manager.rb', line 26 def run Thread.new do while @work step unless @pause sleep @interval end end end |
#step ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/termtter/task_manager.rb', line 35 def step pull_due_tasks.each do |task| invoke_and_wait do task.execute end end end |