Hi,
I have a need for a launchd daemon running in the root process, a launchd agent running in a user context, and a CLI that runs in the user context. I've successfully built all three in a POC. I'm using NSXPC to provide bidirectional communication. The daemon is the XPC "server" and the other two are the XPC "clients". I have a server XPC protocol and a client XPC protocol defined and implemented in all three. The daemon's XPC registers the server protocol as its exported interface and the client protocol as the remote interface. The agent and CLI's XPC registers the server protocol as the remote interface and the client protocal as the exported interface.
The breakdown that I'm seeing is that only one of the clients will receive client XPC communications. If I launch one, it will receive it until the next one is launched. Then the next one seems to hijack the first one's client messages. So in effect, it seems there can only be one client process. Is this the case with XPC?