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
,它是SYNCHRONOUS
或 ASYNCHRONOUS
。在同步回调模型中,联邦必须调用方法 evokeCallback
以触发 RTI 发送排队的任何内容。在异步中,回调是自动发送的。
在这种情况下你应该做的是像这样:
_rtiAmbassador->reserveObjectInstanceName(std::wstring(L"MyObject"));
_rtiAmbassador->evokeMultipleCallbacks();
MyFederateAmbassador::objectInstanceNameReservationSucceeded(std::wstring const & name){
_rtiAmbassador->registerObjectInstance(handle, std::wstring(L"MyObject"));
}
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
,它是SYNCHRONOUS
或 ASYNCHRONOUS
。在同步回调模型中,联邦必须调用方法 evokeCallback
以触发 RTI 发送排队的任何内容。在异步中,回调是自动发送的。
在这种情况下你应该做的是像这样:
_rtiAmbassador->reserveObjectInstanceName(std::wstring(L"MyObject"));
_rtiAmbassador->evokeMultipleCallbacks();
MyFederateAmbassador::objectInstanceNameReservationSucceeded(std::wstring const & name){
_rtiAmbassador->registerObjectInstance(handle, std::wstring(L"MyObject"));
}