Sha256: 34fe9f49afbad8c43f3a4e68f62a62f8518dba91d331370869a46643330e1129

Contents?: true

Size: 700 Bytes

Versions: 8

Compression:

Stored size: 700 Bytes

Contents

module Denko
  module Behaviors
    module Poller
      include Reader
      include Threaded
      
      def poll_using(method, interval, *args, &block)
        unless [Integer, Float].include? interval.class
          raise ArgumentError, "wrong interval given to #poll : #{interval.inspect}"
        end

        stop
        add_callback(:poll, &block) if block_given?

        threaded_loop do
          method.call(*args)
          sleep interval
        end
      end

      def poll(interval, *args, &block)
        poll_using(self.method(:_read), interval, *args, &block)
      end

      def stop
        super if defined?(super)
        remove_callbacks :poll
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
denko-0.14.0 lib/denko/behaviors/poller.rb
denko-0.13.6 lib/denko/behaviors/poller.rb
denko-0.13.5 lib/denko/behaviors/poller.rb
denko-0.13.4 lib/denko/behaviors/poller.rb
denko-0.13.3 lib/denko/behaviors/poller.rb
denko-0.13.2 lib/denko/behaviors/poller.rb
denko-0.13.1 lib/denko/behaviors/poller.rb
denko-0.13.0 lib/denko/behaviors/poller.rb