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.



153
154
155
156
157
# File 'lib/http_streaming_client/decoders/gzip.rb', line 153

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

Instance Method Details

#<<(string) ⇒ Object



159
160
161
# File 'lib/http_streaming_client/decoders/gzip.rb', line 159

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

#loggerObject



149
150
151
# File 'lib/http_streaming_client/decoders/gzip.rb', line 149

def logger
  HttpStreamingClient.logger
end

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

called by GzipReader



190
191
192
193
194
# File 'lib/http_streaming_client/decoders/gzip.rb', line 190

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



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/http_streaming_client/decoders/gzip.rb', line 164

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



197
198
199
200
# File 'lib/http_streaming_client/decoders/gzip.rb', line 197

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