Sha256: b11a1e185bd6883548a4b8aef9a206b7fec089940b96e98761332cbb1b595680

Contents?: true

Size: 741 Bytes

Versions: 1

Compression:

Stored size: 741 Bytes

Contents

# frozen_string_literal: true

module Evervault
  module Threading
    class RepeatedTimer
      def initialize(interval, func)
        @thread = nil
        @interval = interval
        @func = func
        start
      end

      def start
        return if running?

        @thread = Thread.new do
          loop do
            sleep @interval
            begin
              @func.call
            rescue StandardError
              # Silently ignore exceptions
            end
          end
        end
      end

      def running?
        !@thread.nil?
      end

      def stop
        @thread.exit
        @thread = nil
      end

      def update_interval(new_interval)
        @interval = new_interval
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
evervault-3.0.1 lib/evervault/threading/repeated_timer.rb