コード例 #1
0
ファイル: echoclient.py プロジェクト: 650elx/middleware
def main():
    # Bind to service port
    server_port = mach.BootstrapServer.lookup("org.freenas.test.mach.ipc-server")
    local_port = mach.Port()

    print 'Service port: {0}'.format(server_port)
    print 'Local port: {0}'.format(local_port)

    # Send a few messages
    for i in range(0, 100):
        msg = mach.Message()
        msg.bits = mach.make_msg_bits(
            mach.MessageType.MACH_MSG_TYPE_COPY_SEND,
            mach.MessageType.MACH_MSG_TYPE_MAKE_SEND
        )

        msg.body = bytearray(random_str())
        local_port.send(server_port, msg)
        reply = local_port.receive()
        print 'Received reply: {0}'.format(reply.body)
        if reply.body != msg.body:
            fail('Reply mismatch: {0} != {1}'.format(msg.body, reply.body))

    # Exit
    msg = mach.Message()
    msg.bits = mach.make_msg_bits(
        mach.MessageType.MACH_MSG_TYPE_COPY_SEND,
        mach.MessageType.MACH_MSG_TYPE_MAKE_SEND
    )

    msg.body = bytearray('EXIT')
    mach.null_port.send(server_port, msg)
コード例 #2
0
ファイル: echoserver.py プロジェクト: 650elx/middleware
def main():
    port = mach.BootstrapServer.checkin("org.freenas.test.mach.ipc-server")

    print 'Service port: {0}'.format(port)
    while True:
        msg = port.receive()
        print 'Received message: {0}'.format(msg.body)

        if msg.body == 'EXIT':
            print 'Exiting cleanly'
            break
        else:
            # Send response
            print 'Sending response to remote port {0}'.format(msg.remote_port)
            reply = mach.Message()
            reply.body = bytearray(msg.body)
            reply.bits = mach.make_msg_bits(mach.MessageType.MACH_MSG_TYPE_COPY_SEND, 0)
            mach.null_port.send(msg.remote_port, reply)
コード例 #3
0
ファイル: echoserver.py プロジェクト: ant4g0nist/py-mach
def main():
    port = mach.BootstrapServer.checkin("org.freenas.test.mach.ipc-server")

    print 'Service port: {0}'.format(port)
    while True:
        msg = port.receive()
        print 'Received message: {0}'.format(msg.body)

        if msg.body == 'EXIT':
            print 'Exiting cleanly'
            break
        else:
            # Send response
            print 'Sending response to remote port {0}'.format(msg.remote_port)
            reply = mach.Message()
            reply.body = bytearray(msg.body)
            reply.bits = mach.make_msg_bits(
                mach.MessageType.MACH_MSG_TYPE_COPY_SEND, 0)
            mach.null_port.send(msg.remote_port, reply)
コード例 #4
0
    # Create send port
    try:
        send = mach.Port()
        send.insert_right(mach.MessageType.MACH_MSG_TYPE_MAKE_SEND)
        print 'Send port: {0}'.format(send)
    except mach.MachException, e:
        fail('Cannot create send port: {0}'.format(e))

    # Create receive port
    try:
        receive = mach.Port()
        receive.insert_right(mach.MessageType.MACH_MSG_TYPE_MAKE_SEND)
        print 'Receive port: {0}'.format(receive)
    except mach.MachException, e:
        fail('Cannot create receive port: {0}'.format(e))

    threading.Thread(target=server, args=(receive, )).start()

    msg = mach.Message()
    msg.bits = mach.make_msg_bits(mach.MessageType.MACH_MSG_TYPE_COPY_SEND,
                                  mach.MessageType.MACH_MSG_TYPE_MAKE_SEND)
    msg.body = bytearray(struct.pack('256p', 'Hello World'))
    print 'Sent text: {0}'.format('Hello World')
    try:
        send.send(receive, msg)
    except mach.SendMessageException, e:
        fail('Cannot send message: {0}'.format(e))


if __name__ == '__main__':
    main()
コード例 #5
0
ファイル: ool-multiple.py プロジェクト: NextBSD/py-mach
        print 'Receive port: {0}'.format(receive)
    except mach.MachException, e:
        fail('Cannot create receive port: {0}'.format(e))

    # Prepare descriptors
    for i in range(0, random.randrange(5, 15)):
        buffer = mach.MemoryBuffer(data=bytearray(random_str(random.randrange(1, 1024 * 1024))))
        desc = mach.MemoryDescriptor()
        desc.buffer = buffer
        descriptors.append(desc)

    t = threading.Thread(target=server, args=(receive,))
    t.start()

    msg = mach.Message()
    msg.bits = mach.make_msg_bits(mach.MessageType.MACH_MSG_TYPE_COPY_SEND, mach.MessageType.MACH_MSG_TYPE_MAKE_SEND)
    msg.descriptors = descriptors
    msg.body = bytearray(struct.pack('256p', 'Hello World'))

    print 'Text to send: {0}'.format('Hello World')
    print 'Message to send:'
    describe_msg(msg)

    try:
        send.send(receive, msg)
    except mach.MessageSendException, e:
        fail('Cannot send message: {0}'.format(e))


if __name__ == '__main__':
    main()