On Nov 23, 2011, at 10:28 AM, Damien Sorresso wrote:
On Nov 22, 2011, at 10:07 PM, Jerry Krinock wrote:
// Set an Event Handler xpc_connection_set_event_handler(listener, ^(xpc_object_t object) { char* desc = xpc_copy_description(object); NSLog(@"MachServiceDemo Server got connection: %s", desc) ; xpc_connection_set_event_handler(listener, ^(xpc_object_t object) { char* desc = xpc_copy_description(object); NSLog(@"MachServiceDemo Server got message: %s", desc) ; free(desc) ; }) ; }) ; xpc_connection_resume(listener) ;
That inner xpc_connection_set_event_handler(3) should target 'object' (the new incoming connection), not 'listener'.
Oh, and you also need to resume 'object'.
xpc_connection_set_event_handler(listener, ^(xpc_object_t peer) { assert(xpc_get_type(peer) == XPC_TYPE_CONNECTION); xpc_connection_set_event_handler(peer, ^(xpc_object_t event) { if (event == XPC_ERROR_CONNECTION_INVALID) { // Peer has gone away. } else { assert(xpc_get_type(event) == XPC_TYPE_DICTIONARY); // Handle message. } }); xpc_connection_resume(peer); });
Hope this helps. I highly recommend checking out the man pages. $ man xpc -- Damien Sorresso dsorresso@apple.com