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.



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_laterObject



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

#killObject



22
23
24
# File 'lib/termtter/task_manager.rb', line 22

def kill
  @work = false
end

#pauseObject



14
15
16
# File 'lib/termtter/task_manager.rb', line 14

def pause
  @pause = true
end

#resumeObject



18
19
20
# File 'lib/termtter/task_manager.rb', line 18

def resume
  @pause = false
end

#runObject



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

#stepObject



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