OpenRTI 回调的问题

Problems with OpenRTI callbacks

OpenRTI如何让rti发送回调?例如,保留带有 reserveObjectInstanceName

的名称
_rtiAmbassador->reserveObjectInstanceName(name);

错误:

terminate called after throwing an instance of 'rti1516e::ObjectInstanceNameNotReserved'

每次调用 RTI 后,要获得回调,您需要调用 唤起回调()

如果您使用的是 HLA 1516e API(相对于 HLA 1516 或 HLA 1.3),当您调用 connect 时,您可以指定一个 CallbackModel,它是SYNCHRONOUSASYNCHRONOUS。在同步回调模型中,联邦必须调用方法 evokeCallback 以触发 RTI 发送排队的任何内容。在异步中,回调是自动发送的。

在这种情况下你应该做的是像这样:

_rtiAmbassador->reserveObjectInstanceName(std::wstring(L"MyObject"));
_rtiAmbassador->evokeMultipleCallbacks();
MyFederateAmbassador::objectInstanceNameReservationSucceeded(std::wstring const & name){
    _rtiAmbassador->registerObjectInstance(handle, std::wstring(L"MyObject"));
}