Sha256: c7188e8c9e4a6a764639539c3d356a53b73e8ca6c02fa7966a7fe55c2b7ac3ce

Contents?: true

Size: 707 Bytes

Versions: 22

Compression:

Stored size: 707 Bytes

Contents

# frozen_string_literal: true

module Sentry
  class ThreadedPeriodicWorker
    include LoggingHelper

    def initialize(logger, internal)
      @thread = nil
      @exited = false
      @interval = internal
      @logger = logger
    end

    def ensure_thread
      return false if @exited
      return true if @thread&.alive?

      @thread = Thread.new do
        loop do
          sleep(@interval)
          run
        end
      end

      true
    rescue ThreadError
      log_debug("[#{self.class.name}] thread creation failed")
      @exited = true
      false
    end

    def kill
      log_debug("[#{self.class.name}] thread killed")

      @exited = true
      @thread&.kill
    end
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
sentry-ruby-5.22.3 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.22.3 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.22.2 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.22.2 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.22.1 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.22.1 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.22.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.22.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.21.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.21.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.20.1 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.20.1 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.20.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.20.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.19.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.19.0 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.18.2 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.18.2 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-core-5.18.1 lib/sentry/threaded_periodic_worker.rb
sentry-ruby-5.18.1 lib/sentry/threaded_periodic_worker.rb