multinode.go 954 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package service
  2. import (
  3. "rocommon"
  4. "sync"
  5. )
  6. type MultiServerNode interface {
  7. GetNode(serviceId string) rocommon.ServerNode
  8. //添加服务器节点 tcpConnector成功后的节点
  9. AddNode(desc *ETCDServiceDesc, node rocommon.ServerNode)
  10. RemoveNode(serviceId string)
  11. }
  12. type netServerNode struct {
  13. sync.RWMutex
  14. nodeList map[string]rocommon.ServerNode
  15. }
  16. func NewMultiServerNode() *netServerNode {
  17. m := &netServerNode{}
  18. m.nodeList = map[string]rocommon.ServerNode{}
  19. return m
  20. }
  21. func (this *netServerNode) GetNode(serviceId string) rocommon.ServerNode {
  22. this.RLock()
  23. defer this.RUnlock()
  24. if node, ok := this.nodeList[serviceId]; ok {
  25. return node
  26. }
  27. return nil
  28. }
  29. func (this *netServerNode) RemoveNode(serviceId string) {
  30. this.Lock()
  31. defer this.Unlock()
  32. delete(this.nodeList, serviceId)
  33. }
  34. func (this *netServerNode) AddNode(desc *ETCDServiceDesc, node rocommon.ServerNode) {
  35. this.Lock()
  36. this.nodeList[desc.ID] = node
  37. this.Unlock()
  38. }