27 lines
833 B
Python

import asyncio
import proto
class Transport:
def __init__(self, conn_id, reader, writer, handler):
self.conn_id = conn_id
self.reader = reader
self.writer = writer
self.handler = handler
async def read_and_process(self):
try:
while True:
message = await proto.parse_from_reader(self.reader)
await self.handler(self.conn_id, self.writer, message)
except asyncio.IncompleteReadError:
print("Transport: Connection closed by the peer.")
except Exception as e:
print(f"Transport: An error occurred: {e}")
finally:
self.writer.close()
await self.writer.wait_closed()
async def write(self, message):
self.writer.write(message)
await self.writer.drain()