Introduces IO abstractions apart from asyncio or those attached to IRawConnection

Also adds `msgio` utilities to mirror the Go implementation
This commit is contained in:
Alex Stokes
2019-09-03 21:42:45 -07:00
parent cd3e093001
commit 8e8318aa5c
7 changed files with 154 additions and 32 deletions

34
libp2p/io/abc.py Normal file
View File

@ -0,0 +1,34 @@
from abc import ABC, abstractmethod
class Closer(ABC):
async def close(self) -> None:
...
class Reader(ABC):
@abstractmethod
async def read(self, n: int = -1) -> bytes:
...
class Writer(ABC):
@abstractmethod
async def write(self, data: bytes) -> int:
...
class WriteCloser(Writer, Closer):
pass
class ReadCloser(Reader, Closer):
pass
class ReadWriter(Reader, Writer):
pass
class ReadWriteCloser(Reader, Writer, Closer):
pass