mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-03-01 00:35:36 +08:00
init commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"air/entity"
|
||||
"flswld.com/common/utils/object"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 注册HTTP服务
|
||||
func (s *Service) RegisterHttpService(instance entity.Instance) bool {
|
||||
nowTime := time.Now().Unix()
|
||||
s.httpServiceMapLock.Lock()
|
||||
instanceMap := s.httpServiceMap[instance.ServiceName]
|
||||
if instanceMap == nil {
|
||||
instanceMap = new(InstanceMap)
|
||||
instanceMap.Imap = make(map[string]*InstanceData)
|
||||
}
|
||||
instanceMap.lock.Lock()
|
||||
instanceData := instanceMap.Imap[instance.InstanceName]
|
||||
if instanceData == nil {
|
||||
instanceData = new(InstanceData)
|
||||
}
|
||||
instanceData.Address = instance.InstanceAddr
|
||||
instanceData.LastAliveTime = nowTime
|
||||
instanceMap.Imap[instance.InstanceName] = instanceData
|
||||
s.httpServiceMap[instance.ServiceName] = instanceMap
|
||||
instanceMap.lock.Unlock()
|
||||
s.httpServiceMapLock.Unlock()
|
||||
changeInst := make(map[string]*InstanceMap)
|
||||
instanceMapCopy := new(InstanceMap)
|
||||
instanceMap.lock.RLock()
|
||||
_ = object.ObjectDeepCopy(instanceMap, instanceMapCopy)
|
||||
instanceMap.lock.RUnlock()
|
||||
changeInst[instance.ServiceName] = instanceMapCopy
|
||||
s.httpSvcChgNtfCh <- changeInst
|
||||
return true
|
||||
}
|
||||
|
||||
// 取消注册HTTP服务
|
||||
func (s *Service) CancelHttpService(instance entity.Instance) bool {
|
||||
s.httpServiceMapLock.RLock()
|
||||
instanceMap := s.httpServiceMap[instance.ServiceName]
|
||||
s.httpServiceMapLock.RUnlock()
|
||||
instanceMap.lock.Lock()
|
||||
delete(instanceMap.Imap, instance.InstanceName)
|
||||
instanceMap.lock.Unlock()
|
||||
changeInst := make(map[string]*InstanceMap)
|
||||
instanceMapCopy := new(InstanceMap)
|
||||
instanceMap.lock.RLock()
|
||||
_ = object.ObjectDeepCopy(instanceMap, instanceMapCopy)
|
||||
instanceMap.lock.RUnlock()
|
||||
changeInst[instance.ServiceName] = instanceMapCopy
|
||||
s.httpSvcChgNtfCh <- changeInst
|
||||
return true
|
||||
}
|
||||
|
||||
// 注册RPC服务
|
||||
func (s *Service) RegisterRpcService(instance entity.Instance) bool {
|
||||
nowTime := time.Now().Unix()
|
||||
s.rpcServiceMapLock.Lock()
|
||||
instanceMap := s.rpcServiceMap[instance.ServiceName]
|
||||
if instanceMap == nil {
|
||||
instanceMap = new(InstanceMap)
|
||||
instanceMap.Imap = make(map[string]*InstanceData)
|
||||
}
|
||||
instanceMap.lock.Lock()
|
||||
instanceData := instanceMap.Imap[instance.InstanceName]
|
||||
if instanceData == nil {
|
||||
instanceData = new(InstanceData)
|
||||
}
|
||||
instanceData.Address = instance.InstanceAddr
|
||||
instanceData.LastAliveTime = nowTime
|
||||
instanceMap.Imap[instance.InstanceName] = instanceData
|
||||
s.rpcServiceMap[instance.ServiceName] = instanceMap
|
||||
instanceMap.lock.Unlock()
|
||||
s.rpcServiceMapLock.Unlock()
|
||||
changeInst := make(map[string]*InstanceMap)
|
||||
instanceMapCopy := new(InstanceMap)
|
||||
instanceMap.lock.RLock()
|
||||
_ = object.ObjectDeepCopy(instanceMap, instanceMapCopy)
|
||||
instanceMap.lock.RUnlock()
|
||||
changeInst[instance.ServiceName] = instanceMapCopy
|
||||
s.rpcSvcChgNtfCh <- changeInst
|
||||
return true
|
||||
}
|
||||
|
||||
// 取消注册RPC服务
|
||||
func (s *Service) CancelRpcService(instance entity.Instance) bool {
|
||||
s.rpcServiceMapLock.RLock()
|
||||
instanceMap := s.rpcServiceMap[instance.ServiceName]
|
||||
s.rpcServiceMapLock.RUnlock()
|
||||
instanceMap.lock.Lock()
|
||||
delete(instanceMap.Imap, instance.InstanceName)
|
||||
instanceMap.lock.Unlock()
|
||||
changeInst := make(map[string]*InstanceMap)
|
||||
instanceMapCopy := new(InstanceMap)
|
||||
instanceMap.lock.RLock()
|
||||
_ = object.ObjectDeepCopy(instanceMap, instanceMapCopy)
|
||||
instanceMap.lock.RUnlock()
|
||||
changeInst[instance.ServiceName] = instanceMapCopy
|
||||
s.rpcSvcChgNtfCh <- changeInst
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user