Add delim_encode and delim_read

- Add `StreamCommunicator` and `RawConnectionCommunicator`, read/write
messages with delim codec, with `IMuxedStream` and `IRawConnection`
respectively.
- Use it in `Multiselect` and `MultiselectClient`.
This commit is contained in:
mhchia
2019-08-15 23:31:26 +08:00
committed by Kevin Mai-Husan Chia
parent 8cd23abfe2
commit 86d4ce1da8
11 changed files with 74 additions and 64 deletions

View File

@ -2,6 +2,8 @@ import asyncio
import struct
from typing import Tuple
from libp2p.typing import StreamReader
def encode_uvarint(number: int) -> bytes:
"""Pack `number` into varint bytes"""
@ -31,9 +33,7 @@ def decode_uvarint(buff: bytes, index: int) -> Tuple[int, int]:
return result, index + 1
async def decode_uvarint_from_stream(
reader: asyncio.StreamReader, timeout: float
) -> int:
async def decode_uvarint_from_stream(reader: StreamReader, timeout: float) -> int:
shift = 0
result = 0
while True: