async def send_message(self, flag: HeaderTags, data: Optional[bytes], stream_id: StreamID) -> int: """ sends a message over the connection :param header: header to use :param data: data to send in the message :param stream_id: stream the message is in """ # << by 3, then or with flag header = encode_uvarint((stream_id.channel_id << 3) | flag.value) if data is None: data = b"" _bytes = header + encode_varint_prefixed(data) return await self.write_to_stream(_bytes)
def _serialize_bytes(payload: bytes) -> bytes: len_payload_varint = encode_uvarint(len(payload)) return len_payload_varint + payload
async def _write_success_response_chunk(stream: INetStream, response_payload: bytes) -> None: await stream.write(SUCCESS_CODE) await stream.write(encode_uvarint(len(response_payload))) await _write_with_snappy(response_payload, stream)
async def _write_request(request_payload: bytes, stream: INetStream) -> None: request_len = len(request_payload) await stream.write(encode_uvarint(request_len)) await _write_with_snappy(request_payload, stream)