| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package modules
-
- //각 Microservice에 대한 정보 저장 노드
- type MSNode struct {
- nodeName string
- ipAddr string
- }
-
- func (node *MSNode) GetName() string {
- return node.nodeName
- }
- func (node *MSNode) GetIpaddr() string {
- return node.ipAddr
- }
-
- type NodeManager interface {
- GetIpaddr(nodeName string) (string, bool)
- AddMicroservice(node MSNode) bool
- RemoveMicroservice(nodeName string) bool
- }
-
- //모든 Microservice정보 저장
- type MStable struct {
- NodeTable map[string]MSNode
- }
-
- func NewMStable() *MStable {
- return &MStable{NodeTable: make(map[string]MSNode)}
- }
-
- func (manager *MStable) GetIpaddr(nodeName string) (string, bool) {
- //해당 이름의 노드이름이 존재하는지 확인
- node, exists := manager.NodeTable[nodeName]
-
- //존재하지 않는 경우 nil리턴
- if !exists {
- return "", false
- } else {
- return node.ipAddr, true
- }
- }
-
- func (manager *MStable) AddMicroservice(node MSNode) bool {
- //삽입 전 존재여부 확인
- _, exists := manager.NodeTable[node.GetName()]
-
- if exists {
- return false
- } else {
- manager.NodeTable[node.GetName()] = node
- return true
- }
- }
-
- func (manager *MStable) RemoveMicroservice(nodeName string) bool {
- //삭제 전 존재여부 확인
- _, exists := manager.NodeTable[nodeName]
-
- if exists {
- delete(manager.NodeTable, nodeName)
- return true
- } else {
- return false
- }
- }
|