EN 中文
返回总览

LiteRtLmCallback

回调函数原型。定义了引擎如何向宿主应用程序推送异步生成结果。使用 User Pointer 模式实现上下文保持。

01. 用户指针透传原理 (Context Passthrough)

graph TD Caller[调用方: RunInference] -->|1. 传入 MyObject 指针| DLL[Wrapper DLL 异步任务] DLL -->|2. 推送 Result| Callback[用户回调函数] DLL -->|3. 原样返回 MyObject| Callback Callback -->|4. 强转类型| Object[操作 MyObject 实例]

由于 C-API 无法识别 C++ 类成员函数,必须通过 LiteRtLmCallback 这种静态函数或 Lambda,配合 user_ptr 来重新找回 C++ 对象的上下文。

02. 函数原型定义

typedef void (*LiteRtLmCallback)(LiteRtLm_Result result, void* user_ptr);

参数: result

包含本次增量的文本片段及状态信息。详情见 LiteRtLm_Result

参数: user_ptr

由调用方在 RunInference 中传入的原始指针。通常指向 C++ 类实例(如 this)。

03. 典型的 C++ 类绑定写法

// 静态回调适配器
static void OnStaticResult(LiteRtLm_Result Result, void* UserPtr) {
    // 强制转换为对应的 C++ 类
    UMyAiSubsystem* Subsystem = static_cast<UMyAiSubsystem*>(UserPtr);
    if (Subsystem) {
        Subsystem->HandleAsyncText(Result);
    }
}

// 调用处
LiteRtLm_RunInference(Conv, Params, OnStaticResult, this); // 传入 this 指针