Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)