更新时间:2021-03-18 GMT+08:00
分享

AINNNodeFactory

支持业务引擎自注册,提供创建NN Node接口,提供已注册NN Node描述信息查询(按名称查询以及查询全部)。AINNNodeFactory类在ai_nn_node.h中定义。

    class AINNNodeFactory
    {
    public:
        static AINNNodeFactory* GetInstance();

        /*
        * @brief 根据nnnode name创建NNNode
        * @param [in] name nnnode名称
        * @return std::shared_ptr<IAINNNode> name对应的NNNode对象指针,如果返回nullptr,表示找不到对应的nnnode
        */
        std::shared_ptr<IAINNNode> CreateNNNode(const std::string &name);

        /*
        * @brief 获取所有已注册nnnode的描述信息
        * @param [out] nnnode_desc 所有已注册的nnnode描述信息
        * @return SUCCESS 成功
        * @return 其他    失败
        */
        void GetAllNNNodeDescription(AINNNodeDescriptionList &nnnode_desc);

        /*
        * @brief 根据nnnode name获取nnnode的描述信息
        * @param [in] name nnnode名称
        * @param [out] engin_desc nnnode描述信息
        * @return SUCCESS 成功
        * @return 其他    失败
        */
        AIStatus GetNNNodeDescription(const std::string &name, AINNNodeDescription &engin_desc);

        /*
        * @brief 注册NNNode创建函数
        * @param [in] nnnode_desc nnnode描述信息
        * @param [in] create_func nnnode创建函数
        * @return SUCCESS 成功
        * @return 其他    失败
        */
        AIStatus RegisterNNNodeCreator(const AINNNodeDescription &nnnode_desc, 
            AINNNODE_CREATE_FUN create_func);
        AIStatus RegisterNNNodeCreator(const string nnnode_str, 
            AINNNODE_CREATE_FUN create_func);

        /*
        * @brief 注销NNNode
        * @param [in] name nnnode名称
        * @return SUCCESS 成功
        */
        AIStatus UnRegisterNNNode(const AINNNodeDescription &nnnode_desc);
        AIStatus UnRegisterNNNode(const string nnnode_str);

    private:
        std::map<std::string, AINNNODE_CREATE_FUN> create_func_map_;
        std::map<std::string, AINNNodeDescription> nnnode_desc_map_;
        std::mutex  map_lock_;
    };
分享:

    相关文档

    相关产品