Class: HttpStreamingClient::Decoders::GZip::GZipBufferIO

Inherits:
StringIO
  • Object
show all
Defined in:
lib/http_streaming_client/decoders/gzip.rb

Instance Method Summary collapse

Constructor Details

#initialize(string = "") ⇒ GZipBufferIO

Returns a new instance of GZipBufferIO.



130
131
132
133
134
# File 'lib/http_streaming_client/decoders/gzip.rb', line 130

def initialize(string="")
  logger.debug "GZipBufferIO:initialize"
  @packet_stream = string
  @packet_stream.force_encoding("BINARY")
end

Instance Method Details

#<<(string) ⇒ Object



136
137
138
# File 'lib/http_streaming_client/decoders/gzip.rb', line 136

def <<(string)
  @packet_stream << string
end

#loggerObject



126
127
128
# File 'lib/http_streaming_client/decoders/gzip.rb', line 126

def logger
  HttpStreamingClient.logger
end

#read(length = nil, buffer = nil) ⇒ Object

called by GzipReader



167
168
169
170
171
# File 'lib/http_streaming_client/decoders/gzip.rb', line 167

def read(length=nil, buffer=nil)
  logger.debug "GZipBufferIO:read:length:#{length}"
  return nil if @packet_stream.size == 0
  readpartial(length, buffer)
end

#readpartial(length = nil, buffer = nil) ⇒ Object

called by GzipReader



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/http_streaming_client/decoders/gzip.rb', line 141

def readpartial(length=nil, buffer=nil)
  logger.debug "GZipBufferIO:readpartial:length:#{length}:@packet_stream:#{@packet_stream.nil? ? 'nil' : @packet_stream.size}"
  buffer ||= ""

  raise EOFError "" if @packet_stream.size == 0

  length ||= @packet_stream.size # read all if a fraction is specified
  length = [ length, @packet_stream.size ].min # read length or @packet_stream.size, whichever is smaller

  #logger.debug "GZipBufferIO:readpartial:before:psize:#{@packet_stream.size}:bsize:#{buffer.size}:length:#{length}"

  buffer << @packet_stream[0..(length-1)]

  if length == @packet_stream.size then
    @packet_stream = ""
    #@packet_stream = @packet_stream.slice!(0,length)
  else
    @packet_stream = @packet_stream[length..-1]
    #@packet_stream = @packet_stream.slice!(0,length)
  end

  #logger.debug "GZipBufferIO:readpartial:after:psize:#{@packet_stream.size}:bsize:#{buffer.size}"
  buffer
end

#sizeObject

called by GzipReader



174
175
176
177
# File 'lib/http_streaming_client/decoders/gzip.rb', line 174

def size
  logger.debug "GZipBufferIO:size():#{@packet_stream.size}"
  @packet_stream.size
end