Sha256: 7f945365871c569ba2ddda82b2a289f2bc26c93efcfa0c064b03716baca8cb21
Contents?: true
Size: 1.2 KB
Versions: 5
Compression:
Stored size: 1.2 KB
Contents
require 'securerandom' module Slappy class Schedule include Slappy::Debuggable class OverScheduleError < StandardError; end class InvalidFormatError < StandardError; end DEFAULT_MAX_THREAD = 1000 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 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 def list @schedule_list ||= {} end private def generate_id digit = Math.log10(DEFAULT_MAX_THREAD).to_i + 1 id = format("%0#{digit}d", SecureRandom.random_number(DEFAULT_MAX_THREAD)) id = generate_id if list.include? id id end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
slappy-0.6.3 | lib/slappy/schedule.rb |
slappy-0.6.2 | lib/slappy/schedule.rb |
slappy-0.6.1 | lib/slappy/schedule.rb |
slappy-0.6.0 | lib/slappy/schedule.rb |
slappy-0.5.2 | lib/slappy/schedule.rb |