server.go 550 B

1234567891011121314151617181920212223242526272829303132
  1. package server
  2. import "ehang.io/nps/core/handler"
  3. type rule interface {
  4. handler.RuleRun
  5. GetHandler() handler.Handler
  6. }
  7. type Server interface {
  8. Init() error
  9. Serve()
  10. GetServerAddr() string
  11. GetName() string
  12. GetZhName() string
  13. RegisterHandle(rl rule)
  14. }
  15. type BaseServer struct {
  16. handlers map[string]handler.Handler
  17. }
  18. func (bs *BaseServer) RegisterHandle(rl rule) {
  19. var h handler.Handler
  20. var ok bool
  21. if h, ok = bs.handlers[rl.GetHandler().GetName()]; !ok {
  22. h = rl.GetHandler()
  23. bs.handlers[h.GetName()] = h
  24. }
  25. h.AddRule(rl)
  26. return
  27. }