Sha256: 2812957e0ba001aac49e19e657f7552a9257dda78470445eb2d930ef12182ebb

Contents?: true

Size: 1018 Bytes

Versions: 6

Compression:

Stored size: 1018 Bytes

Contents

require 'securerandom'

module Honeybadger
  class Worker
    class Batch
      def initialize(config, name = :data, max = 100, interval = 60, now = now)
        @id = SecureRandom.uuid
        @config = config
        @name = name
        @max = max
        @interval = interval
        @future = now + interval
        @values = Array.new
        @mutex = Mutex.new
      end

      attr_reader :id

      def push(val)
        mutex.synchronize { values.push(val) }
      end

      def empty?
        mutex.synchronize { values.empty? }
      end

      def size
        mutex.synchronize { values.size }
      end

      def flush?
        size >= max || now >= future
      end

      def as_json(*args)
        mutex.synchronize do
          { name => values.compact.map(&:to_h), :environment => config[:env], :hostname => config[:hostname] }
        end
      end

      private

      attr_reader :config, :name, :max, :values, :future, :mutex

      def now
        Time.now.to_i
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
honeybadger-2.0.0.beta.6 lib/honeybadger/worker/batch.rb
honeybadger-2.0.0.beta.5 lib/honeybadger/worker/batch.rb
honeybadger-2.0.0.beta.4 lib/honeybadger/worker/batch.rb
honeybadger-2.0.0.beta.3 lib/honeybadger/worker/batch.rb
honeybadger-2.0.0.beta.2 lib/honeybadger/worker/batch.rb
honeybadger-2.0.0.beta.1 lib/honeybadger/worker/batch.rb