Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
def _serialize_bytes(payload: bytes) -> bytes:
    len_payload_varint = encode_uvarint(len(payload))
    return len_payload_varint + payload
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)