Sha256: 30cd9f4fb7a000cab4ae4ef61ca5dd96aac615abc0da05d1f3209fc3afa68f10

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

#!/usr/bin/env ruby

$LOAD_PATH.push File.expand_path("../lib", __dir__)
require "celluloid"

class TimerExample
  include Celluloid
  attr_reader :fired, :timer

  def initialize
    @fired = false
    @timer = after(3) { puts "Timer fired!"; @fired = true }
  end
end

#
# Basic timer example
#

actor = TimerExample.new

# The timer hasn't fired yet, so this should be false
puts "Timer hasn't fired yet, so this should be false: #{actor.fired}"

# Even if we wait a second, it still hasn't fired
sleep 1
puts "Timer still shouldn't have fired yet: #{actor.fired}"

# Wait until after the timer should've fired
sleep 2.1
puts "Timer should've fired now: #{actor.fired}"

#
# Cancelling timers
#

actor = TimerExample.new

# The timer hasn't fired yet, so this should be false
puts "Timer hasn't fired yet, so this should be false: #{actor.fired}"

# Cancel the timer, which should prevent it from firing
actor.timer.cancel

# Wait until after the timer should've fired
sleep 3.1
puts "Timer shouldn't have fired because we cancelled it: #{actor.fired}"

class RepeatingTimerExample
  include Celluloid

  def initialize
    @sheep = 0
  end

  def count_sheep
    print "<#{self.class.name}> Counting sheep to go to sleep: "
    @timer = every(0.1) do
      @sheep += 1
      print @sheep, " "
    end
  end

  def stop_counting
    @timer.cancel
  end
end

sleepy_actor = RepeatingTimerExample.new
sleepy_actor.count_sheep
sleep 1
sleepy_actor.stop_counting

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
celluloid-0.18.0 examples/timers.rb