Sha256: 752bde1d80aea05d9f7b917657b55aec46bfd07ea047629a147844ea08db2f82

Contents?: true

Size: 692 Bytes

Versions: 18

Compression:

Stored size: 692 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

      def work_pending?
        !buffer.empty?
      end

      protected

      attr_writer \
        :buffer
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
ddtrace-0.46.0 lib/ddtrace/workers/queue.rb
ddtrace-0.45.0 lib/ddtrace/workers/queue.rb
ddtrace-0.44.0 lib/ddtrace/workers/queue.rb
ddtrace-0.43.0 lib/ddtrace/workers/queue.rb
ddtrace-0.42.0 lib/ddtrace/workers/queue.rb
ddtrace-0.41.0 lib/ddtrace/workers/queue.rb
ls-trace-0.2.0 lib/ddtrace/workers/queue.rb
ddtrace-0.40.0 lib/ddtrace/workers/queue.rb
ddtrace-0.39.0 lib/ddtrace/workers/queue.rb
ddtrace-0.38.0 lib/ddtrace/workers/queue.rb
ddtrace-0.37.0 lib/ddtrace/workers/queue.rb
ddtrace-0.36.0 lib/ddtrace/workers/queue.rb
ddtrace-0.35.2 lib/ddtrace/workers/queue.rb
ddtrace-0.35.1 lib/ddtrace/workers/queue.rb
ddtrace-0.35.0 lib/ddtrace/workers/queue.rb
ddtrace-0.34.2 lib/ddtrace/workers/queue.rb
ddtrace-0.34.1 lib/ddtrace/workers/queue.rb
ddtrace-0.34.0 lib/ddtrace/workers/queue.rb