mirror of
https://github.com/logos-blockchain/logos-blockchain-specs.git
synced 2026-01-10 17:13:08 +00:00
27 lines
833 B
Python
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()
|