// 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 }