|
// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
|
|
|
|
package rpc
|
|
|
|
import (
|
|
"LAPP_LF_MOM_BACKEND/container"
|
|
"reflect"
|
|
)
|
|
|
|
type RouteManager struct {
|
|
componentContainer container.ComponentContainer
|
|
serviceRouteManagers []*ServiceRouteManager
|
|
}
|
|
|
|
func NewRouteManager(componentContainer container.ComponentContainer) *RouteManager {
|
|
return &RouteManager{componentContainer, make([]*ServiceRouteManager, 0, 100)}
|
|
}
|
|
|
|
func (manager *RouteManager) RegisterService(factory interface{}) *ServiceRouteManager {
|
|
return manager.RegisterRoute(reflect.ValueOf(factory).Type().Out(0))
|
|
}
|
|
|
|
func (manager *RouteManager) RegisterRoute(serviceType reflect.Type) *ServiceRouteManager {
|
|
serviceRouteManager := NewServiceRouteManager(manager.componentContainer, serviceType)
|
|
manager.serviceRouteManagers = append(manager.serviceRouteManagers, serviceRouteManager)
|
|
return serviceRouteManager
|
|
}
|
|
|
|
func (manager *RouteManager) ServiceRouteManagers() []*ServiceRouteManager {
|
|
return manager.serviceRouteManagers
|
|
}
|