server: python formatting

This commit is contained in:
Koushik Dutta
2024-11-21 14:53:16 -08:00
parent cd0ab104ea
commit 2c5b79291f
10 changed files with 501 additions and 269 deletions

View File

@@ -16,7 +16,7 @@ import json
class BufferSerializer(rpc.RpcSerializer):
def serialize(self, value, serializationContext):
return base64.b64encode(value).decode('utf8')
return base64.b64encode(value).decode("utf8")
def deserialize(self, value, serializationContext):
return base64.b64decode(value)
@@ -24,15 +24,15 @@ class BufferSerializer(rpc.RpcSerializer):
class SidebandBufferSerializer(rpc.RpcSerializer):
def serialize(self, value, serializationContext):
buffers = serializationContext.get('buffers', None)
buffers = serializationContext.get("buffers", None)
if not buffers:
buffers = []
serializationContext['buffers'] = buffers
serializationContext["buffers"] = buffers
buffers.append(value)
return len(buffers) - 1
def deserialize(self, value, serializationContext):
buffers: List = serializationContext.get('buffers', None)
buffers: List = serializationContext.get("buffers", None)
buffer = buffers.pop()
return buffer
@@ -56,7 +56,7 @@ class RpcFileTransport(RpcTransport):
super().__init__()
self.readFd = readFd
self.writeFd = writeFd
self.executor = ThreadPoolExecutor(1, 'rpc-read')
self.executor = ThreadPoolExecutor(1, "rpc-read")
def osReadExact(self, size: int):
b = bytes(0)
@@ -64,7 +64,7 @@ class RpcFileTransport(RpcTransport):
got = os.read(self.readFd, size)
if not len(got):
self.executor.shutdown(False)
raise Exception('rpc end of stream reached')
raise Exception("rpc end of stream reached")
size -= len(got)
b += got
return b
@@ -73,7 +73,7 @@ class RpcFileTransport(RpcTransport):
lengthBytes = self.osReadExact(4)
typeBytes = self.osReadExact(1)
type = typeBytes[0]
length = int.from_bytes(lengthBytes, 'big')
length = int.from_bytes(lengthBytes, "big")
data = self.osReadExact(length - 1)
if type == 1:
return data
@@ -81,11 +81,13 @@ class RpcFileTransport(RpcTransport):
return message
async def read(self):
return await asyncio.get_event_loop().run_in_executor(self.executor, lambda: self.readMessageInternal())
return await asyncio.get_event_loop().run_in_executor(
self.executor, lambda: self.readMessageInternal()
)
def writeMessage(self, type: int, buffer, reject):
length = len(buffer) + 1
lb = length.to_bytes(4, 'big')
lb = length.to_bytes(4, "big")
try:
for b in [lb, bytes([type]), buffer]:
os.write(self.writeFd, b)
@@ -94,14 +96,18 @@ class RpcFileTransport(RpcTransport):
reject(e)
def writeJSON(self, j, reject):
return self.writeMessage(0, bytes(json.dumps(j, allow_nan=False), 'utf8'), reject)
return self.writeMessage(
0, bytes(json.dumps(j, allow_nan=False), "utf8"), reject
)
def writeBuffer(self, buffer, reject):
return self.writeMessage(1, buffer, reject)
class RpcStreamTransport(RpcTransport):
def __init__(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
def __init__(
self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter
) -> None:
super().__init__()
self.reader = reader
self.writer = writer
@@ -110,7 +116,7 @@ class RpcStreamTransport(RpcTransport):
lengthBytes = await self.reader.readexactly(4)
typeBytes = await self.reader.readexactly(1)
type = typeBytes[0]
length = int.from_bytes(lengthBytes, 'big')
length = int.from_bytes(lengthBytes, "big")
data = await self.reader.readexactly(length - 1)
if type == 1:
return data
@@ -119,7 +125,7 @@ class RpcStreamTransport(RpcTransport):
def writeMessage(self, type: int, buffer, reject):
length = len(buffer) + 1
lb = length.to_bytes(4, 'big')
lb = length.to_bytes(4, "big")
try:
for b in [lb, bytes([type]), buffer]:
self.writer.write(b)
@@ -128,7 +134,9 @@ class RpcStreamTransport(RpcTransport):
reject(e)
def writeJSON(self, j, reject):
return self.writeMessage(0, bytes(json.dumps(j, allow_nan=False), 'utf8'), reject)
return self.writeMessage(
0, bytes(json.dumps(j, allow_nan=False), "utf8"), reject
)
def writeBuffer(self, buffer, reject):
return self.writeMessage(1, buffer, reject)
@@ -141,7 +149,9 @@ class RpcConnectionTransport(RpcTransport):
self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
async def read(self):
return await asyncio.get_event_loop().run_in_executor(self.executor, lambda: self.connection.recv())
return await asyncio.get_event_loop().run_in_executor(
self.executor, lambda: self.connection.recv()
)
def writeMessage(self, json, reject):
try:
@@ -158,23 +168,20 @@ class RpcConnectionTransport(RpcTransport):
async def readLoop(loop, peer: rpc.RpcPeer, rpcTransport: RpcTransport):
deserializationContext = {
'buffers': []
}
deserializationContext = {"buffers": []}
while True:
message = await rpcTransport.read()
if type(message) != dict:
deserializationContext['buffers'].append(message)
deserializationContext["buffers"].append(message)
continue
asyncio.run_coroutine_threadsafe(
peer.handleMessage(message, deserializationContext), loop)
peer.handleMessage(message, deserializationContext), loop
)
deserializationContext = {
'buffers': []
}
deserializationContext = {"buffers": []}
async def prepare_peer_readloop(loop: AbstractEventLoop, rpcTransport: RpcTransport):
@@ -185,7 +192,7 @@ async def prepare_peer_readloop(loop: AbstractEventLoop, rpcTransport: RpcTransp
def send(message, reject=None, serializationContext=None):
with mutex:
if serializationContext:
buffers = serializationContext.get('buffers', None)
buffers = serializationContext.get("buffers", None)
if buffers:
for buffer in buffers:
rpcTransport.writeBuffer(buffer, reject)
@@ -193,10 +200,10 @@ async def prepare_peer_readloop(loop: AbstractEventLoop, rpcTransport: RpcTransp
rpcTransport.writeJSON(message, reject)
peer = rpc.RpcPeer(send)
peer.nameDeserializerMap['Buffer'] = SidebandBufferSerializer()
peer.constructorSerializerMap[bytes] = 'Buffer'
peer.constructorSerializerMap[bytearray] = 'Buffer'
peer.constructorSerializerMap[memoryview] = 'Buffer'
peer.nameDeserializerMap["Buffer"] = SidebandBufferSerializer()
peer.constructorSerializerMap[bytes] = "Buffer"
peer.constructorSerializerMap[bytearray] = "Buffer"
peer.constructorSerializerMap[memoryview] = "Buffer"
async def peerReadLoop():
try: