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  }