def stdServer(server: Server, contractSerializer: Serializer) -> None: sout = sys.stdout.buffer sin = sys.stdin.buffer def writeBytes(value: bytes) -> None: sent = 0 while sent < len(value): written = sout.write(value[sent:]) if written == 0: raise RuntimeError("pipe connection broken") sent += written def readBytes(length: int) -> bytes: buffer = b'' while len(buffer) < length: chunk = sin.read(length - len(buffer)) if len(chunk) == 0: raise RuntimeError("pipe connection broken") buffer += chunk return buffer messageSerializer = MessageSerializer(contractSerializer) writer = Writer(writeBytes) reader = Reader(readBytes) while True: messageSerializer.write( server.invoke(cast(Request, messageSerializer.read(reader))), writer) sout.flush()
def stdServer(server, contractSerializer): # type: (Server, Serializer) -> None sout = sys.stdout sin = sys.stdin def writeBytes(value): # type: (bytes) -> None sout.write(value) def readBytes(length): # type: (int) -> bytes buffer = b'' while len(buffer) < length: chunk = sin.read(length - len(buffer)) if len(chunk) == 0: raise RuntimeError("pipe connection broken") buffer += chunk return buffer messageSerializer = MessageSerializer(contractSerializer) writer = Writer(writeBytes) reader = Reader(readBytes) while True: messageSerializer.write( server.invoke(cast(Request, messageSerializer.read(reader))), writer) sout.flush()
def stdServer(server: Server, contractSerializer: Serializer) -> None: sout = sys.stdout.buffer sin = sys.stdin.buffer def writeBytes(value: bytes) -> None: sent = 0 while sent < len(value): written = sout.write(value[sent:]) if written == 0: raise RuntimeError("pipe connection broken") sent += written def readBytes(length: int) -> bytes: buffer = b'' while len(buffer) < length: chunk = sin.read(length - len(buffer)) if len(chunk) == 0: raise RuntimeError("pipe connection broken") buffer += chunk return buffer messageSerializer = MessageSerializer(contractSerializer) writer = Writer(writeBytes) reader = Reader(readBytes) while True: messageSerializer.write(server.invoke(cast(Request, messageSerializer.read(reader))), writer) sout.flush()
def stdServer(server, contractSerializer): # type: (Server, Serializer) -> None sout = sys.stdout sin = sys.stdin def writeBytes(value): # type: (bytes) -> None sout.write(value) def readBytes(length): # type: (int) -> bytes buffer = b"" while len(buffer) < length: chunk = sin.read(length - len(buffer)) if len(chunk) == 0: raise RuntimeError("pipe connection broken") buffer += chunk return buffer messageSerializer = MessageSerializer(contractSerializer) writer = Writer(writeBytes) reader = Reader(readBytes) while True: messageSerializer.write(server.invoke(cast(Request, messageSerializer.read(reader))), writer) sout.flush()
def invoke(self, request): # type: (Request) -> Reply ser = MessageSerializer(serializer) io = BytesIO() writer = createWriter(io) reader = createReader(io) def copy(input): # type: (Any) -> Any io.truncate(0) io.seek(0) ser.write(input, writer) io.seek(0) output = ser.read(reader) test.assertEqual(io.read(1), b'') return output return cast(Reply, copy(server.invoke(cast(Request, copy(request)))))