2 Star 1 Fork 0

李玮/trireme-lib

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
registerer.go 1.70 KB
一键复制 编辑 原始数据 按行查看 历史
李玮 提交于 2020-01-29 13:23 +08:00 . v1
package registerer
import (
"fmt"
"git.cloud.top/DSec/trireme-lib/common"
"git.cloud.top/DSec/trireme-lib/monitor/processor"
)
// registerer provides a way for others to register a registerer
type registerer struct {
handlers map[common.PUType]map[common.Event]common.EventHandler
}
// New returns a new registerer
func New() Registerer {
return &registerer{
handlers: map[common.PUType]map[common.Event]common.EventHandler{},
}
}
// RegisterProcessor registers an event processor for a given PUTYpe. Only one
// processor is allowed for a given PU Type.
func (r *registerer) RegisterProcessor(puType common.PUType, ep processor.Processor) error {
if _, ok := r.handlers[puType]; ok {
return fmt.Errorf("Processor already registered for this PU type %d ", puType)
}
r.handlers[puType] = map[common.Event]common.EventHandler{}
r.addHandler(puType, common.EventStart, ep.Start)
r.addHandler(puType, common.EventStop, ep.Stop)
r.addHandler(puType, common.EventCreate, ep.Create)
r.addHandler(puType, common.EventDestroy, ep.Destroy)
r.addHandler(puType, common.EventPause, ep.Pause)
r.addHandler(puType, common.EventResync, ep.Resync)
return nil
}
func (r *registerer) GetHandler(puType common.PUType, eventType common.Event) (common.EventHandler, error) {
handlers, ok := r.handlers[puType]
if !ok {
return nil, fmt.Errorf("PUType %d not registered", puType)
}
e, ok := handlers[eventType]
if !ok {
return nil, fmt.Errorf("PUType %d event type %s not registered", puType, eventType)
}
return e, nil
}
// addHandler adds a handler for a puType/event.
func (r *registerer) addHandler(puType common.PUType, event common.Event, handler common.EventHandler) {
r.handlers[puType][event] = handler
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/emmoblin/trireme-lib.git
git@gitee.com:emmoblin/trireme-lib.git
emmoblin
trireme-lib
trireme-lib
7726874a2b9a

搜索帮助