2019-08-02 17:53:51 +08:00
|
|
|
import asyncio
|
2019-08-01 19:12:11 +08:00
|
|
|
from abc import ABC, abstractmethod
|
2018-11-13 02:02:49 +08:00
|
|
|
|
2018-11-11 22:56:44 +08:00
|
|
|
|
|
|
|
class IRawConnection(ABC):
|
|
|
|
"""
|
|
|
|
A Raw Connection provides a Reader and a Writer
|
|
|
|
"""
|
2019-08-01 19:12:11 +08:00
|
|
|
|
2019-08-02 17:53:51 +08:00
|
|
|
initiator: bool
|
|
|
|
|
|
|
|
# TODO: reader and writer shouldn't be exposed.
|
|
|
|
# Need better API for the consumers
|
|
|
|
reader: asyncio.StreamReader
|
|
|
|
writer: asyncio.StreamWriter
|
|
|
|
|
2019-08-01 19:12:11 +08:00
|
|
|
@abstractmethod
|
|
|
|
async def write(self, data: bytes) -> None:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
async def read(self) -> bytes:
|
|
|
|
pass
|
2019-08-02 17:53:51 +08:00
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
def close(self) -> None:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
def next_stream_id(self) -> int:
|
|
|
|
pass
|