diff --git a/router.go b/router.go index 2789411..5e28f1e 100644 --- a/router.go +++ b/router.go @@ -26,7 +26,6 @@ type Router struct { tracer trace.Tracer } -// TODO(jwetzell): support removing module func (r *Router) addModule(moduleDecl config.ModuleConfig) error { if moduleDecl.Id == "" { return errors.New("module id cannot be empty") @@ -50,6 +49,16 @@ func (r *Router) addModule(moduleDecl config.ModuleConfig) error { return nil } +func (r *Router) removeModule(moduleId string) error { + moduleInstance, ok := r.ModuleInstances[moduleId] + if !ok { + return errors.New("module id not found") + } + moduleInstance.Stop() + delete(r.ModuleInstances, moduleId) + return nil +} + // TODO(jwetzell): support removing route func (r *Router) addRoute(routeDecl config.RouteConfig) error { routeInstance, err := route.NewRoute(routeDecl)