You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
1.0 KiB

  1. // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
  2. package rpc
  3. import (
  4. "LAPP_LF_MOM_BACKEND/container"
  5. "reflect"
  6. )
  7. type RouteManager struct {
  8. componentContainer container.ComponentContainer
  9. serviceRouteManagers []*ServiceRouteManager
  10. }
  11. func NewRouteManager(componentContainer container.ComponentContainer) *RouteManager {
  12. return &RouteManager{componentContainer, make([]*ServiceRouteManager, 0, 100)}
  13. }
  14. func (manager *RouteManager) RegisterService(factory interface{}) *ServiceRouteManager {
  15. return manager.RegisterRoute(reflect.ValueOf(factory).Type().Out(0))
  16. }
  17. func (manager *RouteManager) RegisterRoute(serviceType reflect.Type) *ServiceRouteManager {
  18. serviceRouteManager := NewServiceRouteManager(manager.componentContainer, serviceType)
  19. manager.serviceRouteManagers = append(manager.serviceRouteManagers, serviceRouteManager)
  20. return serviceRouteManager
  21. }
  22. func (manager *RouteManager) ServiceRouteManagers() []*ServiceRouteManager {
  23. return manager.serviceRouteManagers
  24. }