package servicemgr import ( "sync/atomic" ) // initServiceMap is for initializing service map func InitServiceMap() { ServiceMap = ConcurrentMap{items: make(map[uint64]interface{})} } func createServiceMap(name string, notiChan chan string) uint64 { serviceID := getServiceIdx() value := make(map[string]interface{}) value[ConstKeyServiceName] = name value[ConstKeyNotiChan] = notiChan ServiceMap.Set(serviceID, value) return serviceID } func deleteServiceMap(serviceID uint64) { ServiceMap.Remove(serviceID) } func getNotiChan(serviceID uint64) (notiChan chan string, err error) { value, _ := ServiceMap.Get(serviceID) if value == nil { return } valueList := value.(map[string]interface{}) return valueList[ConstKeyNotiChan].(chan string), nil } // getServiceIdx() is for getting global serviceID func getServiceIdx() uint64 { atomic.AddUint64(&ServiceIdx, 1) return atomic.LoadUint64(&ServiceIdx) }