Project Moscato Team Messaging Middleware Implemetation Message Middleware by Golang Operate as Secure, Effectively
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

manage.go 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package modules
  2. //각 Microservice에 대한 정보 저장 노드
  3. type MSNode struct {
  4. nodeName string
  5. ipAddr string
  6. }
  7. func (node *MSNode) GetName() string {
  8. return node.nodeName
  9. }
  10. func (node *MSNode) GetIpaddr() string {
  11. return node.ipAddr
  12. }
  13. type NodeManager interface {
  14. GetIpaddr(nodeName string) (string, bool)
  15. AddMicroservice(node MSNode) bool
  16. RemoveMicroservice(nodeName string) bool
  17. }
  18. //모든 Microservice정보 저장
  19. type MStable struct {
  20. NodeTable map[string]MSNode
  21. }
  22. func NewMStable() *MStable {
  23. return &MStable{NodeTable: make(map[string]MSNode)}
  24. }
  25. func (manager *MStable) GetIpaddr(nodeName string) (string, bool) {
  26. //해당 이름의 노드이름이 존재하는지 확인
  27. node, exists := manager.NodeTable[nodeName]
  28. //존재하지 않는 경우 nil리턴
  29. if !exists {
  30. return "", false
  31. } else {
  32. return node.ipAddr, true
  33. }
  34. }
  35. func (manager *MStable) AddMicroservice(node MSNode) bool {
  36. //삽입 전 존재여부 확인
  37. _, exists := manager.NodeTable[node.GetName()]
  38. if exists {
  39. return false
  40. } else {
  41. manager.NodeTable[node.GetName()] = node
  42. return true
  43. }
  44. }
  45. func (manager *MStable) RemoveMicroservice(nodeName string) bool {
  46. //삭제 전 존재여부 확인
  47. _, exists := manager.NodeTable[nodeName]
  48. if exists {
  49. delete(manager.NodeTable, nodeName)
  50. return true
  51. } else {
  52. return false
  53. }
  54. }