class Pf2::Reporter::Protobuf
A minimal Protobuf encoder.
Constants
- WIRETYPE_LEN
- WIRETYPE_VARINT
-
Wire types Not implemented: I64, SGROUP, EGROUP, I32
Public Class Methods
Public Instance Methods
Source
# File lib/pf2/reporter/pprof.rb, line 70 def bool(field, val) wire_varint(field, val ? 1 : 0) end
Source
# File lib/pf2/reporter/pprof.rb, line 56 def int32(field, val) twos_comp = val & 0xFFFF_FFFF wire_varint(field, twos_comp) end
Scalar value types Not implemented:
double, float, uint32, sint32, sint64, fixed32, fixed64, sfixed32, sfixed64, bytes
Source
# File lib/pf2/reporter/pprof.rb, line 61 def int64(field, val) twos_comp = val & 0xFFFF_FFFF_FFFF_FFFF wire_varint(field, twos_comp) end
Source
# File lib/pf2/reporter/pprof.rb, line 24 def put_byte(b) @data << (b & 0xFF).chr(Encoding::BINARY) end
Source
# File lib/pf2/reporter/pprof.rb, line 28 def put_varint(val) # Emit 7-bit chunks # msb=1 for continuation while val > 0x7F put_byte((val & 0x7F) | 0x80) val >>= 7 end put_byte(val & 0xFF) end
Source
# File lib/pf2/reporter/pprof.rb, line 74 def string(field, val) wire_len(field, val) end
Source
# File lib/pf2/reporter/pprof.rb, line 80 def submessage(field, submsg) wire_len(field, submsg) end
Source
# File lib/pf2/reporter/pprof.rb, line 66 def uint64(field, val) wire_varint(field, val) end
Source
# File lib/pf2/reporter/pprof.rb, line 43 def wire_len(field, bytes) put_varint((field << 3) | WIRETYPE_LEN) # tag put_varint(bytes.bytesize) @data << bytes.b end
Source
# File lib/pf2/reporter/pprof.rb, line 38 def wire_varint(field, val) put_varint((field << 3) | WIRETYPE_VARINT) # tag put_varint(val) end