void RCSDiscoveryManagerImpl::onResourceFound(
std::shared_ptr< PrimitiveResource > resource, ID discoveryId,
- const RCSDiscoveryManager::ResourceDiscoveredCallback& discoverCB)
+ const RCSDiscoveryManager::ResourceDiscoveredCallback& discoverCB,
+ const std::string& uri)
{
{
std::lock_guard < std::mutex > lock(m_mutex);
it->second.addKnownResource(resource);
}
- discoverCB(std::make_shared < RCSRemoteResourceObject > (resource));
+
+ if (uri == OC_RSRVD_WELL_KNOWN_URI || uri == resource->getUri())
+ {
+ discoverCB(std::make_shared < RCSRemoteResourceObject > (resource));
+ }
}
RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManagerImpl::startDiscovery(
DiscoveryRequestInfo discoveryInfo(address, relativeUri, resourceTypes,
std::bind(&RCSDiscoveryManagerImpl::onResourceFound, this,
- std::placeholders::_1, discoveryId, std::move(cb)));
+ std::placeholders::_1, discoveryId, std::move(cb), relativeUri));
discoveryInfo.discover();
{
for (const auto& it : m_resourceTypes)
{
- discoverResource(m_address, m_relativeUri + "?rt=" + it, m_discoverCb);
+ discoverResource(m_address, std::string(OC_RSRVD_WELL_KNOWN_URI)
+ + "?rt=" + it, m_discoverCb);
}
}
#ifdef SECURED
const char * SVR_DB_FILE_NAME = "./oic_svr_db_re_client.dat";
//OCPersistent Storage Handlers
-static FILE* client_open(const char * /*path*/, const char *mode)
+static FILE* client_open(const char * path, const char *mode)
{
- std::string file_name = SVR_DB_FILE_NAME;
+ if (0 == strcmp(path, OC_SECURITY_DB_DAT_FILE_NAME))
+ {
+ std::string file_name = SVR_DB_FILE_NAME;
#ifndef LOCAL_RUNNING
- file_name = "./service/resource-encapsulation/unittests/oic_svr_db_re_client.dat";
+ file_name = "./service/resource-encapsulation/unittests/oic_svr_db_re_client.dat";
#endif
- return fopen(file_name.c_str(), mode);
+ return fopen(file_name.c_str(), mode);
+ }
+ return fopen(path, mode);
}
#endif
TEST(DiscoveryManagerTest, ThrowIfDiscoverWithEmptyCallback)
{
#ifdef SECURED
- OCPersistentStorage gps {client_open, fread, fwrite, fclose, unlink };
+ static OCPersistentStorage gps {client_open, fread, fwrite, fclose, unlink };
OC::PlatformConfig cfg
{ OC::ServiceType::InProc, OC::ModeType::Both, "0.0.0.0", 0,
OC::QualityOfService::LowQos, &gps };
mocks.ExpectCallFuncOverload(static_cast<OCFindResource>(findResource)).Match(
[](const std::string& host, const std::string& resourceURI, OCConnectivityType, FindCallback)
{
- return host.empty() && resourceURI == (std::string(RESOURCE_URI) + "?rt=" + RESOURCE_TYPE);
+ return host.empty() && resourceURI ==
+ (std::string(OC_RSRVD_WELL_KNOWN_URI) + "?rt=" + RESOURCE_TYPE);
}
).Return(OC_STACK_OK);