root/trunk/server/lib/trigger.rb

Revision 326, 0.8 kB (checked in by gethema..@gmail.com, 6 months ago)

check in new backgroundrb code

Line 
1 module BackgrounDRb
2   class Trigger
3
4     attr_accessor :start_time, :end_time, :repeat_interval
5
6     def initialize(opts={})
7       @start_time = Time.parse(opts[:start])
8       @end_time = Time.parse(opts[:end])
9       @repeat_interval = opts[:repeat_interval].to_i
10     end
11
12     def fire_after_time(time)
13       @start_time = time  if not @start_time
14
15       # Support UNIX at-style scheduling, by just specifying a start
16       # time.
17       if @end_time.nil? and @repeat_interval.nil?
18         @end_time = start_time + 1
19         @repeat_interval = 1
20       end
21
22       case
23       when @end_time && time > @end_time
24         nil
25       when time < @start_time
26         @start_time
27       when @repeat_interval != nil && @repeat_interval > 0
28         time + @repeat_interval - ((time - @start_time) % @repeat_interval)
29       end
30     end
31
32   end
33
34 end
Note: See TracBrowser for help on using the browser.