Contents

send(_:replyHandler:)

Sends an encodable message over the session to the destination service, using the closure you specify to handle a reply and rich error.

Declaration

@preconcurrency func send<Message>(_ message: Message, replyHandler: @escaping  @Sendable (Result<XPCReceivedMessage, XPCRichError>) -> Void) throws where Message : Encodable

Parameters

  • message:

    An encodable object that contains the message to send.

  • replyHandler:

    A closure that receives a reply, and error if one occurs, that the service sends back.

Discussion

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.

If the session fails to send the message, this method throws an error that contains details about the failure.

If the system tears down the session’s connection before receiving a reply, it invokes replyHandler with a result containing an XPCRichError describing the failure. For example, the remote service exits prematurely before sending a reply.

See Also

Sending messages