sendSync(_:)
Sends an encodable message over the session to the destination service, blocking the caller until receiving a reply message.
Declaration
func sendSync<Message>(_ message: Message) throws -> XPCReceivedMessage where Message : EncodableParameters
- message:
An encodable object that contains the message to send.
Return Value
If successful, the response to the message; otherwise this method throws an error.
Discussion
This method supports priority inversion avoidance. Use this method instead of calling send(message:replyHandler:) and using a semaphore.
Be judicious about your use of this API. It can block indefinitely. Calling this method while the session’s target queue is blocked may lead to deadlocks in certain scenarios. For that reason, invoking this method from the session’s target queue results in a crash.
Sessions send messages serially in a first-in, first-out (FIFO) order. This method is safe to call from multiple dispatch queues. The session can’t indicate whether the message delivery is successful or not. While the session may successfully enqueue the message at the remote end of the connection, there’s no guarantee about when the destination dequeues the message and invokes the receiving session’s handler.