command_handlers.go 586 B

123456789101112131415161718192021222324252627
  1. package main
  2. import (
  3. "errors"
  4. )
  5. type CommandHandler struct {
  6. cmdHandler map[string]func(args []string) error
  7. }
  8. func NewCommandHander() *CommandHandler {
  9. return &CommandHandler{
  10. cmdHandler: make(map[string](func(args []string) error)),
  11. }
  12. }
  13. func (ch *CommandHandler) SetHandler(cmd string, handler func(args []string) error) {
  14. ch.cmdHandler[cmd] = handler
  15. }
  16. func (ch *CommandHandler) GetHandler(cmd string) (func(args []string) error, error) {
  17. handler, exist := ch.cmdHandler[cmd]
  18. if !exist {
  19. return nil, errors.New("command not found: " + cmd)
  20. }
  21. return handler, nil
  22. }