module.go 1.6 KB
Newer Older
Y
Your Name 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
package ksitigarbha

import (
	"log"


)

// 这里只是在程序启动的时候会执行新增操作,所以不需要加锁
type modelManager struct {
	modules map[string]IModule
	names   []string
	namespaceNames map[string]string
}

func newModelManager() *modelManager {
	return &modelManager{
		modules:        make(map[string]IModule),
		names:          make([]string,0,5),
		namespaceNames: make(map[string]string),
	}
}

var mManager = newModelManager()

//GetMonitorModuleNames 获取监控模块名称列表
func GetMonitorModuleNames() []string {
	return mManager.getModuleNames()
}

//GetMonitorModuleModel 获取
func GetMonitorModuleModel(name string) (IModule ,bool){
	return mManager.getModuleModel(name)
}

//GetNameSpaceByName 获取namespace
func GetNameSpaceByName(name string) string {
	return mManager.getNameSpace(name)
}
//Register 注册
func Register(name string,f IModule) {
	if f==nil {
		log.Panic("register ksitigarbha nil")
	}
	mManager.add(name,f)

}

func (m *modelManager) add(name string,f IModule) {

	_,has:=m.modules[name]
	if has{
		log.Panic("register ksitigarbha duplicate name")
	}
	m.modules[name] =f
	m.names = append(m.names, f.GetName())
	m.namespaceNames[name] = f.GetNameSpace()
}

func (m *modelManager) getModuleNames() []string {
	return m.names
}

func (m *modelManager) getModuleModel(name string) (IModule ,bool){

	v, ok := m.modules[name]
	return v,ok
}

func (m *modelManager) isExisted(name string) bool {

	_, ok := m.modules[name]

	return ok
}
func (m *modelManager) getNameSpace(name string) string {
	return m.namespaceNames[name]
}
func (m *modelManager) getModuleCount() int {
	count := len(m.modules)
	return count
}