github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/framework/registry/eventdelegate.go (about) 1 package registry 2 3 import ( 4 "github.com/unionj-cloud/go-doudou/framework/memberlist" 5 ) 6 7 type eventDelegate struct { 8 ServiceProviders []IMemberlistServiceProvider 9 } 10 11 func (e *eventDelegate) NotifySuspectSateChange(node *memberlist.Node) { 12 for _, sp := range e.ServiceProviders { 13 if node.State == memberlist.StateSuspect { 14 sp.RemoveNode(node) 15 } else if node.State == memberlist.StateAlive { 16 sp.AddNode(node) 17 } 18 } 19 } 20 21 func (e *eventDelegate) NotifyWeight(node *memberlist.Node) { 22 for _, sp := range e.ServiceProviders { 23 sp.UpdateWeight(node) 24 } 25 } 26 27 // NotifyJoin callback function when node joined 28 func (e *eventDelegate) NotifyJoin(node *memberlist.Node) { 29 for _, sp := range e.ServiceProviders { 30 sp.AddNode(node) 31 } 32 } 33 34 // NotifyLeave callback function when node leave 35 func (e *eventDelegate) NotifyLeave(node *memberlist.Node) { 36 for _, sp := range e.ServiceProviders { 37 sp.RemoveNode(node) 38 } 39 } 40 41 // NotifyUpdate callback function when node updated 42 func (e *eventDelegate) NotifyUpdate(node *memberlist.Node) { 43 for _, sp := range e.ServiceProviders { 44 sp.AddNode(node) 45 } 46 }