summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb b/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb
new file mode 100644
index 0000000..41cd959
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/eventmachine-1.2.7/lib/em/timers.rb
@@ -0,0 +1,61 @@
+module EventMachine
+ # Creates a one-time timer
+ #
+ # timer = EventMachine::Timer.new(5) do
+ # # this will never fire because we cancel it
+ # end
+ # timer.cancel
+ #
+ class Timer
+ # Create a new timer that fires after a given number of seconds
+ def initialize interval, callback=nil, &block
+ @signature = EventMachine::add_timer(interval, callback || block)
+ end
+
+ # Cancel the timer
+ def cancel
+ EventMachine.send :cancel_timer, @signature
+ end
+ end
+
+ # Creates a periodic timer
+ #
+ # @example
+ # n = 0
+ # timer = EventMachine::PeriodicTimer.new(5) do
+ # puts "the time is #{Time.now}"
+ # timer.cancel if (n+=1) > 5
+ # end
+ #
+ class PeriodicTimer
+ # Create a new periodic timer that executes every interval seconds
+ def initialize interval, callback=nil, &block
+ @interval = interval
+ @code = callback || block
+ @cancelled = false
+ @work = method(:fire)
+ schedule
+ end
+
+ # Cancel the periodic timer
+ def cancel
+ @cancelled = true
+ end
+
+ # Fire the timer every interval seconds
+ attr_accessor :interval
+
+ # @private
+ def schedule
+ EventMachine::add_timer @interval, @work
+ end
+
+ # @private
+ def fire
+ unless @cancelled
+ @code.call
+ schedule
+ end
+ end
+ end
+end