我知道这可能是一个笼统的问题,但是我试图绕过这个问题,但我不知道如何解决。
我们有一个项目,先前的sdk已对其进行同步调用,现在我们正尝试用一个异步工作的新sdk替换该sdk。
我们还有一个包装器,用作我们的应用程序和sdk之间的中间地带。我们必须从应用程序“同步方式”的角度来考虑,因为它们会阻塞并等待响应/数据。
新的异步SDK具有一个主回调线程,在该线程中,我们会根据请求ID收到针对我们所做的每个请求的通知。
因此,现在我试图找出一种对sdk进行异步调用的好方法,然后以某种方式阻止直到一定时间到期/接收到命令的结果并返回在回调线程上返回的结果为了将信息传递给应用程序,请求到了哪里? 另外,由于sdk不同,有时要获取相同的数据,我们需要调用多个sdk api。
如果您有关于此特定案例的一些想法或文档,以解决该问题,我将不胜感激。
非常感谢您。
让我们说以下代码:
bool DeviceService::getDeviceInformation (DeviceInfo& devInfo) const
{
if(CM2MWSession::getInstance().isInit())
{
NOTIFICATION_REQUEST_DATA rqst;
rqst.sender_id = CM2MWSession::getInstance().getClientId();
get_serial_number(&rqst,NULL))
get_sim_serial_number(&rqst,NULL))
}
}
get_serial_number 和 get_sim_serial_number 是对sdk的异步调用。
getDeviceInformation 是从应用程序方面调用的方法。
主回调看起来像这样:
mainCallback(REQUEST_DATA *rqst_data, uint32 size, void *data)
在这里,对于每种请求类型,我们都会收到一个 rqst_data-> feat_id)。 从这里,我们必须以某种方式返回带有此回调返回的数据的 getDeviceInfo 。