class GrpcKit::Transport::Packable::Unpacker
Constants
- PREFIX_SIZE
Compressed-Flag (1 byte) + Message-Length (4 Bytes)
Public Class Methods
new()
click to toggle source
# File lib/grpc_kit/transport/packable.rb, line 30 def initialize @data = +''.b end
Public Instance Methods
data_exist?()
click to toggle source
@return [Boolean]
# File lib/grpc_kit/transport/packable.rb, line 35 def data_exist? !@data.empty? end
feed(data)
click to toggle source
@param data [String] @return [void]
# File lib/grpc_kit/transport/packable.rb, line 41 def feed(data) @data << data end
read()
click to toggle source
@return [nil, Array<Boolean, Integer, String>]
# File lib/grpc_kit/transport/packable.rb, line 46 def read return nil if @data.bytesize < PREFIX_SIZE prefix = @data.byteslice(0, PREFIX_SIZE) compressed, length = prefix.unpack('CN') return nil if (@data.bytesize-PREFIX_SIZE) < length d = @data.freeze data = d.byteslice(PREFIX_SIZE, length) @data = d.byteslice(PREFIX_SIZE + length, d.bytesize) [compressed == 1, length, data] end