MCPcopy Create free account
hub / github.com/encodeous/nylon / Probe

Method Probe

core/nylon_endpoints.go:20–57  ·  view source on GitHub ↗
(node state.NodeId, ep *state.NylonEndpoint, waitErr bool)

Source from the content-addressed store, hash-verified

18}
19
20func (n *Nylon) Probe(node state.NodeId, ep *state.NylonEndpoint, waitErr bool) error {
21 token := rand.Uint64()
22 ping := &protocol.Ny{
23 Type: &protocol.Ny_ProbeOp{
24 ProbeOp: &protocol.Ny_Probe{
25 Token: token,
26 ResponseToken: nil,
27 },
28 },
29 }
30 peer := n.Device.LookupPeer(device.NoisePublicKey(n.GetNode(node).PubKey))
31 nep, err := ep.GetWgEndpoint(n.Device)
32 if err != nil {
33 return err
34 }
35
36 n.PingBuf.Set(token, EpPing{
37 TimeSent: time.Now(),
38 }, ttlcache.DefaultTTL)
39
40 wg := sync.WaitGroup{}
41 wg.Add(1)
42
43 var sendErr error
44 go func() {
45 defer wg.Done()
46 sendErr = n.SendNylon(ping, nep, peer)
47 if sendErr != nil {
48 n.PingBuf.Delete(token)
49 }
50 }()
51
52 if waitErr {
53 wg.Wait()
54 return sendErr
55 }
56 return nil
57}
58
59func handleProbe(n *Nylon, pkt *protocol.Ny_Probe, endpoint conn.Endpoint, peer *device.Peer, node state.NodeId) {
60 if pkt.ResponseToken == nil {

Callers 3

probeLinksMethod · 0.95
probeNewMethod · 0.95
handleIPCProbeFunction · 0.80

Calls 7

SendNylonMethod · 0.95
NoisePublicKeyTypeAlias · 0.92
LookupPeerMethod · 0.80
GetWgEndpointMethod · 0.80
DeleteMethod · 0.80
GetNodeMethod · 0.45
WaitMethod · 0.45

Tested by

no test coverage detected