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 createReader(io): # type: (BytesIO) -> Reader def readBytes(length): # type: (int) -> bytes b = io.read(length) if len(b) != length: raise RuntimeError('IO error') return b return Reader(readBytes)
def createReader(io: BytesIO) -> Reader: def readBytes(length: int) -> bytes: b = io.read(length) if len(b) != length: raise RuntimeError('IO error') return b return Reader(readBytes)
def readBase(self, reader: yass.Reader) -> 'Expiration': return Expiration( reader.readZigZagInt() )
def readBase(self, reader: yass.Reader) -> 'Expiration': return Expiration( reader.readZigZagInt(), reader.readZigZagInt(), reader.readZigZagInt() )
def readBase(self, reader: yass.Reader) -> 'Integer': return Integer(reader.readZigZagInt())