package nnet import ( "fmt" "git.noahlan.cn/northlan/nnet/component" "git.noahlan.cn/northlan/nnet/pipeline" ) type Handler struct { server *Server // Server 引用 pipeline pipeline.Pipeline // 通道 allServices map[string]*component.Service // 所有注册的Service allHandlers map[string]*component.Handler // 所有注册的Handler } func NewHandler() *Handler { return &Handler{ allServices: make(map[string]*component.Service), allHandlers: make(map[string]*component.Handler), } } func (h *Handler) register(comp component.Component, opts []component.Option) error { s := component.NewService(comp, opts) if _, ok := h.allServices[s.Name]; ok { return fmt.Errorf("handler: service already defined: %s", s.Name) } if err := s.ExtractHandler(); err != nil { return err } h.allServices[s.Name] = s // 拷贝一份所有handlers for name, handler := range s.Handlers { handleName := fmt.Sprintf("%s.%s", s.Name, name) // TODO print log h.allHandlers[handleName] = handler } return nil } func (h *Handler) handle(request *Request) { buf := make([]byte, 3) }