Sha256: f4fc781b4548955cc57a198c6a5eb2fcd65ca4756869f693261f20e84c308f89

Contents?: true

Size: 751 Bytes

Versions: 5

Compression:

Stored size: 751 Bytes

Contents

# typed: false
module Datadog
  module Workers
    # Adds queue behavior to workers, with a buffer
    # to which items can be queued then dequeued.
    module Queue
      def self.included(base)
        base.prepend(PrependedMethods)
      end

      # Methods that must be prepended
      module PrependedMethods
        def perform(*args)
          super(*dequeue) if work_pending?
        end
      end

      def buffer
        @buffer ||= []
      end

      def enqueue(*args)
        buffer.push(args)
      end

      def dequeue
        buffer.shift
      end

      # Are there more items to be processed next?
      def work_pending?
        !buffer.empty?
      end

      protected

      attr_writer \
        :buffer
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ddtrace-0.54.2 lib/ddtrace/workers/queue.rb
ddtrace-0.54.1 lib/ddtrace/workers/queue.rb
ddtrace-0.54.0 lib/ddtrace/workers/queue.rb
ddtrace-0.53.0 lib/ddtrace/workers/queue.rb
ddtrace-0.52.0 lib/ddtrace/workers/queue.rb