class Hoss::Transport::Connection::ProxyPipe::Write
@api private
Attributes
io[R]
Public Class Methods
finalize(io)
click to toggle source
# File lib/hoss/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/hoss/transport/connection/proxy_pipe.rb, line 43 def initialize(io, compress: true) @io = io @compress = compress @bytes_sent = Concurrent::AtomicFixnum.new(0) @config = Hoss.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/hoss/transport/connection/proxy_pipe.rb, line 82 def bytes_sent @bytes_sent.value end
close(reason = nil)
click to toggle source
# File lib/hoss/transport/connection/proxy_pipe.rb, line 65 def close(reason = nil) debug("Closing writer with reason #{reason}") io.close end
closed?()
click to toggle source
# File lib/hoss/transport/connection/proxy_pipe.rb, line 70 def closed? io.closed? end
enable_compression!()
click to toggle source
# File lib/hoss/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/hoss/transport/connection/proxy_pipe.rb, line 74 def write(str) io.puts(str).tap do @bytes_sent.update do |curr| @compress ? io.tell : curr + str.bytesize end end end