Sha256: 7d5e5744313d45115fdd7a0402fdab927339eccea8b8bdcf3d0438e0c0fc12c1

Contents?: true

Size: 920 Bytes

Versions: 5

Compression:

Stored size: 920 Bytes

Contents

module Progstr
  module Client
    extend self

    def send(message)
      raise NoApiKeyError if Progstr.api_key.nil?

      pool.schedule do
        begin
          execute(message)
        rescue Timeout::Error, 
                Errno::EINVAL,
                Errno::ECONNRESET,
                Errno::ECONNREFUSED,
                EOFError,
                SocketError,
                Net::HTTPBadResponse,
                Net::HTTPHeaderSyntaxError,
                Net::ProtocolError => error
          #puts "Progstr::Client.send: #{error.message}"
          #puts error.backtrace.join("\r\n")
        end
      end
    end

    private

    def pool
      if (@pool.nil?)
        @pool = ThreadPool.new(2)
        at_exit { @pool.shutdown }
      end
      @pool
    end

    def execute(message)
      json = MultiJson.encode(message.to_hash)
      Progstr::HttpClient::post("v1/log", json)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
progstr-ruby-1.0.6 lib/progstr/client.rb
progstr-ruby-1.0.5 lib/progstr/client.rb
progstr-ruby-1.0.4 lib/progstr/client.rb
progstr-ruby-1.0.3 lib/progstr/client.rb
progstr-ruby-1.0.2 lib/progstr/client.rb