Sha256: 88864b930ab10395af6e44828c826fc3b07b1e94ffe2d82ec8e47540b99f8a2d

Contents?: true

Size: 1014 Bytes

Versions: 1

Compression:

Stored size: 1014 Bytes

Contents

module ProconBypassMan
  module Background
    class Reporter
      MAX_QUEUE_SIZE = 100

      def self.start!
        new.start!
      end

      def start!
        return if defined?(@@thread)
        @@latest_request_result = { stats: true, timestamp: Time.now }
        @@queue = Queue.new
        @@thread = Thread.new do
          while(item = @@queue.pop)
            begin
              result = item[:reporter_class].report(body: item[:data])
              @@latest_request_result = { stats: result.stats, timestamp: Time.now }
              sleep(1)
            rescue => e
              ProconBypassMan.logger.error(e)
            end
          end
        end
      end

      def self.queue
        raise "Do not start this thread yet" unless defined?(@@queue)
        @@queue
      end

      def self.push(hash)
        if queue.size > MAX_QUEUE_SIZE
          ProconBypassMan.logger.error('Over queue size cap!!')
          return
        end

        queue.push(hash)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.11 lib/procon_bypass_man/background/report_thread.rb