github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/libnetwork/networkdb/event_delegate.go (about) 1 package networkdb 2 3 import "github.com/hashicorp/memberlist" 4 5 type eventDelegate struct { 6 nDB *NetworkDB 7 } 8 9 func (e *eventDelegate) NotifyJoin(mn *memberlist.Node) { 10 e.nDB.Lock() 11 // In case the node is rejoining after a failure or leave, 12 // wait until an explicit join message arrives before adding 13 // it to the nodes just to make sure this is not a stale 14 // join. If you don't know about this node add it immediately. 15 _, fOk := e.nDB.failedNodes[mn.Name] 16 _, lOk := e.nDB.leftNodes[mn.Name] 17 if fOk || lOk { 18 e.nDB.Unlock() 19 return 20 } 21 22 e.nDB.nodes[mn.Name] = &node{Node: *mn} 23 e.nDB.Unlock() 24 } 25 26 func (e *eventDelegate) NotifyLeave(mn *memberlist.Node) { 27 e.nDB.deleteNodeTableEntries(mn.Name) 28 e.nDB.deleteNetworkEntriesForNode(mn.Name) 29 e.nDB.Lock() 30 if n, ok := e.nDB.nodes[mn.Name]; ok { 31 delete(e.nDB.nodes, mn.Name) 32 e.nDB.failedNodes[mn.Name] = n 33 } 34 e.nDB.Unlock() 35 } 36 37 func (e *eventDelegate) NotifyUpdate(n *memberlist.Node) { 38 }