}
OCResourceHandle collectionResHandle = resIt->second;
-
try{
OCStackResult result = OCPlatform::bindResource(collectionResHandle, resourceHandle);
if (result != OC_STACK_OK)
} catch(OCException &e) {
return OC_STACK_INVALID_PARAM;
-
+
}
cout << "GroupSynchronization::joinGroup : "
<< "To bind collectionResHandle and resourceHandle" << endl;
<< endl;
return result;
}
- } catch(OCException &e)
+ } catch(OCException &e)
{
cout << "ERROR : " << e.reason() << endl;
return OC_STACK_NO_RESOURCE;
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);
+ cout << "GroupSynchronization::joinGroup : Error! Input params are wrong." << endl;
+ 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;
- }
+ cout << "GroupSynchronization::joinGroup" << endl;
- std::shared_ptr< OCResource > resource = resourceIt->second;
- if(resource == NULL)
- return OC_STACK_NO_RESOURCE;
-// 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);
- // making representation to leave group
- std::string method = "leaveGroup";
- std::string type = OCGetResourceTypeName(collectionResHandle, 0);
- std::string resourceType;
- resourceType.append(OCGetResourceTypeName(resourceHandle, 0));
+ OCResource::Ptr groupSyncResource;
+#ifdef CA_INT
+ groupSyncResource = OCPlatform::constructResourceObject(host, uri,
+ OC_ETHERNET | OC_WIFI, 1, resourceTypes, resourceInterface);
+#else
+ groupSyncResource = OCPlatform::constructResourceObject(host, uri, 1,
+ resourceTypes, resourceInterface);
+#endif
- OCRepresentation rep;
- rep.setValue("method", method);
- rep.setValue("collectionResourceType", type);
- rep.setValue("resourceType", resourceType);
+ // making representation to leave group
+ std::string method = "leaveGroup";
+// std::string type = OCGetResourceTypeName(collectionResourceType, 0);
+ std::string resourceType;
+ resourceType.append(OCGetResourceTypeName(resourceHandle, 0));
- cout << "\tmethod - " << method << endl;
- cout << "\tcollectionResourceType - " << type << endl;
- cout << "\tresourceType - " << resourceType << endl;
+ OCRepresentation rep;
+ rep.setValue("method", method);
+ rep.setValue("collectionResourceType", collectionResourceType);
+ rep.setValue("resourceType", resourceType);
- QueryParamsMap queryParamsMap;
+ cout << "\tmethod - " << method << endl;
+ cout << "\tcollectionResourceType - " << collectionResourceType << endl;
+ cout << "\tresourceType - " << resourceType << endl;
- // 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 (OC_STACK_OK == result)
- {
- cout << "GroupSynchronization::leaveGroup : "
- << "groupSyncResource->put was successful." << endl;
- }
- else
- {
- cout << "GroupSynchronization::leaveGroup : "
- << "groupSyncResource->put was unsuccessful. result - " << result << endl;
- }
+ QueryParamsMap queryParamsMap;
- // deleting all remote resources. These are copied in onGetJoinedRemoteChild()
- deleteGroup(collectionResourceType);
+ // 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)
+ {
+ cout << "GroupSynchronization::leaveGroup : "
+ << "groupSyncResource->put was successful." << endl;
}
-
- return OC_STACK_OK;
+ else
+ {
+ cout << "GroupSynchronization::leaveGroup : "
+ << "groupSyncResource->put was unsuccessful. result - " << result << endl;
+ }
+ return result;
}
void GroupSynchronization::deleteGroup(std::string collectionResourceType)
return;
}
- cout << "GroupSynchronization::onJoinGroup : " << endl;
-
- 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)
- {
- cout << "GroupSynchronization::onJoinGroup : "
- << "remoteCollectionResource->get was successful." << endl;
- }
- else
- {
- cout << "GroupSynchronization::onJoinGroup : "
- << "remoteCollectionResource->get was unsuccessful. result - " << result
- << endl;
- }
- }
+// cout << "GroupSynchronization::onJoinGroup : " << endl;
+//
+// 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)
+// {
+// cout << "GroupSynchronization::onJoinGroup : "
+// << "remoteCollectionResource->get was successful." << endl;
+// }
+// else
+// {
+// cout << "GroupSynchronization::onJoinGroup : "
+// << "remoteCollectionResource->get was unsuccessful. result - " << result
+// << endl;
+// }
+// }
}
void GroupSynchronization::onFindResource(std::shared_ptr< OCResource > resource)