Class: Termtter::TaskManager

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

Constant Summary collapse

INTERVAL =
1

Instance Method Summary collapse

Constructor Details

#initializeTaskManager

Returns a new instance of TaskManager.



8
9
10
11
12
13
# File 'lib/termtter/task_manager.rb', line 8

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

Instance Method Details

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



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

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



71
72
73
74
75
# File 'lib/termtter/task_manager.rb', line 71

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

#get_task(key) ⇒ Object



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

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

#invoke_and_wait(&block) ⇒ Object



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

def invoke_and_wait(&block)
  synchronize do
    yield
  end
end

#invoke_laterObject



44
45
46
47
48
49
50
# File 'lib/termtter/task_manager.rb', line 44

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

#killObject



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

def kill
  @work = false
end

#pauseObject



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

def pause
  @pause = true
end

#resumeObject



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

def resume
  @pause = false
end

#runObject



27
28
29
30
31
32
33
34
# File 'lib/termtter/task_manager.rb', line 27

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

#stepObject



36
37
38
39
40
41
42
# File 'lib/termtter/task_manager.rb', line 36

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