|
|
- // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
-
- package container
-
- import (
- "errors"
- "fmt"
- )
-
- // 服务组件句柄
- // @Implement LAPP_LF_MOM_BACKEND/container/ComponentHandler
- type ServiceHandler struct {
- // @Inherit LAPP_LF_MOM_BACKEND/container/ElementHandler
- ElementHandler
- // 方法句柄映射: map[方法名]方法句柄
- methodMapping map[string]*ServiceMethodHandler
- }
-
- // 创建服务组件句柄
- // 参数
- // 1.服务组件实例
- // 2.方法句柄映射: map[方法名]方法句柄
- // 返回值:
- // 1.服务组件句柄
- // 2.错误
- func NewServiceHandler(instance Instance, methodMapping map[string]*ServiceMethodHandler) (*ServiceHandler, error) {
- if methodMapping == nil {
- return nil, errors.New(fmt.Sprintf("方法句柄映射不能为空!"))
- }
- if len(methodMapping) > 0 {
- for methodName, methodHandler := range methodMapping {
- if methodName == "" {
- return nil, errors.New(fmt.Sprintf("方法名不能为空!"))
- }
- if methodHandler == nil {
- return nil, errors.New(fmt.Sprintf("方法句柄不能为空!"))
- }
- }
- }
- return &ServiceHandler{ElementHandler{instance}, methodMapping}, nil
- }
-
- // 创建获取方法句柄
- // 参数
- // 1.方法名
- // 返回值:
- // 1.方法句柄
- func (handler *ServiceHandler) Method(methodName string) *ServiceMethodHandler {
- if methodName == "" {
- return nil
- }
- serviceMethodHandler, ok := handler.methodMapping[methodName]
- if !ok {
- return nil
- }
- return serviceMethodHandler
- }
|