func sendPing()

in Sources/DistributedActors/Cluster/SWIM/SWIMActorShell.swift [220:268]


    func sendPing(
        to target: SWIMPeer,
        payload: SWIM.GossipPayload,
        pingRequestOrigin: SWIMPingRequestOriginPeer?,
        pingRequestSequenceNumber: SWIM.SequenceNumber?,
        timeout: DispatchTimeInterval,
        sequenceNumber: SWIM.SequenceNumber,
        context: MyselfContext
    ) {
        let payload = self.swim.makeGossipPayload(to: target)

        context.log.debug("Sending ping", metadata: self.swim.metadata([
            "swim/target": "\(target)",
            "swim/gossip/payload": "\(payload)",
            "swim/timeout": "\(timeout)",
        ]))

        let pingSentAt = DispatchTime.now()
        self.metrics.shell.messageOutboundCount.increment()
        target.ping(payload: payload, timeout: timeout, sequenceNumber: sequenceNumber, context: context) { result in
            switch result {
            case .success(let pingResponse):
                self.metrics.shell.pingResponseTime.recordInterval(since: pingSentAt)
                self.handlePingResponse(
                    response: pingResponse,
                    pingRequestOrigin: pingRequestOrigin,
                    pingRequestSequenceNumber: pingRequestSequenceNumber,
                    context: context
                )
            case .failure(let error):
                context.log.debug(".ping resulted in error", metadata: self.swim.metadata([
                    "swim/ping/target": "\(target)",
                    "swim/ping/sequenceNumber": "\(sequenceNumber)",
                    "error": "\(error)",
                ]))
                self.handlePingResponse(
                    response: .timeout(
                        target: target,
                        pingRequestOrigin: pingRequestOrigin,
                        timeout: timeout,
                        sequenceNumber: sequenceNumber
                    ),
                    pingRequestOrigin: pingRequestOrigin,
                    pingRequestSequenceNumber: pingRequestSequenceNumber,
                    context: context
                )
            }
        }
    }