Class: Slappy::Schedule

Inherits:
Object
  • Object
show all
Includes:
Debuggable
Defined in:
lib/slappy/schedule.rb

Defined Under Namespace

Classes: InvalidFormatError, OverScheduleError

Constant Summary collapse

DEFAULT_MAX_THREAD =
1000

Instance Method Summary collapse

Methods included from Debuggable

included

Instance Method Details

#listObject



36
37
38
# File 'lib/slappy/schedule.rb', line 36

def list
  @schedule_list ||= {}
end

#register(schedule, options = {}, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/slappy/schedule.rb', line 12

def register(schedule, options = {}, &block)
  id = options[:id] || generate_id
  list[id] = Thread.new do
    time = Chrono::Iterator.new(schedule).next
    Debug.log "Schedule #{id} registerd to #{schedule}, first call to #{time}"
    Chrono::Trigger.new(schedule) do
      block.call
      time = Chrono::Iterator.new(schedule).next
      Debug.log "Schedule #{id} called by #{schedule}, next call to #{time}"
    end.run
  end
  id
end

#remove(id) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/slappy/schedule.rb', line 26

def remove(id)
  registered = @schedule_list.include? id
  if registered
    @schedule_list[id].kill
    @schedule_list.delete id
    Debug.log "Schedule #{id} deleted"
  end
  registered
end