//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-/// @file GroupSynchronization.cpp
-/// @brief
-
#include "GroupSynchronization.h"
+#include "logger.h"
using namespace OC;
+using namespace std;
+
+#define TAG "GROUP_SYNC"
namespace OIC
{
+ GroupSynchronization* GroupSynchronization::groupSyncnstance = NULL;
+ bool GroupSynchronization::bIsFinding = false;
-GroupSynchronization* GroupSynchronization::groupSyncnstance = NULL;
-
-GroupSynchronization* GroupSynchronization::getInstance()
-{
- if (groupSyncnstance == NULL)
+ GroupSynchronization* GroupSynchronization::getInstance()
{
- groupSyncnstance = new GroupSynchronization();
+ if (groupSyncnstance == NULL)
+ {
+ groupSyncnstance = new GroupSynchronization();
+ }
+ return groupSyncnstance;
}
- return groupSyncnstance;
-}
-void GroupSynchronization::deleteInstance()
-{
- if (groupSyncnstance)
+ void GroupSynchronization::deleteInstance()
{
- delete groupSyncnstance;
- groupSyncnstance = NULL;
+ if (groupSyncnstance)
+ {
+ delete groupSyncnstance;
+ groupSyncnstance = NULL;
+ }
}
-}
-OCStackResult GroupSynchronization::findGroup(
- std::vector< std::string > collectionResourceTypes, FindCallback callback)
-{
- cout << "GroupSynchronization::findGroup" << endl;
+ OCStackResult GroupSynchronization::findGroup(
+ std::vector< std::string > collectionResourceTypes, FindCallback callback)
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::findGroup");
- foundGroupResourceList.clear();
+ if(bIsFinding)
+ {
+ OC_LOG(DEBUG, TAG, "It was searching already.");
+ return OC_STACK_ERROR;
+ }
- findCallback = callback;
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+ foundGroupResourceList.clear();
+ findCallback = callback;
- for (unsigned int i = 0; i < collectionResourceTypes.size(); ++i)
- {
- std::string query = "coap://224.0.1.187/oc/core?rt=";
- query.append(collectionResourceTypes.at(i));
- cout << "GroupSynchronization::findGroup - " << query << endl;
+ if (findCallback == NULL)
+ {
+ OC_LOG(DEBUG, TAG, "Find callback is NULL.");
+ return OC_STACK_ERROR;
+ }
- OCPlatform::findResource("", query,
- std::bind(&GroupSynchronization::onFindGroup, this, std::placeholders::_1));
- }
+ for (unsigned int i = 0; i < collectionResourceTypes.size(); ++i)
+ {
- // thread to check if GroupSynchronization::onFoundGroup is called or not.
- std::thread t(std::bind(&GroupSynchronization::checkFindGroup, this));
- t.detach();
+ std::string query = OC_MULTICAST_DISCOVERY_URI;
+ query.append("?rt=");
+ query.append(collectionResourceTypes.at(i));
- return OC_STACK_OK;
-}
+ OCPlatform::findResource("", query,
+ OC_ALL,
+ std::bind(&GroupSynchronization::onFindGroup, this,
+ std::placeholders::_1));
+ }
-OCStackResult GroupSynchronization::createGroup(std::string collectionResourceType)
-{
- foundGroupResourceList.clear();
+ bIsFinding = true;
- OCResourceHandle collectionResHandle = NULL;
- OCResourceHandle groupSyncResHandle = NULL;
+ // thread to check if GroupSynchronization::onFoundGroup is called or not.
+ std::thread t(std::bind(&GroupSynchronization::checkFindGroup, this));
+ t.detach();
+
+ return OC_STACK_OK;
+ }
- if (0 != collectionResourceType.length())
+ OCStackResult GroupSynchronization::createGroup(std::string collectionResourceType)
{
- cout << "GroupSynchronization::createGroup - The created group is added." << endl;
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+ foundGroupResourceList.clear();
+
+ OCResourceHandle collectionResHandle = NULL;
+ OCResourceHandle groupSyncResHandle = NULL;
+
+ if (0 == collectionResourceType.length())
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::createGroup : Error! Input params are wrong.");
+ return OC_STACK_INVALID_PARAM;
+ }
+
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::createGroup - The created group is added.");
OCStackResult result;
// creating master collection resource
std::string collectionUri = "/" + collectionResourceType;
- int i;
+ std::size_t i;
while ((i = collectionUri.find(".")) != std::string::npos)
{
collectionUri.replace(i, 1, "/");
}
- cout << "GroupSynchronization::createGroup : collection uri - " << collectionUri
- << ", type - " << collectionResourceType << endl;
+
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::createGroup : collection uri - %s, type - %s",
+ collectionUri.c_str(), collectionResourceType.c_str());
std::string resourceInterface = DEFAULT_INTERFACE;
result = OCPlatform::registerResource(collectionResHandle, collectionUri,
- collectionResourceType, resourceInterface, NULL,
- OC_DISCOVERABLE | OC_OBSERVABLE);
+ collectionResourceType, resourceInterface, NULL, OC_DISCOVERABLE | OC_OBSERVABLE);
if (result != OC_STACK_OK)
{
- cout << "To register resource (" << collectionUri << ") was unsuccessful. result - "
- << result << endl;
+ OC_LOG_V(DEBUG, TAG, "To register resource (%s) was unsuccessful. result - %d",
+ collectionUri.c_str(), result);
goto Error;
}
- OCPlatform::bindInterfaceToResource(collectionResHandle, GROUP_INTERFACE);
- if (result != OC_STACK_OK)
{
- cout << "To bind Interface (collection) was unsuccessful. result - " << result
- << endl;
- }
-
- collectionResourceHandleList[collectionResourceType] = collectionResHandle;
+ OCPlatform::bindInterfaceToResource(collectionResHandle, GROUP_INTERFACE);
+ if (result != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG,
+ "To bind Interface (collection) was unsuccessful. result - %d",
+ result);
+ }
- // creating master group sync resource
- std::string groupSyncUri = collectionUri + "/groupsync";
- std::string groupSyncResType = collectionResourceType + ".groupsync";
+ collectionResourceHandleList[collectionResourceType] = collectionResHandle;
-// cout << "GroupSynchronization::createGroup : groupSync uri - " << groupSyncUri
-// << ", type - " << collectionResourceType << endl;
+ // creating master group sync resource
+ std::string groupSyncUri = collectionUri + "/groupsync";
+ std::string groupSyncResType = collectionResourceType + ".groupsync";
- result = OCPlatform::registerResource(groupSyncResHandle, groupSyncUri,
- groupSyncResType, resourceInterface,
- std::bind(&GroupSynchronization::groupEntityHandler, this,
- std::placeholders::_1), OC_DISCOVERABLE | OC_OBSERVABLE);
- if (result != OC_STACK_OK)
- {
- cout << "To register resource (groupsync) was unsuccessful. result - " << result
- << endl;
- goto Error;
- }
+ result = OCPlatform::registerResource(groupSyncResHandle, groupSyncUri,
+ groupSyncResType, resourceInterface,
+ std::bind(&GroupSynchronization::groupEntityHandler, this,
+ std::placeholders::_1), OC_DISCOVERABLE | OC_OBSERVABLE);
+ if (result != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG,
+ "To register resource (groupsync) was unsuccessful. result - %d", result);
+ goto Error;
+ }
- groupSyncResourceHandleList[collectionResourceType] = groupSyncResHandle;
+ groupSyncResourceHandleList[collectionResourceType] = groupSyncResHandle;
- return OC_STACK_OK;
- }
- else
- {
- cout << "GroupSynchronization::createGroup : Error! Input params are wrong." << endl;
- return OC_STACK_INVALID_PARAM;
- }
+ return OC_STACK_OK;
+ }
+ Error:
- Error:
+ if (collectionResHandle)
+ {
+ OCPlatform::unregisterResource(collectionResHandle);
+ auto iterator = collectionResourceHandleList.find(collectionResourceType);
+ if (iterator != collectionResourceHandleList.end())
+ {
+ collectionResourceHandleList.erase(iterator);
+ }
+ }
- if (collectionResHandle)
- {
- OCPlatform::unregisterResource(collectionResHandle);
- auto iterator = collectionResourceHandleList.find(collectionResourceType);
- if (iterator != collectionResourceHandleList.end())
+ if (groupSyncResHandle)
{
- collectionResourceHandleList.erase(iterator);
+ OCPlatform::unregisterResource(groupSyncResHandle);
+ auto iterator = groupSyncResourceHandleList.find(collectionResourceType);
+ if (iterator != groupSyncResourceHandleList.end())
+ {
+ groupSyncResourceHandleList.erase(iterator);
+ }
}
+
+ return OC_STACK_NO_RESOURCE;
}
- if (groupSyncResHandle)
+ OCStackResult GroupSynchronization::joinGroup(std::string collectionResourceType,
+ OCResourceHandle resourceHandle)
{
- OCPlatform::unregisterResource(groupSyncResHandle);
- auto iterator = groupSyncResourceHandleList.find(collectionResourceType);
- if (iterator != groupSyncResourceHandleList.end())
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+ if ((0 == collectionResourceType.length()) || (!resourceHandle))
{
- groupSyncResourceHandleList.erase(iterator);
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : Error! input params are wrong.");
+ return OC_STACK_INVALID_PARAM;
}
- }
-
- return OC_STACK_NO_RESOURCE;
-}
-OCStackResult GroupSynchronization::joinGroup(std::string collectionResourceType,
- OCResourceHandle resourceHandle)
-{
- if ((0 != collectionResourceType.length()) && (resourceHandle))
- {
auto resIt = collectionResourceHandleList.find(collectionResourceType);
- if (resIt == groupSyncResourceHandleList.end())
+ if (resIt == collectionResourceHandleList.end())
{
- cout << "GroupSynchronization::joinGroup : error! There is no collection to join"
- << endl;
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : error! There is no collection to join");
return OC_STACK_INVALID_PARAM;
}
OCResourceHandle collectionResHandle = resIt->second;
-
- OCStackResult result = OCPlatform::bindResource(collectionResHandle, resourceHandle);
- if (result != OC_STACK_OK)
- {
- cout << "GroupSynchronization::joinGroup : To bind resource was unsuccessful."
- << "result - " << result << endl;
- return OC_STACK_ERROR;
+ try{
+ OCStackResult result = OCPlatform::bindResource(collectionResHandle, resourceHandle);
+ if (result != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : To bind resource was unsuccessful." \
+ " result - %d", result);
+ return OC_STACK_ERROR;
+ }
+ } catch(OCException &e) {
+ return OC_STACK_INVALID_PARAM;
}
- cout << "GroupSynchronization::joinGroup : "
- << "To bind collectionResHandle and resourceHandle" << endl;
+
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : To bind collectionResHandle and resourceHandle");
std::vector< OCResourceHandle > childHandleList;
deviceResourceHandleList.push_back(resourceHandle);
debugGroupSync();
- }
- else
- {
- cout << "GroupSynchronization::joinGroup : Error! input params are wrong." << endl;
- return OC_STACK_INVALID_PARAM;
- }
- return OC_STACK_OK;
-}
+ return OC_STACK_OK;
+ }
-OCStackResult GroupSynchronization::joinGroup(const std::shared_ptr< OCResource > resource,
- OCResourceHandle resourceHandle)
-{
- if ((resource) && (resourceHandle))
+ OCStackResult GroupSynchronization::joinGroup(const std::shared_ptr< OCResource > resource,
+ OCResourceHandle resourceHandle)
{
- cout << "GroupSynchronization::joinGroup" << endl;
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+ if ((!resource) || (!resourceHandle))
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::joinGroup : Error! Input params are wrong.");
+ return OC_STACK_INVALID_PARAM;
+ }
+
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::joinGroup");
// making representation to join group
std::string method = "joinGroup";
rep.setValue("collectionResourceType", type[0]);
rep.setValue("resourceType", resourceType);
- cout << "\tmethod - " << method << endl;
- cout << "\tcollectionResourceType - " << type[0] << endl;
- cout << "\tresourceType - " << resourceType << endl;
+ OC_LOG_V(DEBUG, TAG, "\tmethod - %s", method.c_str());
+ OC_LOG_V(DEBUG, TAG, "\tcollectionResourceType - %s", type[0].c_str());
+ OC_LOG_V(DEBUG, TAG, "\tresourceType - %s", resourceType.c_str());
// creating group sync resource with the received collection resource.
// entity handler of group sync is used to join group.
std::vector< std::string > resourceInterface;
resourceInterface.push_back(DEFAULT_INTERFACE);
- OCResource::Ptr groupSyncResource = OCPlatform::constructResourceObject(host, uri, 1,
- resourceTypes, resourceInterface);
+ OCResource::Ptr groupSyncResource =
+ OCPlatform::constructResourceObject(host, uri,
+
+ OC_ALL, false,
+ resourceTypes, resourceInterface);
+
+ // OCResource::Ptr groupSyncResource = OCPlatform::constructResourceObject(host, uri,
+ // OC_WIFI, false, resourceTypes, resourceInterface);
+
groupSyncResourceList[type[0]] = groupSyncResource;
- cout << "GroupSynchronization::joinGroup : creating groupSyncResource." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::joinGroup : creating groupSyncResource.");
// Create QueryParameters Map and add query params (if any)
QueryParamsMap queryParamsMap;
std::placeholders::_2, std::placeholders::_3));
if (OC_STACK_OK == result)
{
- cout << "GroupSynchronization::joinGroup : groupSyncResource->put was successful."
- << endl;
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : groupSyncResource->put was successful.");
}
else
{
- cout << "GroupSynchronization::joinGroup : "
- << "groupSyncResource->put was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::joinGroup : groupSyncResource->put was unsuccessful." \
+ "result - %d", result);
}
// saving the remote collection resource.
return OC_STACK_OK;
}
- else
- {
- cout << "GroupSynchronization::joinGroup : Error! Input params are wrong." << endl;
- return OC_STACK_INVALID_PARAM;
- }
-}
-OCStackResult GroupSynchronization::leaveGroup(std::string collectionResourceType,
- OCResourceHandle resourceHandle)
-{
- if ((0 != collectionResourceType.length()) && (resourceHandle))
+ OCStackResult GroupSynchronization::leaveGroup(std::string collectionResourceType,
+ OCResourceHandle resourceHandle)
{
- cout << "GroupSynchronization::leaveGroup : collectionResourceType - "
- << collectionResourceType << endl;
+ if ((0 == collectionResourceType.length()) || (!resourceHandle))
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::leaveGroup : Error! Input params are wrong.");
+ return OC_STACK_INVALID_PARAM;
+ }
- OCResourceHandle collectionResHandle;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::leaveGroup : collectionResourceType - %s",
+ collectionResourceType.c_str());
+ OCResourceHandle collectionResHandle;
auto handleIt = groupSyncResourceHandleList.find(collectionResourceType);
// if groupSyncResourceHandleList has resourceType,
handleIt = collectionResourceHandleList.find(collectionResourceType);
if (handleIt == collectionResourceHandleList.end())
{
- cout << "GroupSynchronization::leaveGroup : "
- << "Error! There is no collection resource handle to leave." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::leaveGroup : Error!" \
+ "There is no collection resource handle to leave.");
return OC_STACK_INVALID_PARAM;
}
collectionResHandle = handleIt->second;
-// cout << "GroupSynchronization::leaveGroup : collection handle uri - "
-// << OCGetResourceUri(collectionResHandle) << endl;
+ if(collectionResHandle == NULL)
+ return OC_STACK_INVALID_PARAM;
- OCStackResult result = OCPlatform::unbindResource(collectionResHandle,
- resourceHandle);
- if (OC_STACK_OK == result)
+ OCStackResult result;
+ try
{
- cout << "GroupSynchronization::leaveGroup : "
- << "To unbind resource was successful." << endl;
- }
- else
- {
- cout << "GroupSynchronization::leaveGroup : "
- << "To unbind resource was unsuccessful. result - " << result << endl;
+ result = OCPlatform::unbindResource(collectionResHandle, resourceHandle);
+ if (OC_STACK_OK == result)
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::leaveGroup : To unbind resource was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "To unbind resource was unsuccessful. result - %d", result);
+ return result;
+ }
+ } catch(OCException &e) {
+ OC_LOG_V(DEBUG, TAG, "ERROR : %s", e.reason().c_str());
+ return OC_STACK_NO_RESOURCE;
}
- auto It = std::find(deviceResourceHandleList.begin(),
- deviceResourceHandleList.end(), resourceHandle);
+ auto It = std::find(deviceResourceHandleList.begin(), deviceResourceHandleList.end(),
+ resourceHandle);
if (It == deviceResourceHandleList.end()) // there is no resource handle to find
{
- result = OCPlatform::unregisterResource(resourceHandle);
- if (OC_STACK_OK == result)
+ try
{
- cout << "GroupSynchronization::leaveGroup : "
- << "To unregister resource was successful." << endl;
- }
- else
+ result = OCPlatform::unregisterResource(resourceHandle);
+ if (OC_STACK_OK == result)
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "To unregister resource was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "To unregister resource was unsuccessful. result - %d", result);
+ return result;
+ }
+ } catch(OCException &e)
{
- cout << "GroupSynchronization::leaveGroup : "
- << "To unregister resource was unsuccessful. result - " << result
- << endl;
+ OC_LOG_V(DEBUG, TAG, "ERROR : %s", e.reason().c_str());
+ return OC_STACK_NO_RESOURCE;
}
}
else
{
- cout << "GroupSynchronization::leaveGroup : "
- << "This resource cannot be unregistered." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "This resource cannot be unregistered.");
deviceResourceHandleList.erase(It);
}
auto handleListIt = childResourceHandleList.find(collectionResHandle);
if (handleListIt == childResourceHandleList.end())
{
- cout << "GroupSynchronization::leaveGroup : "
- << "Error! There is no child resource list to delete." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "Error! There is no child resource list to delete.");
return OC_STACK_INVALID_PARAM;
}
auto childIt = std::find(childList.begin(), childList.end(), resourceHandle);
if (childIt != childList.end())
{
- cout << "GroupSynchronization::groupEntityHandler : "
- << "Found! The resource to leave is found." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::groupEntityHandler : " \
+ "Found! The resource to leave is found.");
childList.erase(childIt);
}
debugGroupSync();
}
- else // requesting to unbind this resourceHandle to the remote collection resource
+
+ return OC_STACK_OK;
+ }
+
+OCStackResult GroupSynchronization::leaveGroup(
+ const std::shared_ptr<OCResource> resource,
+ std::string collectionResourceType, OCResourceHandle resourceHandle)
+ {
+ if ((!resource) || (!resourceHandle))
{
- auto resourceIt = groupSyncResourceList.find(collectionResourceType);
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::joinGroup : Error! Input params are wrong.");
+ return OC_STACK_INVALID_PARAM;
+ }
- if (resourceIt == groupSyncResourceList.end())
- {
- cout << "GroupSynchronization::leaveGroup : "
- << "Error! There is no collectin resource type to leave." << endl;
- return OC_STACK_INVALID_PARAM;
- }
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::joinGroup");
- std::shared_ptr< OCResource > resource = resourceIt->second;
-// cout << "GroupSynchronization::leaveGroup : group sync resource uri - "
-// << resource->uri() << endl;
+ // making representation to join group
+ std::vector< std::string > type = resource->getResourceTypes();
+ std::string host = resource->host();
+ std::string uri = resource->uri() + "/groupsync";
- handleIt = collectionResourceHandleList.find(collectionResourceType);
- if (handleIt == collectionResourceHandleList.end())
- {
- cout << "GroupSynchronization::leaveGroup : "
- << "Error! There is no collection resource handle to leave." << endl;
- return OC_STACK_INVALID_PARAM;
- }
+ std::vector< std::string > resourceTypes;
+ std::string temp;
+ for (unsigned int i = 0; i < type.size(); ++i)
+ {
+ temp = type[0] + ".groupsync";
+ resourceTypes.push_back(temp);
+ }
- collectionResHandle = handleIt->second;
+ std::vector< std::string > resourceInterface;
+ resourceInterface.push_back(DEFAULT_INTERFACE);
+
+ OCResource::Ptr groupSyncResource;
+ groupSyncResource = OCPlatform::constructResourceObject(host, uri,
+ OC_ALL, false,
+ resourceTypes, resourceInterface);
+ // groupSyncResource = OCPlatform::constructResourceObject(host, uri,
+ // OC_WIFI, false, resourceTypes, resourceInterface);
+
+ // making representation to leave group
+ std::string method = "leaveGroup";
+// std::string type = OCGetResourceTypeName(collectionResourceType, 0);
+ std::string resourceType;
+ resourceType.append(OCGetResourceTypeName(resourceHandle, 0));
+
+ OCRepresentation rep;
+ rep.setValue("method", method);
+ rep.setValue("collectionResourceType", collectionResourceType);
+ rep.setValue("resourceType", resourceType);
+
+ OC_LOG_V(DEBUG, TAG, "\tmethod - %s", method.c_str());
+ OC_LOG_V(DEBUG, TAG, "\tcollectionResourceType - %s", collectionResourceType.c_str());
+ OC_LOG_V(DEBUG, TAG, "\tresourceType - %s", resourceType.c_str());
+
+ QueryParamsMap queryParamsMap;
+
+ // request to leave group to the remote group sync resource
+ OCStackResult result = groupSyncResource->put(rep, queryParamsMap,
+ std::bind(&GroupSynchronization::onLeaveGroup, this, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3));
+ if (OC_STACK_OK == result)
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "groupSyncResource->put was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::leaveGroup : " \
+ "groupSyncResource->put was unsuccessful. result - %d", result);
+ }
+ return result;
+ }
- // making representation to leave group
- std::string method = "leaveGroup";
- std::string type = OCGetResourceTypeName(collectionResHandle, 0);
- std::string resourceType;
- resourceType.append(OCGetResourceTypeName(resourceHandle, 0));
+ void GroupSynchronization::deleteGroup(std::string collectionResourceType)
+ {
+ if (0 == collectionResourceType.length())
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::deleteGroup : Error! Input params are wrong.");
+ return;
+ }
- OCRepresentation rep;
- rep.setValue("method", method);
- rep.setValue("collectionResourceType", type);
- rep.setValue("resourceType", resourceType);
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup");
- cout << "\tmethod - " << method << endl;
- cout << "\tcollectionResourceType - " << type << endl;
- cout << "\tresourceType - " << resourceType << endl;
+ OCStackResult result;
+ OCResourceHandle resourceHandle;
- QueryParamsMap queryParamsMap;
+ auto handleIt = groupSyncResourceHandleList.find(collectionResourceType);
- // request to leave group to the remote group sync resource
- OCStackResult result = resource->put(rep, queryParamsMap,
- std::bind(&GroupSynchronization::onLeaveGroup, this, std::placeholders::_1,
- std::placeholders::_2, std::placeholders::_3));
+ // if groupSyncResourceHandleList has resourceType,
+ // group sync of this app created collection resource.
+ if (handleIt != groupSyncResourceHandleList.end())
+ {
+ resourceHandle = handleIt->second; // group sync resource handle
+ result = OCPlatform::unregisterResource(resourceHandle);
if (OC_STACK_OK == result)
{
- cout << "GroupSynchronization::leaveGroup : "
- << "groupSyncResource->put was successful." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unregister group sync resource handle was successful.");
}
else
{
- cout << "GroupSynchronization::leaveGroup : "
- << "groupSyncResource->put was unsuccessful. result - " << result
- << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unregister group sync resource handle was unsuccessful. " \
+ "result - %d", result);
}
- // deleting all remote resources. These are copied in onGetJoinedRemoteChild()
- deleteGroup(collectionResourceType);
+ groupSyncResourceHandleList.erase(handleIt);
}
- }
- else
- {
- cout << "GroupSynchronization::leaveGroup : Error! Input params are wrong." << endl;
- return OC_STACK_INVALID_PARAM;
- }
-
- return OC_STACK_OK;
-}
-
-void GroupSynchronization::deleteGroup(std::string collectionResourceType)
-{
- if (0 != collectionResourceType.length())
- {
- cout << "GroupSynchronization::deleteGroup" << endl;
- OCStackResult result;
+ auto resourceIt = groupSyncResourceList.find(collectionResourceType);
+ if (resourceIt != groupSyncResourceList.end())
+ {
+ groupSyncResourceList.erase(resourceIt);
+ }
- auto handleIt = collectionResourceHandleList.find(collectionResourceType);
+ handleIt = collectionResourceHandleList.find(collectionResourceType);
if (handleIt == collectionResourceHandleList.end())
{
- cout << "GroupSynchronization::deleteGroup : "
- << "Error! There is no collection resource handle to delete." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "Error! There is no collection resource handle to delete.");
return;
}
OCResourceHandle collectionResHandle = handleIt->second;
auto handleListIt = childResourceHandleList.find(collectionResHandle);
if (handleListIt == childResourceHandleList.end())
{
- cout << "GroupSynchronization::deleteGroup : "
- << "Error! There is no child resource list to delete." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "There is no child resource list to delete.");
+
+ result = OCPlatform::unregisterResource(collectionResHandle);
+ if (result == OC_STACK_OK)
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unregister collection resource handle was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ " To unregister collection resource handle was unsuccessful. result - %d",
+ result);
+ }
+
+ debugGroupSync();
return;
}
+
std::vector< OCResourceHandle > childList = handleListIt->second;
childResourceHandleList.erase(handleListIt);
result = OCPlatform::unbindResources(collectionResHandle, childList);
if (OC_STACK_OK == result)
{
- cout << "GroupSynchronization::deleteGroup : "
- << "To unbind resources was successful." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unbind resources was successful.");
}
else
{
- cout << "GroupSynchronization::deleteGroup : "
- << "To unbind resources was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unbind resources was unsuccessful. result - %d", result);
}
result = OCPlatform::unregisterResource(collectionResHandle);
- if (result != OC_STACK_OK)
+ if (result == OC_STACK_OK)
{
- cout << "GroupSynchronization::deleteGroup : "
- << "To unregister collection resource handle was successful." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ "To unregister collection resource handle was successful.");
}
else
{
- cout << "GroupSynchronization::deleteGroup : "
- << " To unregister collection resource handle was unsuccessful. result - "
- << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::deleteGroup : " \
+ " To unregister collection resource handle was unsuccessful. result - %d",
+ result);
}
- OCResourceHandle resourceHandle;
std::vector< OCResourceHandle >::iterator It;
for (unsigned int i = 0; i < childList.size(); i++)
result = OCPlatform::unregisterResource(resourceHandle);
if (OC_STACK_OK == result)
{
- cout << "GroupSynchronization::deleteGroup : UnregisterResource(" << i + 1
- << ") was successful." << endl;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::deleteGroup : UnregisterResource(%d)" \
+ " was successful.", i + 1);
}
else
{
- cout << "GroupSynchronization::deleteGroup : UnregisterResource(" << i + 1
- << ") was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::deleteGroup : UnregisterResource(%d)" \
+ " was unsuccessful. result - ", i + 1, result);
}
}
}
- handleIt = groupSyncResourceHandleList.find(collectionResourceType);
-
- // if groupSyncResourceHandleList has resourceType,
- // group sync of this app created collection resource.
- if (handleIt != groupSyncResourceHandleList.end())
- {
- resourceHandle = handleIt->second; // group sync resource handle
- result = OCPlatform::unregisterResource(resourceHandle);
- if (OC_STACK_OK == result)
- {
- cout << "GroupSynchronization::deleteGroup : "
- << "To unregister group sync resource handle was successful." << endl;
- }
- else
- {
- cout << "GroupSynchronization::deleteGroup : "
- << "To unregister group sync resource handle was unsuccessful. "
- << "result - " << result << endl;
- }
-
- groupSyncResourceHandleList.erase(handleIt);
- }
-
- auto resourceIt = groupSyncResourceList.find(collectionResourceType);
- if (resourceIt != groupSyncResourceList.end())
- {
- groupSyncResourceList.erase(resourceIt);
- }
-
debugGroupSync();
}
- else
+
+ std::map< std::string, OCResourceHandle > GroupSynchronization::getGroupList()
{
- cout << "GroupSynchronization::deleteGroup : Error! Input params are wrong." << endl;
+ return collectionResourceHandleList;
}
-}
-std::map< std::string, OCResourceHandle > GroupSynchronization::getGroupList()
-{
- return collectionResourceHandleList;
-}
-
-OCEntityHandlerResult GroupSynchronization::groupEntityHandler(
- const std::shared_ptr< OCResourceRequest > request)
-{
- cout << "GroupSynchronization::groupEntityHandler\n";
-
- if (request)
+ OCEntityHandlerResult GroupSynchronization::groupEntityHandler(
+ const std::shared_ptr< OCResourceRequest > request)
{
- // Get the request type and request flag
- std::string requestType = request->getRequestType();
- int requestFlag = request->getRequestHandlerFlag();
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::groupEntityHandler");
- if (requestFlag == RequestHandlerFlag::InitFlag)
+ if (request)
{
- cout << "\trequestFlag : Init\n";
+ // Get the request type and request flag
+ std::string requestType = request->getRequestType();
+ int requestFlag = request->getRequestHandlerFlag();
- // entity handler to perform resource initialization operations
- }
- else if (requestFlag == RequestHandlerFlag::RequestFlag)
- {
- cout << "\trequestFlag : Request\n";
-
- // If the request type is GET
- if (requestType == "GET")
- {
- cout << "\t\trequestType : GET\n";
- }
- else if (requestType == "PUT")
+ if (requestFlag == RequestHandlerFlag::RequestFlag)
{
- cout << "\t\trequestType : PUT\n";
-
- //get method name, group resource type and resource type to join group
- OCRepresentation rp = request->getResourceRepresentation();
- std::string methodType = rp.getValue< std::string >("method");
- std::string collectionResourceType = rp.getValue< std::string >(
- "collectionResourceType");
- std::string resourceType = rp.getValue< std::string >("resourceType");
-
- cout << "\t\t\tmethod : " << methodType << endl;
- cout << "\t\t\tcollection resourceType : " << collectionResourceType << endl;
- cout << "\t\t\tresourceType : " << resourceType << endl;
-
- auto handleIt = collectionResourceHandleList.find(collectionResourceType);
- if (handleIt == collectionResourceHandleList.end())
- {
- cout << "GroupSynchronization::groupEntityHandler : "
- << "Error! There is no collection resource handle to delete."
- << endl;
- return OC_EH_ERROR;
- }
- collectionResourceHandle = handleIt->second;
- // in case of join group it is used in onFindResource()
+ OC_LOG(DEBUG, TAG, "\trequestFlag : Request");
- if (methodType == "joinGroup")
+ // If the request type is GET
+ if (requestType == "GET")
{
- std::string resourceName = "coap://224.0.1.187/oc/core?rt=";
- resourceName += resourceType;
- cout << "\t\t\tresourceName : " << resourceName << endl;
-
- resourceRequest = request;
-
- OCPlatform::findResource("", resourceName,
- std::bind(&GroupSynchronization::onFindResource, this,
- std::placeholders::_1));
+ OC_LOG(DEBUG, TAG, "\t\trequestType : GET");
}
- else if (methodType == "leaveGroup")
+ else if (requestType == "PUT")
{
- auto it = childResourceHandleList.find(collectionResourceHandle);
- if (it == childResourceHandleList.end())
+ OC_LOG(DEBUG, TAG, "\t\trequestType : PUT");
+
+ //get method name, group resource type and resource type to join group
+ OCRepresentation rp = request->getResourceRepresentation();
+ std::string methodType = rp.getValue< std::string >("method");
+ std::string collectionResourceType = rp.getValue< std::string >(
+ "collectionResourceType");
+ std::string resourceType = rp.getValue< std::string >("resourceType");
+
+ OC_LOG_V(DEBUG, TAG, "\t\t\tmethod : %s", methodType.c_str());
+ OC_LOG_V(DEBUG, TAG, "\t\t\tcollection resourceType : %s",
+ collectionResourceType.c_str());
+ OC_LOG_V(DEBUG, TAG, "\t\t\tresourceType : %s", resourceType.c_str());
+
+ auto handleIt = collectionResourceHandleList.find(collectionResourceType);
+ if (handleIt == collectionResourceHandleList.end())
{
- cout << "GroupSynchronization::groupEntityHandler : "
- << "Error! There is no child resource list." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::groupEntityHandler : " \
+ "Error! There is no collection resource handle to delete.");
return OC_EH_ERROR;
}
+ collectionResourceHandle = handleIt->second;
+ // in case of join group it is used in onFindResource()
- std::vector< OCResourceHandle > childList = it->second;
- OCResourceHandle resourceHandle;
- for (auto childIt = childList.begin(); childIt != childList.end();)
+ if (methodType == "joinGroup")
{
- resourceHandle = (*childIt);
- char* type = (char*) OCGetResourceTypeName(resourceHandle, 0);
+ std::string resourceName = OC_MULTICAST_DISCOVERY_URI;
+ resourceName.append("?rt=");
+ resourceName.append(resourceType);
+ OC_LOG_V(DEBUG, TAG, "\t\t\tresourceName : %s", resourceName.c_str());
- if (0 == resourceType.compare(type))
- {
- cout << "GroupSynchronization::groupEntityHandler : "
- << "Found! The resource to leave is found. - " << type
- << endl;
+ resourceRequest = request;
- childIt = childList.erase(childIt++);
+ OCPlatform::findResource("", resourceName,
+ OC_ALL,
+ std::bind(&GroupSynchronization::onFindResource, this,
+ std::placeholders::_1));
- OCStackResult result = OCPlatform::unbindResource(
- collectionResourceHandle, resourceHandle);
- if (OC_STACK_OK == result)
- {
- cout << "GroupSynchronization::groupEntityHandler : "
- << "To unbind resource was successful." << endl;
- }
- else
- {
- cout << "GroupSynchronization::groupEntityHandler : "
- << "To unbind resource was unsuccessful. result - "
- << result << endl;
- }
+ return OC_EH_SLOW;
+ }
+ else if (methodType == "leaveGroup")
+ {
+ auto it = childResourceHandleList.find(collectionResourceHandle);
+ if (it == childResourceHandleList.end())
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::groupEntityHandler : " \
+ "Error! There is no child resource list.");
+ return OC_EH_ERROR;
+ }
- result = OCPlatform::unregisterResource(resourceHandle);
- if (OC_STACK_OK == result)
+ std::vector< OCResourceHandle > childList = it->second;
+ OCResourceHandle resourceHandle;
+ for (auto childIt = childList.begin(); childIt != childList.end();)
+ {
+ resourceHandle = (*childIt);
+ char* type = (char*) OCGetResourceTypeName(resourceHandle, 0);
+
+ if (0 == resourceType.compare(type))
{
- cout << "GroupSynchronization::groupEntityHandler : "
- << "To unregister resource was successful." << endl;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::groupEntityHandler : " \
+ "Found! The resource to leave is found. - %s", type);
+
+ childIt = childList.erase(childIt++);
+
+ OCStackResult result = OCPlatform::unbindResource(
+ collectionResourceHandle, resourceHandle);
+ if (OC_STACK_OK == result)
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::groupEntityHandler : " \
+ "To unbind resource was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::groupEntityHandler : " \
+ "To unbind resource was unsuccessful. result - %d",
+ result);
+ }
+
+ result = OCPlatform::unregisterResource(resourceHandle);
+ if (OC_STACK_OK == result)
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::groupEntityHandler : " \
+ "To unregister resource was successful.");
+ }
+ else
+ {
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::groupEntityHandler : "
+ "To unregister resource was unsuccessful. result - %d",
+ result);
+ }
}
else
{
- cout << "GroupSynchronization::groupEntityHandler : "
- << "To unregister resource was unsuccessful. result - "
- << result << endl;
+ ++childIt;
}
-// break;
- }
- else
- {
- ++childIt;
}
- }
+ childResourceHandleList[collectionResourceHandle] = childList;
- childResourceHandleList[collectionResourceHandle] = childList;
+ debugGroupSync();
- debugGroupSync();
+ auto pResponse = std::make_shared< OC::OCResourceResponse >();
+ pResponse->setRequestHandle(request->getRequestHandle());
+ pResponse->setResourceHandle(request->getResourceHandle());
+ pResponse->setErrorCode(200);
+ pResponse->setResponseResult(OC_EH_OK);
- auto pResponse = std::make_shared< OC::OCResourceResponse >();
- pResponse->setRequestHandle(request->getRequestHandle());
- pResponse->setResourceHandle(request->getResourceHandle());
- pResponse->setErrorCode(200);
- pResponse->setResponseResult(OC_EH_OK);
+ OCRepresentation rep = request->getResourceRepresentation();
+ pResponse->setResourceRepresentation(rep, DEFAULT_INTERFACE);
+ if (OC_STACK_OK == OCPlatform::sendResponse(pResponse))
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::groupEntityHandler : " \
+ "sendResponse is successful.");
+ }
+ }
- OCRepresentation rep = request->getResourceRepresentation();
- pResponse->setResourceRepresentation(rep, DEFAULT_INTERFACE);
- if (OC_STACK_OK == OCPlatform::sendResponse(pResponse))
+ if (methodType != "") //TODO: Check groupmethodtype NULL
{
- cout << "GroupSynchronization::groupEntityHandler : "
- << "sendResponse is successful." << endl;
}
}
-
- if (methodType != "") //TODO: Check groupmethodtype NULL
+ else if (requestType == "POST")
{
+ // POST request operations
+ }
+ else if (requestType == "DELETE")
+ {
+ // DELETE request operations
}
}
- else if (requestType == "POST")
- {
- // POST request operations
- }
- else if (requestType == "DELETE")
+ else if (requestFlag == RequestHandlerFlag::ObserverFlag)
{
- // DELETE request operations
+ OC_LOG(DEBUG, TAG, "\trequestFlag : Observer");
}
}
- else if (requestFlag == RequestHandlerFlag::ObserverFlag)
+ else
{
- cout << "\trequestFlag : Observer\n";
+ OC_LOG(DEBUG, TAG, "Request invalid");
}
- }
- else
- {
- std::cout << "Request invalid" << std::endl;
- }
- return OC_EH_OK;
-}
-
-void GroupSynchronization::onFindGroup(std::shared_ptr< OCResource > resource)
-{
- cout << "GroupSynchronization::onFindGroup" << endl;
+ return OC_EH_OK;
+ }
- try
+ void GroupSynchronization::onFindGroup(std::shared_ptr< OCResource > resource)
{
- if (resource)
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onFindGroup");
+
+ try
{
-//////////////////////////////////////////////////////////////////////////////////////////////////
-////////////debugging
- std::string resourceURI;
- std::string hostAddress;
+ if (resource)
+ {
+ // Debugging
+ std::string resourceURI;
+ std::string hostAddress;
- // Get the resource URI
- resourceURI = resource->uri();
- cout << "\tURI of the resource: " << resourceURI << endl;
+ // Get the resource URI
+ resourceURI = resource->uri();
+ OC_LOG_V(DEBUG, TAG, "\tURI of the resource: %s", resourceURI.c_str());
- // Get the resource host address
- hostAddress = resource->host();
- cout << "\tHost address of the resource: " << hostAddress << endl;
+ // Get the resource host address
+ hostAddress = resource->host();
+ OC_LOG_V(DEBUG, TAG, "\tHost address of the resource: %s", hostAddress.c_str());
- hostAddress.append(resourceURI);
+ hostAddress.append(resourceURI);
- // Get the resource types
- cout << "\tList of resource types: " << endl;
+#ifndef NDEBUG
+ // Get the resource types
+ OC_LOG(DEBUG, TAG, "\tList of resource types: ");
+ for (auto &resourceTypes : resource->getResourceTypes())
+ {
+ OC_LOG_V(DEBUG, TAG, "\t\t", resourceTypes.c_str());
+ }
- for (auto &resourceTypes : resource->getResourceTypes())
- {
- cout << "\t\t" << resourceTypes << endl;
- }
+ // Get the resource interfaces
+ OC_LOG(DEBUG, TAG, "\tList of resource interfaces: ");
+ for (auto &resourceInterfaces : resource->getResourceInterfaces())
+ {
+ OC_LOG_V(DEBUG, TAG, "\t\t", resourceInterfaces.c_str());
+ }
+#endif
- // Get the resource interfaces
- cout << "\tList of resource interfaces: " << endl;
- for (auto &resourceInterfaces : resource->getResourceInterfaces())
- {
- cout << "\t\t" << resourceInterfaces << endl;
+ if (false == IsSameGroup(resource))
+ {
+ saveGroup(resource);
+ findCallback(resource);
+ }
}
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
- if (false == IsSameGroup(resource))
+ else
{
- saveGroup(resource);
- findCallback(resource);
+ // Resource is invalid
+ OC_LOG(DEBUG, TAG, "Resource is invalid");
+ findCallback(NULL);
}
+
+ bIsFinding = false;
}
- else
+ catch (std::exception& e)
{
- // Resource is invalid
- cout << "Resource is invalid" << endl;
- findCallback(NULL);
+ //log(e.what());
}
-
}
- catch (std::exception& e)
+
+ void GroupSynchronization::checkFindGroup(void)
{
- //log(e.what());
- }
-}
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::checkFindGroup");
-void GroupSynchronization::checkFindGroup(void)
-{
- cout << "GroupSynchronization::checkFindGroup" << endl;
+ for (int i = 0; i < 15; i++)
+ {
+ std::chrono::milliseconds workTime(300);
+ std::this_thread::sleep_for(workTime);
- for (int i = 0; i < 15; i++)
- {
- std::chrono::milliseconds workTime(300);
- std::this_thread::sleep_for(workTime);
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+
+ if (false == foundGroupResourceList.empty())
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::checkFoundGroup : " \
+ "Some group is received.");
+ return;
+ }
+ }
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::checkFoundGroup : " \
+ "It is failed to find resource within 3s.");
+
+ onFindGroup(NULL);
+ return;
+ }
+
+ bool GroupSynchronization::IsSameGroup(std::shared_ptr< OCResource > resource)
+ {
std::lock_guard < std::mutex > guard(foundGroupMutex);
- if (false == foundGroupResourceList.empty())
+ if (true == foundGroupResourceList.empty())
{
- cout << "GroupSynchronization::checkFoundGroup : " << "Some group is received."
- << endl;
- return;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::IsSameGroup : There is no found group.");
+ return false;
}
- }
- cout << "GroupSynchronization::checkFoundGroup : "
- << "It is failed to find resource within 3s." << endl;
+ std::string foundHostAddress, savedHostAddress;
+ std::string foundHostUri, savedHostUri;
+ foundHostAddress = resource->host();
+ foundHostUri = resource->uri();
- onFindGroup(NULL);
- return;
-}
+ for (unsigned int i = 0; i < foundGroupResourceList.size(); ++i)
+ {
+ savedHostAddress = (foundGroupResourceList.at(i))->host();
+ savedHostUri = (foundGroupResourceList.at(i))->uri();
-bool GroupSynchronization::IsSameGroup(std::shared_ptr< OCResource > resource)
-{
- std::lock_guard < std::mutex > guard(foundGroupMutex);
+ if (0 == foundHostAddress.compare(savedHostAddress.c_str()))
+ {
+ if( 0 == foundHostUri.compare(savedHostAddress) )
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::IsSameGroup : Found! The same group is found.");
+ return true;
+ }
+ }
+ }
- if (true == foundGroupResourceList.empty())
- {
- cout << "GroupSynchronization::IsSameGroup : There is no found group." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::IsSameGroup : There is no same group.");
return false;
}
- std::string foundHostAddress, savedHostAddress;
- foundHostAddress = resource->host();
-// foundHostAddress.append (resource->uri());
-
- for (unsigned int i = 0; i < foundGroupResourceList.size(); ++i)
+ void GroupSynchronization::saveGroup(std::shared_ptr< OCResource > resource)
{
- savedHostAddress = (foundGroupResourceList.at(i))->host();
-// savedHostAddress.append ((foundGroupResourceList.at(i))->uri());
-// cout << "GroupSynchronization::IsSameGroup : foundHostAddress - " << foundHostAddress
-// << ", savedHostAddress - " << savedHostAddress << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::saveGroup");
- if (0 == foundHostAddress.compare(savedHostAddress.c_str()))
+ std::lock_guard < std::mutex > guard(foundGroupMutex);
+
+ foundGroupResourceList.push_back(resource);
+ }
+
+ void GroupSynchronization::onJoinGroup(const HeaderOptions& headerOptions,
+ const OCRepresentation& rep, const int eCode)
+ {
+ if (eCode != OC_STACK_OK)
{
- cout << "GroupSynchronization::IsSameGroup : Found! The same group is found."
- << endl;
- return true;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onJoinGroup : error - %d", eCode);
+ return;
}
}
- cout << "GroupSynchronization::IsSameGroup : There is no same group." << endl;
- return false;
-}
+ void GroupSynchronization::onFindResource(std::shared_ptr< OCResource > resource)
+ {
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onFindResource");
-void GroupSynchronization::saveGroup(std::shared_ptr< OCResource > resource)
-{
- cout << "GroupSynchronization::saveGroup" << endl;
+ if (resource)
+ {
+ if(NULL == collectionResourceHandle)
+ return;
- std::lock_guard < std::mutex > guard(foundGroupMutex);
+ // start of debugging
+ std::string resourceURI;
+ std::string hostAddress;
- foundGroupResourceList.push_back(resource);
-}
+ // Get the resource URI
+ resourceURI = resource->uri();
+ OC_LOG_V(DEBUG, TAG, "\tURI of the resource: %s", resourceURI.c_str());
-void GroupSynchronization::onJoinGroup(const HeaderOptions& headerOptions,
- const OCRepresentation& rep, const int eCode)
-{
- if (eCode == OC_STACK_OK)
- {
- cout << "GroupSynchronization::onJoinGroup : " << endl;
+ // Get the resource host address
+ hostAddress = resource->host();
+ OC_LOG_V(DEBUG, TAG, "\tHost address of the resource: %s", hostAddress.c_str());
- if (remoteCollectionResource)
- {
- std::string resourceInterface = DEFAULT_INTERFACE;
- QueryParamsMap queryParamsMap;
-
- OCStackResult result = remoteCollectionResource->get("", resourceInterface,
- queryParamsMap,
- std::bind(&GroupSynchronization::onGetJoinedRemoteChild, this,
- std::placeholders::_1, std::placeholders::_2,
- std::placeholders::_3));
- if (OC_STACK_OK == result)
+ hostAddress.append(resourceURI);
+
+#ifndef NDEBUG
+ // Get the resource types
+ OC_LOG(DEBUG, TAG, "\tList of resource types: ");
+ for (auto &resourceTypes : resource->getResourceTypes())
{
- cout << "GroupSynchronization::onJoinGroup : "
- << "remoteCollectionResource->get was successful." << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t%s", resourceTypes.c_str());
}
- else
+
+ // Get the resource interfaces
+ OC_LOG(DEBUG, TAG, "\tList of resource interfaces: ");
+ for (auto &resourceInterfaces : resource->getResourceInterfaces())
{
- cout << "GroupSynchronization::onJoinGroup : "
- << "remoteCollectionResource->get was unsuccessful. result - " << result
- << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t%s", resourceInterfaces.c_str());
}
- }
- }
- else
- {
- cout << "GroupSynchronization::onJoinGroup : error - " << eCode << endl;
- }
-}
+ // end of debugging
+#endif
-void GroupSynchronization::onFindResource(std::shared_ptr< OCResource > resource)
-{
- cout << "GroupSynchronization::onFindResource" << endl;
+ OCResourceHandle resourceHandle;
+ OCStackResult result = OCPlatform::registerResource(resourceHandle, resource);
+ if (result != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::" \
+ "onFindResource - Resource to join creation was unsuccessful. result - %d",
+ result);
+ return;
+ }
- if (resource)
- {
-//////////////////////////////////////////////////////////////////////////////////////////////////
-////////// debugging
- std::string resourceURI;
- std::string hostAddress;
+ result = OCPlatform::bindResource(collectionResourceHandle, resourceHandle);
+ if (result != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onFindResource : " \
+ "To bind resource was unsuccessful. result - %d", result);
+ return;
+ }
- // Get the resource URI
- resourceURI = resource->uri();
- cout << "\tURI of the resource: " << resourceURI << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onFindResource : " \
+ "To bind joinGroupHandle and resourceHandle was successful.");
- // Get the resource host address
- hostAddress = resource->host();
- cout << "\tHost address of the resource: " << hostAddress << endl;
+ auto it = childResourceHandleList.find(collectionResourceHandle);
+ std::vector< OCResourceHandle > childHandleList;
+ if (it != childResourceHandleList.end())
+ {
+ childHandleList = it->second;
+ }
- hostAddress.append(resourceURI);
+ childHandleList.push_back(resourceHandle);
+ childResourceHandleList[collectionResourceHandle] = childHandleList;
- // Get the resource types
- cout << "\tList of resource types: " << endl;
+ auto pResponse = std::make_shared< OC::OCResourceResponse >();
+ pResponse->setRequestHandle(resourceRequest->getRequestHandle());
+ pResponse->setResourceHandle(resourceRequest->getResourceHandle());
+ pResponse->setErrorCode(200);
+ pResponse->setResponseResult(OC_EH_OK);
- for (auto &resourceTypes : resource->getResourceTypes())
- {
- cout << "\t\t" << resourceTypes << endl;
+ OCRepresentation rep = resourceRequest->getResourceRepresentation();
+ pResponse->setResourceRepresentation(rep);
+ try{
+ if (OC_STACK_OK == OCPlatform::sendResponse(pResponse))
+ {
+ OC_LOG(DEBUG, TAG,
+ "GroupSynchronization::onFindResource : sendResponse is successful.");
+ }
+ }
+ catch( OCException &e )
+ {
+ // OC_LOG(DEBUG, TAG, e.what);
+ return;
+ }
}
-
- // Get the resource interfaces
- cout << "\tList of resource interfaces: " << endl;
- for (auto &resourceInterfaces : resource->getResourceInterfaces())
+ else
{
- cout << "\t\t" << resourceInterfaces << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onFindResource : " \
+ "Resource is invalid. So a new Group Resource has to be created.");
}
-//////////////////////////////////////////////////////////////////////////////////////////////////
- OCResourceHandle resourceHandle;
- OCStackResult result = OCPlatform::registerResource(resourceHandle, resource);
- if (result != OC_STACK_OK)
- {
- cout << "GroupSynchronization::"
- << "onFindResource - Resource to join creation was unsuccessful. result - "
- << result << endl;
- return;
- }
-// cout << "GroupSynchronization::onFindResource : creating resourceHandle. resource type - "
-// << OCGetResourceTypeName(resourceHandle, 0) << endl;
+ debugGroupSync();
+ }
- result = OCPlatform::bindResource(collectionResourceHandle, resourceHandle);
- if (result != OC_STACK_OK)
+ void GroupSynchronization::onGetJoinedRemoteChild(const HeaderOptions& headerOptions,
+ const OCRepresentation& rep, const int eCode)
+ {
+ if (eCode != OC_STACK_OK)
{
- cout << "GroupSynchronization::onFindResource : "
- << "To bind resource was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG,
+ "GroupSynchronization::onGetJoinedRemoteChild : error - %d", eCode);
return;
}
- cout << "GroupSynchronization::onFindResource : "
- << "To bind joinGroupHandle and resourceHandle was successful." << endl;
-
- auto it = childResourceHandleList.find(collectionResourceHandle);
- std::vector< OCResourceHandle > childHandleList;
- if (it != childResourceHandleList.end())
- {
- childHandleList = it->second;
- }
- childHandleList.push_back(resourceHandle);
- childResourceHandleList[collectionResourceHandle] = childHandleList;
-
- auto pResponse = std::make_shared< OC::OCResourceResponse >();
- pResponse->setRequestHandle(resourceRequest->getRequestHandle());
- pResponse->setResourceHandle(resourceRequest->getResourceHandle());
- pResponse->setErrorCode(200);
- pResponse->setResponseResult(OC_EH_OK);
-
- OCRepresentation rep = resourceRequest->getResourceRepresentation();
- pResponse->setResourceRepresentation(rep, DEFAULT_INTERFACE);
- if (OC_STACK_OK == OCPlatform::sendResponse(pResponse))
- {
- cout << "GroupSynchronization::onFindResource : sendResponse is successful."
- << endl;
- }
- }
- else
- {
- cout << "GroupSynchronization::onFindResource : "
- << "Resource is invalid. So a new Group Resource has to be created." << endl;
- }
-
- debugGroupSync();
-}
-
-void GroupSynchronization::onGetJoinedRemoteChild(const HeaderOptions& headerOptions,
- const OCRepresentation& rep, const int eCode)
-{
- if (eCode == OC_STACK_OK)
- {
- cout << "GroupSynchronization::onGetJoinedRemoteChild" << endl;
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-////////// debugging
std::string resourceURI;
+ std::vector< OCRepresentation > childList;
+ OCRepresentation child;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild");
+#ifndef NDEBUG
+ // debugging
// Get the resource URI
resourceURI = rep.getUri();
- cout << "\tURI of the resource: " << resourceURI << endl;
+ OC_LOG_V(DEBUG, TAG, "\tURI of the resource: %s", resourceURI.c_str());
// Get the resource types
- cout << "\tList of resource types: " << endl;
+ OC_LOG(DEBUG, TAG, "\tList of resource types: ");
for (auto &resourceTypes : rep.getResourceTypes())
{
- cout << "\t\t" << resourceTypes << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t%s", resourceTypes.c_str());
}
// Get the resource interfaces
- cout << "\tList of resource interfaces: " << endl;
+ OC_LOG(DEBUG, TAG, "\tList of resource interfaces: ");
for (auto &resourceInterfaces : rep.getResourceInterfaces())
{
- cout << "\t\t" << resourceInterfaces << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t%s", resourceInterfaces.c_str());
}
- std::vector< OCRepresentation > childList = rep.getChildren();
- OCRepresentation child;
+ childList = rep.getChildren();
for (unsigned int i = 0; i < childList.size(); ++i)
{
- cout << "\n\tchild resource - " << i + 1 << endl;
+ OC_LOG_V(DEBUG, TAG, "\tchild resource - %d", i + 1);
child = childList.at(i);
resourceURI = child.getUri();
- cout << "\t\tURI of the resource: " << resourceURI << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\tURI of the resource: %s", resourceURI.c_str());
- cout << "\t\tList of resource types: " << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\tList of resource types: ");
for (auto &types : child.getResourceTypes())
{
- cout << "\t\t\t" << types << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t\t%s", types.c_str());
}
- cout << "\tList of resource interfaces: " << endl;
+ OC_LOG(DEBUG, TAG, "\tList of resource interfaces: ");
for (auto &interfaces : child.getResourceInterfaces())
{
- cout << "\t\t\t" << interfaces << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t\t%s", interfaces.c_str());
}
}
-//////////////////////////////////////////////////////////////////////////////////////////////////
+#endif
// creating remote collection resource handle
OCResourceHandle remoteCollectionResourceHandle;
resourceURI = remoteCollectionResource->uri();
std::vector< std::string > types = remoteCollectionResource->getResourceTypes();
- std::vector< std::string > interfaces =
- remoteCollectionResource->getResourceInterfaces();
+ std::vector< std::string > interfaces = remoteCollectionResource->getResourceInterfaces();
OCStackResult result = OCPlatform::registerResource(remoteCollectionResourceHandle,
resourceURI, types[0], interfaces[0], NULL, OC_OBSERVABLE);
if (result != OC_STACK_OK)
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild - "
- << "To register remoteCollectionResourceHandle"
- << " was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild - " \
+ "To register remoteCollectionResourceHandle" \
+ " was unsuccessful. result - %d", result);
return;
}
- cout << "GroupSynchronization::onGetJoinedRemoteChild : "
- "To register remoteCollectionResourceHandle was successful." << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild : " \
+ "To register remoteCollectionResourceHandle was successful.");
// binding remote collection resource handle and resource handle to join
collectionResourceHandleList[types[0]] = remoteCollectionResourceHandle;
result = OCPlatform::bindResource(remoteCollectionResourceHandle, deviceResourceHandle);
if (OC_STACK_OK == result)
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild : "
- << "binding remoteCollectionResourceHandle and deviceResourceHandle"
- << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild : " \
+ "binding remoteCollectionResourceHandle and deviceResourceHandle");
}
else
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild - "
- << "To bind remoteCollectionResourceHandle and deviceResourceHandle "
- << "was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild - " \
+ "To bind remoteCollectionResourceHandle and deviceResourceHandle " \
+ "was unsuccessful. result - %d", result);
}
std::vector< OCResourceHandle > childHandleList;
OCResourceHandle resourceHandle;
for (unsigned int i = 0; i < childList.size(); ++i)
{
- cout << "\tremote resource - " << i + 1 << endl;
+ OC_LOG_V(DEBUG, TAG, "\tremote resource - %d", i + 1);
child = childList.at(i);
resourceURI = child.getUri();
if (0 == types[0].compare(OCGetResourceTypeName(deviceResourceHandle, 0)))
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild : " << types[0]
- << " is bind already." << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild : %s" \
+ " is bind already.", types[0].c_str());
continue;
}
interfaces[0], NULL, OC_OBSERVABLE);
if (OC_STACK_OK == result)
{
- result = OCPlatform::bindResource(remoteCollectionResourceHandle,
- resourceHandle);
+ result = OCPlatform::bindResource(remoteCollectionResourceHandle, resourceHandle);
if (result != OC_STACK_OK)
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild - "
- << "binding remoteCollectionResourceHandle and resourceHandle "
- << "was unsuccessful. result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild - " \
+ "binding remoteCollectionResourceHandle and resourceHandle " \
+ "was unsuccessful. result - %d", result);
OCPlatform::unregisterResource(resourceHandle);
}
childHandleList.push_back(resourceHandle);
- cout << "GroupSynchronization::onGetJoinedRemoteChild : "
- << "binding remoteCollectionResourceHandle and resourceHandle" << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild : " \
+ "binding remoteCollectionResourceHandle and resourceHandle");
}
else
{
- cout << "GroupSynchronization::onGetJoinedRemoteChild - "
- << "To register remoteCollectionResourceHandle was unsuccessful."
- << " result - " << result << endl;
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onGetJoinedRemoteChild - " \
+ "To register remoteCollectionResourceHandle was unsuccessful." \
+ " result - %d", result);
}
}
childResourceHandleList[remoteCollectionResourceHandle] = childHandleList;
// this handle list is used to leave group
- }
- else
- {
- cout << "GroupSynchronization::onGetJoinedRemoteChild : error - " << eCode << endl;
- }
-
- debugGroupSync();
-}
-void GroupSynchronization::onLeaveGroup(const HeaderOptions& headerOptions,
- const OCRepresentation& rep, const int eCode)
-{
- if (eCode == OC_STACK_OK)
- {
- cout << "GroupSynchronization::onLeaveGroup" << endl;
- }
- else
- {
- cout << "GroupSynchronization::onLeaveGroup : error - " << eCode << endl;
+ debugGroupSync();
}
- debugGroupSync();
-}
-void GroupSynchronization::debugGroupSync(void)
-{
- cout << "GroupSynchronization::debugGroupSync" << endl;
-
- unsigned int i;
- std::map< std::string, OCResourceHandle >::iterator handleIt;
- std::map< OCResourceHandle, std::vector< OCResourceHandle > >::iterator childIt;
- std::string type;
- OCResourceHandle resourceHandle;
- std::vector< OCResourceHandle > handleList;
- std::shared_ptr< OCResource > resource;
-
- cout << "Resource Handle Created by App" << endl;
- for (i = 0; i < deviceResourceHandleList.size(); i++)
+ void GroupSynchronization::onLeaveGroup(const HeaderOptions& headerOptions,
+ const OCRepresentation& rep, const int eCode)
{
- resourceHandle = deviceResourceHandleList.at(i);
+ if (eCode != OC_STACK_OK)
+ {
+ OC_LOG_V(DEBUG, TAG, "GroupSynchronization::onLeaveGroup : error - %d", eCode);
+ return;
+ }
- cout << i + 1 << ". details" << endl;
- cout << " uri - " << OCGetResourceUri(resourceHandle) << endl;
- cout << " resource type - " << OCGetResourceTypeName(resourceHandle, 0) << endl;
- cout << " resource interface - " << OCGetResourceInterfaceName(resourceHandle, 0)
- << endl << endl;
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::onLeaveGroup");
+ debugGroupSync();
}
- cout << "\nGroup Sync Resource Handle List. The number is "
- << groupSyncResourceHandleList.size() << endl;
- i = 1;
- for (handleIt = groupSyncResourceHandleList.begin();
- handleIt != groupSyncResourceHandleList.end(); ++handleIt)
+ void GroupSynchronization::debugGroupSync(void)
{
- type = handleIt->first;
- cout << "\t" << i << ". group sync resource type - " << type << endl;
- cout << "\t details" << endl;
-
- resourceHandle = handleIt->second;
- cout << "\t uri - " << OCGetResourceUri(resourceHandle) << endl;
- cout << "\t resource type - " << OCGetResourceTypeName(resourceHandle, 0) << endl;
- cout << "\t resource interface - " << OCGetResourceInterfaceName(resourceHandle, 0)
- << endl << endl;
- ;
- i++;
- }
+#ifndef NDEBUG
+ OC_LOG(DEBUG, TAG, "GroupSynchronization::debugGroupSync");
- cout << "Copied Remote Group Sync Resource List. The number is "
- << groupSyncResourceList.size() << endl;
- std::vector< std::string > list;
- i = 1;
- for (auto resourceIt = groupSyncResourceList.begin();
- resourceIt != groupSyncResourceList.end(); ++resourceIt)
- {
- type = resourceIt->first;
- cout << "\t" << i << ". group sync resource type - " << type << endl;
- cout << "\t details" << endl;
-
- resource = resourceIt->second;
- cout << "\t host - " << resource->host() << endl;
- cout << "\t uri - " << resource->uri() << endl;
- list = resource->getResourceTypes();
- cout << "\t resource type - " << list[0] << endl;
- list = resource->getResourceInterfaces();
- cout << "\t resource interface - " << list[0] << endl << endl;
- i++;
- }
+ unsigned int i;
+ std::map< std::string, OCResourceHandle >::iterator handleIt;
+ std::map< OCResourceHandle, std::vector< OCResourceHandle > >::iterator childIt;
+ std::string type;
+ OCResourceHandle resourceHandle;
+ std::vector< OCResourceHandle > handleList;
+ std::shared_ptr< OCResource > resource;
-// cout << "The number of collection Resource Handle is " << collectionResourceHandleList.size()
-// << endl;
-// cout << "The number of child resource handle list is " << childResourceHandleList.size()
-// << endl;
+ OC_LOG(DEBUG, TAG, "Resource Handle Created by App");
+ for (i = 0; i < deviceResourceHandleList.size(); i++)
+ {
+ resourceHandle = deviceResourceHandleList.at(i);
+
+ OC_LOG_V(DEBUG, TAG, "%d. details", i + 1);
+ OC_LOG_V(DEBUG, TAG, "\turi - %s", OCGetResourceUri(resourceHandle));
+ OC_LOG_V(DEBUG, TAG, "\tresource type - %s",
+ OCGetResourceTypeName(resourceHandle, 0));
+ OC_LOG_V(DEBUG, TAG, "\tresource interface - %s",
+ OCGetResourceInterfaceName(resourceHandle, 0));
+ }
- cout << "Collection Resource Handle List" << endl;
- i = 1;
- for (handleIt = collectionResourceHandleList.begin();
- handleIt != collectionResourceHandleList.end(); ++handleIt)
- {
- type = handleIt->first;
- cout << "\t" << i << ". collection resource type - " << type << endl;
- cout << "\t details" << endl;
+ OC_LOG_V(DEBUG, TAG, "Group Sync Resource Handle List. The number is %d",
+ groupSyncResourceHandleList.size());
- resourceHandle = handleIt->second;
- cout << "\t uri - " << OCGetResourceUri(resourceHandle) << endl;
- cout << "\t resource type - " << OCGetResourceTypeName(resourceHandle, 0) << endl;
- cout << "\t resource interface - " << OCGetResourceInterfaceName(resourceHandle, 0)
- << endl << endl;
+ i = 1;
+ for (handleIt = groupSyncResourceHandleList.begin();
+ handleIt != groupSyncResourceHandleList.end(); ++handleIt)
+ {
+ type = handleIt->first;
+ OC_LOG_V(DEBUG, TAG, "\t%d. group sync resource type - %s", i, type.c_str());
+ OC_LOG(DEBUG, TAG, "\tdetails");
+
+ resourceHandle = handleIt->second;
+ OC_LOG_V(DEBUG, TAG, "\turi - %s",
+ OCGetResourceUri(resourceHandle));
+ OC_LOG_V(DEBUG, TAG, "\tresource type - %s",
+ OCGetResourceTypeName(resourceHandle, 0));
+ OC_LOG_V(DEBUG, TAG, "\tresource interface - %s",
+ OCGetResourceInterfaceName(resourceHandle, 0));
+
+ i++;
+ }
- childIt = childResourceHandleList.find(resourceHandle);
- if (childIt != childResourceHandleList.end())
+ OC_LOG_V(DEBUG, TAG, "Copied Remote Group Sync Resource List. The number is %d",
+ groupSyncResourceList.size());
+ std::vector< std::string > list;
+ i = 1;
+ for (auto resourceIt = groupSyncResourceList.begin();
+ resourceIt != groupSyncResourceList.end(); ++resourceIt)
{
- handleList = childIt->second;
- for (unsigned int j = 0; j < handleList.size(); j++)
+ type = resourceIt->first;
+ OC_LOG_V(DEBUG, TAG, "\t%d. group sync resource type - %s", i, type.c_str());
+ OC_LOG(DEBUG, TAG, "\tdetails");
+
+ resource = resourceIt->second;
+ OC_LOG_V(DEBUG, TAG, "\thost - %s", resource->host().c_str());
+ OC_LOG_V(DEBUG, TAG, "\turi - %s", resource->uri().c_str());
+ list = resource->getResourceTypes();
+ OC_LOG_V(DEBUG, TAG, "\tresource type - %s", list[0].c_str());
+ list = resource->getResourceInterfaces();
+ OC_LOG_V(DEBUG, TAG, "\tresource interface - %s", list[0].c_str());
+ i++;
+ }
+
+ OC_LOG(DEBUG, TAG, "Collection Resource Handle List");
+ i = 1;
+ for (handleIt = collectionResourceHandleList.begin();
+ handleIt != collectionResourceHandleList.end(); ++handleIt)
+ {
+ type = handleIt->first;
+ OC_LOG_V(DEBUG, TAG, "\t%d. collection resource type - %s", i, type.c_str());
+ OC_LOG(DEBUG, TAG, "\tdetails");
+
+ resourceHandle = handleIt->second;
+ OC_LOG_V(DEBUG, TAG, "\turi - %s", OCGetResourceUri(resourceHandle));
+ OC_LOG_V(DEBUG, TAG, "\tresource type - %s",
+ OCGetResourceTypeName(resourceHandle, 0));
+ OC_LOG_V(DEBUG, TAG, "\tresource interface - %s",
+ OCGetResourceInterfaceName(resourceHandle, 0));
+
+ childIt = childResourceHandleList.find(resourceHandle);
+ if (childIt != childResourceHandleList.end())
{
+ handleList = childIt->second;
+ for (unsigned int j = 0; j < handleList.size(); j++)
+ {
- cout << "\t\t" << j + 1 << ". child resource details" << endl;
+ OC_LOG_V(DEBUG, TAG, "\t\t%d. child resource details", j + 1);
- resourceHandle = handleList.at(j);
- cout << "\t\t uri - " << OCGetResourceUri(resourceHandle) << endl;
- cout << "\t\t resource type - " << OCGetResourceTypeName(resourceHandle, 0)
- << endl;
- cout << "\t\t resource interface - "
- << OCGetResourceInterfaceName(resourceHandle, 0) << endl << endl;
+ resourceHandle = handleList.at(j);
+ OC_LOG_V(DEBUG, TAG, "\t\turi - %s",
+ OCGetResourceUri(resourceHandle));
+ OC_LOG_V(DEBUG, TAG, "\t\tresource type - %s",
+ OCGetResourceTypeName(resourceHandle, 0));
+ OC_LOG_V(DEBUG, TAG, "\t\tresource interface - %s",
+ OCGetResourceInterfaceName(resourceHandle, 0));
+ }
}
+ i++;
}
-
- i++;
+#endif
}
}
-}