#pragma once #include #include #include #include #include namespace eui_frameworkSdk { // 固定生命周期的 mission 编排/配置角色,不参与热重载。 // // Core invokes the lifecycle in this order: // initBasic -> shutdown -> destroyMissionConfigV1. // initBasic 在一次 backend 生命周期中只调用一次;shutdown 只在释放时调用。 class IMissionConfig { public: // 释放 mission 配置实例。 virtual ~IMissionConfig() = default; // 注入宿主桥接接口。 void setBridge(IMissionBridge* bridgeIn) noexcept { bridge = bridgeIn; } // 初始化 mission 配置和运行时依赖。 virtual bool initBasic(IServiceManager& serviceManager, const MissionMetadata& metadata) = 0; // 释放 mission 运行资源。 virtual void shutdown() = 0; // 注入当前算法实例。初次加载及 IMissionAlgo 热重载成功后调用; // nullptr 仅用于 backend 释放。该函数不会重启或重新初始化 IMissionConfig。 // config-only mission 可使用默认空实现。 virtual void setAlgo(std::shared_ptr algo) { (void)algo; } protected: IMissionBridge* bridge = nullptr; // 宿主桥接接口,不负责释放。 }; }