Sha256: 6a77f8b514ff70100c1892472f043805511e6e4917498c81a5664c565c088366

Contents?: true

Size: 743 Bytes

Versions: 3

Compression:

Stored size: 743 Bytes

Contents

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.send(: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

3 entries across 3 versions & 1 rubygems

Version Path
ddtrace-0.49.0 lib/ddtrace/workers/queue.rb
ddtrace-0.48.0 lib/ddtrace/workers/queue.rb
ddtrace-0.47.0 lib/ddtrace/workers/queue.rb