Class: Termtter::TaskManager

Inherits:
Object
  • Object
show all
Defined in:
lib/termtter/task_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(interval = 1) ⇒ TaskManager

Returns a new instance of TaskManager.



4
5
6
7
8
9
10
# File 'lib/termtter/task_manager.rb', line 4

def initialize(interval = 1)
  @interval = interval
  @tasks = {}
  @work = true
  @mutex = Mutex.new
  @pause = false
end

Instance Method Details

#add_task(args = {}, &block) ⇒ Object



53
54
55
56
57
58
# File 'lib/termtter/task_manager.rb', line 53

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



66
67
68
69
70
# File 'lib/termtter/task_manager.rb', line 66

def delete_task(key)
  synchronize do
    @tasks.delete(key)
  end
end

#get_task(key) ⇒ Object



60
61
62
63
64
# File 'lib/termtter/task_manager.rb', line 60

def get_task(key)
  synchronize do
    @tasks[key]
  end
end

#invoke_and_wait(&block) ⇒ Object



47
48
49
50
51
# File 'lib/termtter/task_manager.rb', line 47

def invoke_and_wait(&block)
  synchronize do
    yield
  end
end

#invoke_laterObject



41
42
43
44
45
# File 'lib/termtter/task_manager.rb', line 41

def invoke_later
  Thread.new do
    invoke_and_wait { yield }
  end
end

#killObject



20
21
22
# File 'lib/termtter/task_manager.rb', line 20

def kill
  @work = false
end

#pauseObject



12
13
14
# File 'lib/termtter/task_manager.rb', line 12

def pause
  @pause = true
end

#resumeObject



16
17
18
# File 'lib/termtter/task_manager.rb', line 16

def resume
  @pause = false
end

#runObject



24
25
26
27
28
29
30
31
# File 'lib/termtter/task_manager.rb', line 24

def run
  Thread.new do
    while @work
      step unless @pause
      sleep @interval
    end
  end
end

#stepObject



33
34
35
36
37
38
39
# File 'lib/termtter/task_manager.rb', line 33

def step
  pull_due_tasks.each do |task|
    invoke_and_wait do
      task.execute
    end
  end
end