read_binary()
click to toggle source
def read_binary
size = read_i32
trans.read_all(size)
end
read_bool()
click to toggle source
def read_bool
byte = read_byte
byte != 0
end
read_byte()
click to toggle source
def read_byte
val = trans.read_byte
if (val > 0x7f)
val = 0 - ((val - 1) ^ 0xff)
end
val
end
read_double()
click to toggle source
def read_double
trans.read_into_buffer(@rbuf, 8)
val = @rbuf.unpack('G').first
val
end
read_field_begin()
click to toggle source
def read_field_begin
type = read_byte
if (type == Types::STOP)
[nil, type, 0]
else
id = read_i16
[nil, type, id]
end
end
read_i16()
click to toggle source
def read_i16
trans.read_into_buffer(@rbuf, 2)
val, = @rbuf.unpack('n')
if (val > 0x7fff)
val = 0 - ((val - 1) ^ 0xffff)
end
val
end
read_i32()
click to toggle source
def read_i32
trans.read_into_buffer(@rbuf, 4)
val, = @rbuf.unpack('N')
if (val > 0x7fffffff)
val = 0 - ((val - 1) ^ 0xffffffff)
end
val
end
read_i64()
click to toggle source
def read_i64
trans.read_into_buffer(@rbuf, 8)
hi, lo = @rbuf.unpack('N2')
if (hi > 0x7fffffff)
hi ^= 0xffffffff
lo ^= 0xffffffff
0 - (hi << 32) - lo - 1
else
(hi << 32) + lo
end
end
read_list_begin()
click to toggle source
def read_list_begin
etype = read_byte
size = read_i32
[etype, size]
end
read_map_begin()
click to toggle source
def read_map_begin
ktype = read_byte
vtype = read_byte
size = read_i32
[ktype, vtype, size]
end
read_message_begin()
click to toggle source
def read_message_begin
version = read_i32
if version < 0
if (version & VERSION_MASK != VERSION_1)
raise ProtocolException.new(ProtocolException::BAD_VERSION, 'Missing version identifier')
end
type = version & TYPE_MASK
name = read_string
seqid = read_i32
[name, type, seqid]
else
if strict_read
raise ProtocolException.new(ProtocolException::BAD_VERSION, 'No version identifier, old protocol client?')
end
name = trans.read_all(version)
type = read_byte
seqid = read_i32
[name, type, seqid]
end
end
read_set_begin()
click to toggle source
def read_set_begin
etype = read_byte
size = read_i32
[etype, size]
end
read_string()
click to toggle source
def read_string
buffer = read_binary
Bytes.convert_to_string(buffer)
end
read_struct_begin()
click to toggle source
def read_struct_begin; nil; end
write_binary(buf)
click to toggle source
def write_binary(buf)
write_i32(buf.bytesize)
trans.write(buf)
end
write_bool(bool)
click to toggle source
def write_bool(bool)
write_byte(bool ? 1 : 0)
end
write_byte(byte)
click to toggle source
def write_byte(byte)
raise RangeError if byte < -2**31 || byte >= 2**32
trans.write([byte].pack('c'))
end
write_double(dub)
click to toggle source
def write_double(dub)
trans.write([dub].pack('G'))
end
write_field_begin(name, type, id)
click to toggle source
def write_field_begin(name, type, id)
write_byte(type)
write_i16(id)
end
write_field_stop()
click to toggle source
def write_field_stop
write_byte(Thrift::Types::STOP)
end
write_i16(i16)
click to toggle source
def write_i16(i16)
trans.write([i16].pack('n'))
end
write_i32(i32)
click to toggle source
def write_i32(i32)
raise RangeError if i32 < -2**31 || i32 >= 2**31
trans.write([i32].pack('N'))
end
write_i64(i64)
click to toggle source
def write_i64(i64)
raise RangeError if i64 < -2**63 || i64 >= 2**64
hi = i64 >> 32
lo = i64 & 0xffffffff
trans.write([hi, lo].pack('N2'))
end
write_list_begin(etype, size)
click to toggle source
def write_list_begin(etype, size)
write_byte(etype)
write_i32(size)
end
write_map_begin(ktype, vtype, size)
click to toggle source
def write_map_begin(ktype, vtype, size)
write_byte(ktype)
write_byte(vtype)
write_i32(size)
end
write_message_begin(name, type, seqid)
click to toggle source
def write_message_begin(name, type, seqid)
if strict_write
write_i16(VERSION_1 >> 16)
write_i16(type)
write_string(name)
write_i32(seqid)
else
write_string(name)
write_byte(type)
write_i32(seqid)
end
end
write_set_begin(etype, size)
click to toggle source
def write_set_begin(etype, size)
write_byte(etype)
write_i32(size)
end
write_string(str)
click to toggle source
def write_string(str)
buf = Bytes.convert_to_utf8_byte_buffer(str)
write_binary(buf)
end
write_struct_begin(name)
click to toggle source
def write_struct_begin(name); nil; end