def dump_uvarint64(value: int) -> bytearray: # use known uint64 field in an all-optional message msg = EosAsset(symbol=value) length = protobuf.encoded_length(msg) buffer = bytearray(length) protobuf.encode(buffer, msg) assert buffer[0] == (2 << 3) | 0 # field number 2, wire type 0 return buffer[1:]
def dump_uvarint32(value: int) -> bytearray: # use known uint32 field in an all-optional message msg = WebAuthnCredential(index=value) length = protobuf.encoded_length(msg) buffer = bytearray(length) protobuf.encode(buffer, msg) assert buffer[0] == (1 << 3) | 0 # field number 1, wire type 0 return buffer[1:]
async def write(self, msg: protobuf.MessageType) -> None: if __debug__: log.debug( __name__, "%s:%x write: %s", self.iface.iface_num(), self.sid, msg.MESSAGE_NAME, ) # cannot write message without wire type assert msg.MESSAGE_WIRE_TYPE is not None msg_size = protobuf.encoded_length(msg) if msg_size <= len(self.buffer): # reuse preallocated buffer = self.buffer else: # message is too big, we need to allocate a new buffer buffer = bytearray(msg_size) msg_size = protobuf.encode(buffer, msg) await codec_v1.write_message( self.iface, msg.MESSAGE_WIRE_TYPE, memoryview(buffer)[:msg_size], )
def dump_message(msg: protobuf.MessageType) -> bytearray: length = protobuf.encoded_length(msg) buffer = bytearray(length) protobuf.encode(buffer, msg) return buffer