本文整理汇总了C++中IOTHUB_CLIENT_LL_HANDLE_DATA::IoTHubTransport_Create方法的典型用法代码示例。如果您正苦于以下问题:C++ IOTHUB_CLIENT_LL_HANDLE_DATA::IoTHubTransport_Create方法的具体用法?C++ IOTHUB_CLIENT_LL_HANDLE_DATA::IoTHubTransport_Create怎么用?C++ IOTHUB_CLIENT_LL_HANDLE_DATA::IoTHubTransport_Create使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOTHUB_CLIENT_LL_HANDLE_DATA
的用法示例。
在下文中一共展示了IOTHUB_CLIENT_LL_HANDLE_DATA::IoTHubTransport_Create方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IoTHubClient_LL_Create
IOTHUB_CLIENT_LL_HANDLE IoTHubClient_LL_Create(const IOTHUB_CLIENT_CONFIG* config)
{
IOTHUB_CLIENT_LL_HANDLE result;
/*Codes_SRS_IOTHUBCLIENT_LL_02_001: [IoTHubClient_LL_Create shall return NULL if config parameter is NULL or protocol field is NULL.]*/
if (
(config == NULL) ||
(config->protocol == NULL)
)
{
result = NULL;
LogError("invalid configuration (NULL detected)\r\n");
}
else
{
IOTHUB_CLIENT_LL_HANDLE_DATA* handleData = (IOTHUB_CLIENT_LL_HANDLE_DATA*)malloc(sizeof(IOTHUB_CLIENT_LL_HANDLE_DATA));
if (handleData == NULL)
{
LogError("malloc failed\r\n");
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_004: [Otherwise IoTHubClient_LL_Create shall initialize a new DLIST (further called "waitingToSend") containing records with fields of the following types: IOTHUB_MESSAGE_HANDLE, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, void*.]*/
IOTHUBTRANSPORT_CONFIG lowerLayerConfig;
DList_InitializeListHead(&(handleData->waitingToSend));
handleData->IoTHubTransport_SetOption = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_SetOption;
handleData->IoTHubTransport_Create = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_Create;
handleData->IoTHubTransport_Destroy = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_Destroy;
handleData->IoTHubTransport_Subscribe = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_Subscribe;
handleData->IoTHubTransport_Unsubscribe = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_Unsubscribe;
handleData->IoTHubTransport_DoWork = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_DoWork;
handleData->IoTHubTransport_GetSendStatus = ((TRANSPORT_PROVIDER*)config->protocol())->IoTHubTransport_GetSendStatus;
handleData->messageCallback = NULL;
handleData->messageUserContextCallback = NULL;
handleData->lastMessageReceiveTime = INDEFINITE_TIME;
/*Codes_SRS_IOTHUBCLIENT_LL_02_006: [IoTHubClient_LL_Create shall populate a structure of type IOTHUBTRANSPORT_CONFIG with the information from config parameter and the previous DLIST and shall pass that to the underlying layer _Create function.]*/
lowerLayerConfig.upperConfig = config;
lowerLayerConfig.waitingToSend = &(handleData->waitingToSend);
/*Codes_SRS_IOTHUBCLIENT_LL_02_007: [If the underlaying layer _Create function fails them IoTHubClient_LL_Create shall fail and return NULL.] */
if ((handleData->transportHandle = handleData->IoTHubTransport_Create(&lowerLayerConfig)) == NULL)
{
LogError("underlying transport failed\r\n");
free(handleData);
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_008: [Otherwise, IoTHubClient_LL_Create shall succeed and return a non-NULL handle.] */
result = handleData;
}
}
}
return result;
}
示例2: IoTHubClient_LL_Create
IOTHUB_CLIENT_LL_HANDLE IoTHubClient_LL_Create(const IOTHUB_CLIENT_CONFIG* config)
{
IOTHUB_CLIENT_LL_HANDLE result;
/*Codes_SRS_IOTHUBCLIENT_LL_02_001: [IoTHubClient_LL_Create shall return NULL if config parameter is NULL or protocol field is NULL.]*/
if(
(config == NULL) ||
(config->protocol == NULL)
)
{
result = NULL;
LogError("invalid configuration (NULL detected)");
}
else
{
IOTHUB_CLIENT_LL_HANDLE_DATA* handleData = (IOTHUB_CLIENT_LL_HANDLE_DATA*)malloc(sizeof(IOTHUB_CLIENT_LL_HANDLE_DATA));
if (handleData == NULL)
{
LogError("malloc failed");
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_094: [ IoTHubClient_LL_Create shall create a IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE from IOTHUB_CLIENT_CONFIG. ]*/
/*Codes_SRS_IOTHUBCLIENT_LL_02_092: [ IoTHubClient_LL_CreateFromConnectionString shall create a IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE from IOTHUB_CLIENT_CONFIG. ]*/
handleData->uploadToBlobHandle = IoTHubClient_LL_UploadToBlob_Create(config);
if (handleData->uploadToBlobHandle == NULL)
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_093: [ If creating the IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE fails then IoTHubClient_LL_CreateFromConnectionString shall fail and return NULL. ]*/
/*Codes_SRS_IOTHUBCLIENT_LL_02_095: [ If creating the IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE fails then IoTHubClient_LL_Create shall fail and return NULL. ]*/
LogError("unable to IoTHubClient_LL_UploadToBlob_Create");
free(handleData);
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_045: [ Otherwise IoTHubClient_LL_Create shall create a new TICK_COUNTER_HANDLE ]*/
if ((handleData->tickCounter = tickcounter_create()) == NULL)
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_046: [ If creating the TICK_COUNTER_HANDLE fails then IoTHubClient_LL_Create shall fail and return NULL. ]*/
IoTHubClient_LL_UploadToBlob_Destroy(handleData->uploadToBlobHandle);
LogError("unable to get a tickcounter");
free(handleData);
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_004: [Otherwise IoTHubClient_LL_Create shall initialize a new DLIST (further called "waitingToSend") containing records with fields of the following types: IOTHUB_MESSAGE_HANDLE, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, void*.]*/
IOTHUBTRANSPORT_CONFIG lowerLayerConfig;
DList_InitializeListHead(&(handleData->waitingToSend));
setTransportProtocol(handleData, (TRANSPORT_PROVIDER*)config->protocol());
handleData->messageCallback = NULL;
handleData->messageUserContextCallback = NULL;
handleData->lastMessageReceiveTime = INDEFINITE_TIME;
/*Codes_SRS_IOTHUBCLIENT_LL_02_006: [IoTHubClient_LL_Create shall populate a structure of type IOTHUBTRANSPORT_CONFIG with the information from config parameter and the previous DLIST and shall pass that to the underlying layer _Create function.]*/
lowerLayerConfig.upperConfig = config;
lowerLayerConfig.waitingToSend = &(handleData->waitingToSend);
/*Codes_SRS_IOTHUBCLIENT_LL_02_007: [If the underlaying layer _Create function fails them IoTHubClient_LL_Create shall fail and return NULL.] */
if ((handleData->transportHandle = handleData->IoTHubTransport_Create(&lowerLayerConfig)) == NULL)
{
LogError("underlying transport failed");
IoTHubClient_LL_UploadToBlob_Destroy(handleData->uploadToBlobHandle);
tickcounter_destroy(handleData->tickCounter);
free(handleData);
result = NULL;
}
else
{
IOTHUB_DEVICE_CONFIG deviceConfig;
deviceConfig.deviceId = config->deviceId;
deviceConfig.deviceKey = config->deviceKey;
deviceConfig.deviceSasToken = config->deviceSasToken;
/*Codes_SRS_IOTHUBCLIENT_LL_17_008: [IoTHubClient_LL_Create shall call the transport _Register function with a populated structure of type IOTHUB_DEVICE_CONFIG and waitingToSend list.] */
if ((handleData->deviceHandle = handleData->IoTHubTransport_Register(handleData->transportHandle, &deviceConfig, handleData, &(handleData->waitingToSend))) == NULL)
{
/*Codes_SRS_IOTHUBCLIENT_LL_17_009: [If the _Register function fails, this function shall fail and return NULL.]*/
LogError("Registering device in transport failed");
handleData->IoTHubTransport_Destroy(handleData->transportHandle);
IoTHubClient_LL_UploadToBlob_Destroy(handleData->uploadToBlobHandle);
tickcounter_destroy(handleData->tickCounter);
free(handleData);
result = NULL;
}
else
{
/*Codes_SRS_IOTHUBCLIENT_LL_02_008: [Otherwise, IoTHubClient_LL_Create shall succeed and return a non-NULL handle.] */
handleData->isSharedTransport = false;
/*Codes_SRS_IOTHUBCLIENT_LL_02_042: [ By default, messages shall not timeout. ]*/
handleData->currentMessageTimeout = 0;
result = handleData;
}
}
}
}
}
}
return result;
}