Sha256: 88c19a7a40fafef0fdc03edbc902b685427b4a7b6119bf8a25d83a24e4177038

Contents?: true

Size: 855 Bytes

Versions: 2

Compression:

Stored size: 855 Bytes

Contents

require_relative 'base'

module Legion
  module Extensions
    module Actors
      class Once
        include Legion::Extensions::Actors::Base

        def initialize
          return unless enabled?

          if respond_to? :functions
            functions.each do
              function
              @task = Concurrent::ScheduledTask.execute(delay) do
                use_runner? ? runner : manual
              end
            end
          else
            @task = Concurrent::ScheduledTask.execute(delay) do
              use_runner? ? runner : manual
            end
          end
        rescue StandardError => e
          Legion::Logging.error e
        end

        def delay
          1.0
        end

        def cancel
          return unless enabled?

          @task.cancel unless @task.cancelled?
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
legionio-1.2.1 lib/legion/extensions/actors/once.rb
legionio-1.2.0 lib/legion/extensions/actors/once.rb