Sha256: 497daca9b4fd50ad5aa1449f89aa621da2762ae1c238ca67b4be1bcf90ee45be

Contents?: true

Size: 898 Bytes

Versions: 5

Compression:

Stored size: 898 Bytes

Contents

module UV
  class Timer
    include Assertions, Handle

    def start(timeout, repeat, &block)
      assert_block(block)
      assert_arity(1, block)
      assert_type(Integer, timeout, "timeout must be an Integer")
      assert_type(Integer, repeat, "repeat must be an Integer")

      @timer_block = block

      check_result! UV.timer_start(handle, callback(:on_timer), timeout, repeat)

      self
    end

    def stop
      check_result! UV.timer_stop(handle)

      self
    end

    def again
      check_result! UV.timer_again(handle)

      self
    end

    def repeat=(repeat)
      assert_type(Integer, repeat, "repeat must be an Integer")

      check_result! UV.timer_set_repeat(handle, repeat)

      self
    end

    def repeat
      UV.timer_get_repeat(handle)
    end

    private

    def on_timer(handle, status)
      @timer_block.call(check_result(status))
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
uvrb-0.2.0 lib/uv/timer.rb
uvrb-0.1.4 lib/uv/timer.rb
uvrb-0.1.3 lib/uv/timer.rb
uvrb-0.1.2 lib/uv/timer.rb
uvrb-0.1.1 lib/uv/timer.rb