- NS_LOG(DEBUG, "get subscribe message query");
- char * query = NSMakeRequestUriWithConsumerId(provider_internal->messageUri);
- NS_VERIFY_NOT_NULL(query, NS_ERROR);
-
- NS_LOG(DEBUG, "subscribe message");
- NS_LOG_V(DEBUG, "subscribe query : %s", query);
- OCStackResult ret = NSInvokeRequest(&(provider_internal->i_messageHandle),
- OC_REST_OBSERVE, provider_internal->i_addr,
- query, NULL, NSConsumerMessageListener, NULL, CT_DEFAULT);
- NS_VERIFY_STACK_OK(ret, NS_ERROR);
- NSOICFree(query);
-
- NS_LOG(DEBUG, "get subscribe sync query");
- query = NSMakeRequestUriWithConsumerId(provider_internal->syncUri);
- NS_VERIFY_NOT_NULL(query, NS_ERROR);
-
- NS_LOG(DEBUG, "subscribe sync");
- NS_LOG_V(DEBUG, "subscribe query : %s", query);
- ret = NSInvokeRequest(&(provider_internal->i_syncHandle),
- OC_REST_OBSERVE, provider_internal->i_addr,
- query, NULL, NSConsumerSyncInfoListener, NULL, CT_DEFAULT);
- NS_VERIFY_STACK_OK(ret, NS_ERROR);
- NSOICFree(query);
+ NSProviderConnectionInfo * connections = provider_internal->connection;
+ while(connections)
+ {
+ if (connections->messageHandle)
+ {
+ continue;
+ }
+
+ char * msgUri = OICStrdup(provider_internal->messageUri);
+ char * syncUri = OICStrdup(provider_internal->syncUri);
+
+ OCConnectivityType type = CT_DEFAULT;
+ if (connections->addr->adapter == OC_ADAPTER_TCP)
+ {
+ type = CT_ADAPTER_TCP;
+ msgUri = NSGetCloudUri(provider_internal->providerId, msgUri);
+ syncUri = NSGetCloudUri(provider_internal->providerId, syncUri);
+ }
+
+ NS_LOG(DEBUG, "get subscribe message query");
+ char * query = NULL;
+ query = NSMakeRequestUriWithConsumerId(msgUri);
+ NS_VERIFY_NOT_NULL(query, NS_ERROR);
+
+ NS_LOG(DEBUG, "subscribe message");
+ NS_LOG_V(DEBUG, "subscribe query : %s", query);
+ OCStackResult ret = NSInvokeRequest(&(connections->messageHandle),
+ OC_REST_OBSERVE, connections->addr, query, NULL,
+ NSConsumerMessageListener, NULL, type);
+ NS_VERIFY_STACK_OK_WITH_POST_CLEANING(ret, NS_ERROR, NSOICFree(query));
+ NSOICFree(query);
+ NSOICFree(msgUri);
+
+ NS_LOG(DEBUG, "get subscribe sync query");
+ query = NSMakeRequestUriWithConsumerId(syncUri);
+ NS_VERIFY_NOT_NULL(query, NS_ERROR);
+
+ NS_LOG(DEBUG, "subscribe sync");
+ NS_LOG_V(DEBUG, "subscribe query : %s", query);
+ ret = NSInvokeRequest(&(connections->syncHandle),
+ OC_REST_OBSERVE, connections->addr, query, NULL,
+ NSConsumerSyncInfoListener, NULL, type);
+ NS_VERIFY_STACK_OK_WITH_POST_CLEANING(ret, NS_ERROR, NSOICFree(query));
+ NSOICFree(query);
+ NSOICFree(syncUri);
+
+ connections = connections->next;
+ }