class ElasticAPM::Transport::Connection::ProxyPipe::Write

@api private

Attributes

io[R]

Public Class Methods

finalize(io) click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 54
def self.finalize(io)
  proc { io.close }
end
new(io, compress: true) click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 43
def initialize(io, compress: true)
  @io = io
  @compress = compress
  @bytes_sent = Concurrent::AtomicFixnum.new(0)
  @config = ElasticAPM.agent&.config # this is silly, fix Logging

  return unless compress
  enable_compression!
  ObjectSpace.define_finalizer(self, self.class.finalize(@io))
end

Public Instance Methods

bytes_sent() click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 81
def bytes_sent
  @bytes_sent.value
end
close() click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 65
def close
  io.close
end
closed?() click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 69
def closed?
  io.closed?
end
enable_compression!() click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 60
def enable_compression!
  io.binmode
  @io = Zlib::GzipWriter.new(io)
end
write(str) click to toggle source
# File lib/elastic_apm/transport/connection/proxy_pipe.rb, line 73
def write(str)
  io.puts(str).tap do
    @bytes_sent.update do |curr|
      @compress ? io.tell : curr + str.bytesize
    end
  end
end