QualityOfService qos);
/**
+ * API for All Resources Publish to Resource Directory.
+ * @note This API internally includes Virtual Resource("/oic/d" and "/oic/p") apart
+ * from resource Handles passed.Do not add virtual resource handles in the
+ * resourceHandles argument of this API.
+ *
+ * @param host Host IP Address of a service to direct resource publish query.
+ * @param connectivityType ::OCConnectivityType type of connectivity.
+ * @param callback Handles callbacks, success states and failure states.
+ *
+ * @return Returns ::OC_STACK_OK if success.
+ */
+
+ OCStackResult publishAllResourceToRD(const std::string& host,
+ OCConnectivityType connectivityType,
+ OC::ResourceHandles& resourceHandles,
+ PublishResourceCallback callback);
+
+ OCStackResult publishAllResourceToRD(const std::string& host,
+ OCConnectivityType connectivityType,
+ OC::ResourceHandles& resourceHandles,
+ PublishResourceCallback callback,
+ QualityOfService qos);
+
+ /**
* API for published resource delete from Resource Directory.
* @note This API applies to resource server side only.
*
return publishResourceToRD(host, connectivityType, resourceHandles, callback, static_cast<QualityOfService>(m_qos));
}
+OCStackResult RDClient::publishAllResourceToRD(const std::string& host,
+ OCConnectivityType connectivityType,
+ ResourceHandles& resourceHandles,
+ PublishResourceCallback callback)
+{
+ return publishAllResourceToRD(host, connectivityType, resourceHandles, callback, static_cast<QualityOfService>(m_qos));
+}
+
OCStackResult RDClient::publishResourceToRD(const std::string& host,
OCConnectivityType connectivityType,
PublishResourceCallback callback,
return result;
}
+OCStackResult RDClient::publishAllResourceToRD(const std::string& host,
+ OCConnectivityType connectivityType,
+ ResourceHandles& resourceHandles,
+ PublishResourceCallback callback,
+ QualityOfService qos)
+{
+ ServerCallbackContext::PublishContext* ctx =
+ new ServerCallbackContext::PublishContext(callback);
+ OCCallbackData cbdata(
+ static_cast<void*>(ctx),
+ publishResourceToRDCallback,
+ [](void* c)
+ {delete static_cast<ServerCallbackContext::PublishContext*>(c);}
+ );
+
+ auto cLock = m_csdkLock.lock();
+ OCStackResult result = OC_STACK_ERROR;
+ if (cLock)
+ {
+ std::lock_guard<std::recursive_mutex> lock(*cLock);
+ resourceHandles.push_back( OCGetResourceHandleAtUri(OC_RSRVD_DEVICE_URI) );
+ resourceHandles.push_back( OCGetResourceHandleAtUri(OC_RSRVD_PLATFORM_URI) );
+ result = OCRDPublish(nullptr, host.c_str(), connectivityType, &resourceHandles[0],
+ resourceHandles.size(), &cbdata, static_cast<OCQualityOfService>(qos));
+ }
+
+ if (OC_STACK_OK != result)
+ {
+ throw OCException(OC::Exception::PUBLISH_RESOURCE_FAILED, result);
+ }
+ return result;
+}
+
OCStackApplicationResult deleteResourceFromRDCallback(void* ctx, OCDoHandle /*handle*/,
OCClientResponse* clientResponse)
{