in swim/ping_request_sender.go [88:115]
func (p *pingRequestSender) MakeCall(ctx json.Context, res *pingResponse) <-chan error {
errC := make(chan error, 1)
go func() {
defer close(errC)
changes, bumpPiggybackCounters := p.node.disseminator.IssueAsSender()
req := &pingRequest{
Source: p.node.Address(),
SourceIncarnation: p.node.Incarnation(),
Checksum: p.node.memberlist.Checksum(),
Changes: changes,
Target: p.target,
}
peer := p.node.channel.Peers().GetOrAdd(p.peer)
err := json.CallPeer(ctx, peer, p.node.service, "/protocol/ping-req", req, &res)
if err != nil {
bumpPiggybackCounters()
errC <- err
return
}
errC <- nil
}()
return errC
}