delete PrimitiveResource/DicoverHandler class.
update broker's class name.
remove naming "handler".
Change-Id: Ib89384980562b5b4b5e24db0459fdd49a02411b3
Signed-off-by: jyong2.kim <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1183
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
--- /dev/null
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#ifndef BROKERTYPES_H_
+#define BROKERTYPES_H_
+
+#include <iostream>
+#include <functional>
+
+#include "OCPlatform.h"
+#include "octypes.h"
+
+#include "PrimitiveResource.h"
+
+#define BROKER_TAG PCF("BROKER")
+#define BASE_LAYER_C 0
+#define BROKER_TRANSPORT OCConnectivityType::OC_IPV4
+
+typedef std::function<void(std::shared_ptr<OC::OCResource>)> FindCB;
+
+typedef std::function<OCStackResult(BROKER_STATE)> BrokerCB;
+
+typedef std::function<DISCOVER_TRANSACTION(std::shared_ptr<PrimitiveResource> resource)> DiscoverCB;
+
+enum class DISCOVER_TRANSACTION
+{
+ KEEP = 0,
+ DELETE
+};
+
+enum class BROKER_STATE
+{
+ ALIVE = 0,
+ REQUESTED,
+ LOST_SIGNAL,
+ DESTROYED
+};
+
+typedef OC::OCPlatform::OCPresenceHandle BasePresenceHandle;
+typedef std::function<void(OCStackResult, const unsigned int,
+ const std::string&)> SubscribeCallback;
+
+typedef std::function<void(const HeaderOptions&, const ResponseStatement&, int)> GetCallback;
+
+#endif // BROKERTYPES_H_
--- /dev/null
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#ifndef DEVICEPRESENCE_H_
+#define DEVICEPRESENCE_H_
+
+#include <list>
+#include <string>
+
+#include "BrokerTypes.h"
+#include "ResourcePresence.h"
+
+class DevicePresence
+{
+public:
+ DevicePresence(PrimitiveResource & pResource, BrokerCB _cb);
+ ~DevicePresence();
+
+ DevicePresence * createPresenceHandler(PrimitiveResource & pResource, BrokerCB _cb);
+
+ void addPresenceResource(PrimitiveResource & pResource, BrokerCB _cb);
+ ResourcePresence * findResourcePresence(PrimitiveResource & pResource, BrokerCB _cb);
+
+private:
+
+ SubscribeCallback pSubscribeRequestCB;
+ std::list<ResourcePresence *> * presenceResourceList;
+
+ BasePresenceHandle presenceHandle;
+ void subscribeCB(OCStackResult ret, const unsigned int seq, const std::string& msg);
+
+ const std::string address;
+};
+
+#endif /* DEVICEPRESENCE_H_ */
+++ /dev/null
-/*
- * PresenceChecker.h
- *
- * Created on: May 20, 2015
- * Author: root
- */
-
-#ifndef PRESENCECHECKER_H_
-#define PRESENCECHECKER_H_
-
-// Iotivity Base CAPI
-#include "ocstack.h"
-#include "logger.h"
-class PresenceChecker {
-public:
- PresenceChecker();
- virtual ~PresenceChecker();
- OCStackResult addRequestCB(BrokerCB _cb);
- OCStackResult deleteRequestCB(BrokerCB _cb);
-};
-
-#endif /* PRESENCECHECKER_H_ */
+++ /dev/null
-/*
- * PresenceInfo.h
- *
- */
-
-#ifndef PRESENCEINFO_H_
-#define PRESENCEINFO_H_
-
-#include <iostream>
-#include <functional>
-#include <pthread.h>
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-#include <list>
-#include <condition_variable>
-
-// Iotivity Base CAPI
-#include "ocstack.h"
-#include "logger.h"
-
-#include "PrimitiveResource.h"
-#include "ResourceBroker.h"
-
-enum class BROKER_STATE;
-
-typedef std::function<OCStackResult(BROKER_STATE)> BrokerCB;
-typedef std::function<OCStackApplicationResult(void *, OCDoHandle, OCClientResponse *)> RequestCB;
-
-struct BrokerRequesterInfo {
- BrokerCB brockerCB;
-};
-
-class PresenceInfo: public PrimitiveResource {
-public:
- PresenceInfo(PrimitiveResource & pResource, BrokerCB _cbrequesterList);
- PresenceInfo(std::string _Uri, std::string _Address, BrokerCB _cb);
- ~PresenceInfo();
-
- const RequestCB pRequestCB;
- const BrokerCB brokerCB;
-
- std::list<BrokerRequesterInfo *> * requesterList;
-private:
- OCStackApplicationResult requestCB(void * ctx, OCDoHandle handle,
- OCClientResponse * clientResponse);
-};
-
-#endif /* PRESENCEINFO_H_ */
-
+++ /dev/null
-/*
- * PrimitiveResource.h
- *
- * Created on: May 20, 2015
- * Author: root
- */
-
-#ifndef PRIMITIVERESOURCE_H_
-#define PRIMITIVERESOURCE_H_
-
-class PrimitiveResource {
-public:
- PrimitiveResource();
- PrimitiveResource(std::string _Uri, std::string _Address):Uri(_Uri), Address(_Address){}
- ~PrimitiveResource();
-
- const std::string getUri();
- const std::string getAddress();
-
- const std::string Uri;
- const std::string Address;
-};
-
-#endif /* PRIMITIVERESOURCE_H_ */
-/*
- * ResourceBroker.h
- *
- * Created on: May 20, 2015
- * Author: root
- */
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#ifndef RESOURCEBROKER_H_
#define RESOURCEBROKER_H_
-#include <iostream>
#include <functional>
-#include <pthread.h>
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
#include <list>
+#include <string>
+#include <algorithm>
#include <mutex>
-#include <thread>
#include <condition_variable>
-#include <algorithm>
-
-// Iotivity Base CAPI
-#include "ocstack.h"
-#include "logger.h"
-
-// internal class
-#include "PresenceInfo.h"
-#define CACHE_TAG PCF("BROKER")
+#include "BrokerTypes.h"
+#include "DevicePresence.h"
-
-typedef std::function<OCStackResult(PrimitiveResource * resource)> DiscoverCB;
-enum class BROKER_STATE
+class ResourceBroker
{
- ALIVE = 0,
- REQUESTED,
- LOST_SIGNAL,
- DESTROYED
-};
-class ResourceBroker {
public:
ResourceBroker * getInstance();
- OCStackResult discoverResource(PrimitiveResource & pResource, DiscoverCB cb);
- OCStackResult discoverResource(const std::string uri, const std::string address, DiscoverCB cb);
-
OCStackResult hostResource(PrimitiveResource & pResource, BrokerCB cb);
- OCStackResult hostResource(
- const std::string Uri, const std::string address, BrokerCB cb);
OCStackResult cancelHostResource(PrimitiveResource & pResource);
- OCStackResult cancelHostResource(
- const std::string uri, const std::string address);
OCStackResult getResourceState(PrimitiveResource & pResource);
- OCStackResult getResourceState(
- const std::string address, const std::string uri);
private:
ResourceBroker();
~ResourceBroker();
- bool isPrimitiveResource(PrimitiveResource& pResource, BrokerCB cb);
+
static ResourceBroker * s_instance;
static std::mutex s_mutexForCreation;
- static std::list< PresenceInfo * > s_presenceInfo;
+ static std::list< DevicePresence * > s_presenceList;
+
+ ResourcePresence * findResourcePresence(PrimitiveResource& pResource, BrokerCB cb);
+ DevicePresence * findDevicePresence(PrimitiveResource& pResource, BrokerCB cb);
};
#endif /* RESOURCEBROKER_H_ */
--- /dev/null
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#ifndef RESOURCEPRESENCE_H_
+#define RESOURCEPRESENCE_H_
+
+#include <functional>
+#include <list>
+
+#include "BrokerTypes.h"
+
+struct BrokerRequesterInfo
+{
+ BrokerCB brockerCB;
+};
+
+class ResourcePresence
+{
+public:
+ ResourcePresence(PrimitiveResource & pResource, BrokerCB _cb);
+ ~ResourcePresence();
+
+ void addBrokerRequesterCB(BrokerCB _cb);
+ void removeBrokerRequesterCB(BrokerCB _cb);
+ void removeAllBrokerRequesterCB();
+
+ void requestResourceState();
+
+private:
+ PrimitiveResource & primitiveResource;
+
+ std::list<BrokerRequesterInfo *> * requesterList;
+
+ GetCallback pGetCB;
+ void GetCB(const HeaderOptions &hos, const ResponseStatement& rep, int seq);
+};
+
+#endif /* RESOURCEPRESENCE_H_ */
+
--- /dev/null
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include "DevicePresence.h"
+
+DevicePresence::DevicePresence(PrimitiveResource & pResource, BrokerCB _cb)
+{
+ address = pResource.getHost();
+ pSubscribeRequestCB = std::bind(&DevicePresence::subscribeCB, this,
+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
+
+ presenceResourceList = new std::list<ResourcePresence *>();
+ addPresenceResource(pResource, _cb);
+
+ OC::OCPlatform::subscribePresence(presenceHandle, address,
+ BROKER_TRANSPORT, pSubscribeRequestCB);
+}
+
+DevicePresence::~DevicePresence()
+{
+ // TODO Auto-generated destructor stub
+ OC::OCPlatform::unsubscribePresence(presenceHandle);
+ presenceResourceList->clear();
+ delete presenceResourceList;
+}
+
+void DevicePresence::addPresenceResource(PrimitiveResource & pResource, BrokerCB _cb)
+{
+ ResourcePresence * newPresenceResource = new ResourcePresence(pResource, _cb);
+ presenceResourceList->push_back(newPresenceResource);
+}
+
+ResourcePresence * DevicePresence::findPresenceResource(PrimitiveResource & pResource, BrokerCB _cb)
+{
+ ResourcePresence * retResource = NULL;
+ if (presenceResourceList->empty() || pResource.isEmpty())
+ {
+ return NULL;
+ }
+ else
+ {
+ std::list<ResourcePresence *>::iterator it;
+
+ ResourcePresence * temp = new ResourcePresence(pResource, _cb);
+ it = std::find(presenceResourceList->begin(), presenceResourceList->end(), temp);
+ delete temp;
+
+ if(it == presenceResourceList->end())
+ {
+ return NULL;
+ }
+ else
+ {
+ retResource = it;
+ }
+ }
+
+ return retResource;
+}
+
+void DevicePresence::subscribeCB(OCStackResult ret,
+ const unsigned int seq, const std::string& msg)
+{
+
+}
+++ /dev/null
-/*
- * PresenceChecker.cpp
- *
- * Created on: May 20, 2015
- * Author: root
- */
-
-#include "PresenceChecker.h"
-
-PresenceChecker::PresenceChecker() {
- // TODO Auto-generated constructor stub
-
-}
-
-PresenceChecker::~PresenceChecker() {
- // TODO Auto-generated destructor stub
-}
-
+++ /dev/null
-/*
- * PresenceInfo.cpp
- *
- */
-
-#include "PresenceInfo.h"
-
-PresenceInfo::PresenceInfo(PrimitiveResource & pResource, BrokerCB _cb) :
- Uri(pResource.getUri()), Address(pResource.getAddress()) {
- pRequestCB =(RequestCB) (std::bind(&PresenceInfo::requestCB, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
- requesterList = new std::list<BrokerRequesterInfo *>();
- BrokerRequesterInfo *requester = new BrokerRequesterInfo();
- requester->brockerCB = _cb;
- requesterList.push_back(requester);
-}
-
-PresenceInfo::PresenceInfo(std::string _Uri, std::string _Address, BrokerCB _cb) :
- Uri(_Uri), Address(_Address) {
- pRequestCB =(RequestCB) (std::bind(&PresenceInfo::requestCB, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
- requesterList = new std::list<BrokerRequesterInfo *>();
- BrokerRequesterInfo *requester = new BrokerRequesterInfo();
- requester->brockerCB = _cb;
- requesterList.push_back(requester);
-}
-
-PresenceInfo::~PresenceInfo() {
- // TODO Auto-generated destructor stub
- // delete requester all
-// auto it = requesterList->begin();
-
- requesterList->clear();
- delete requesterList;
-}
-
-OCStackApplicationResult PresenceInfo::requestCB(void * ctx, OCDoHandle handle,
- OCClientResponse * clientResponse) {
- OCStackApplicationResult ret = OC_STACK_DELETE_TRANSACTION;
-
- return ret;
-}
-
-OCStackResult PresenceInfo::addRequestCB(BrokerCB _cb) {
- OCStackResult ret = OC_STACK_ERROR;
-
- requesterList->push_back(_cb);
-
- return ret;
-}
+++ /dev/null
-/*
- * PrimitiveResource.cpp
- *
- * Created on: May 20, 2015
- * Author: root
- */
-
-#include "PrimitiveResource.h"
-
-PrimitiveResource::PrimitiveResource() {
- // TODO Auto-generated constructor stub
-
-}
-
-PrimitiveResource::~PrimitiveResource() {
- // TODO Auto-generated destructor stub
-}
-
-/*
- * ResourceBroker.cpp
- *
- */
-
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include "BrokerTypes.h"
#include "ResourceBroker.h"
#define OIC_COAP "coap://"
#define DEFAULT_CONTEXT_VALUE 0x99
-typedef std::function<OCStackApplicationResult(void *, OCDoHandle, OCClientResponse *)> FindCB;
-
-ResourceBroker * ResourceBroker::s_instance = null;
+ResourceBroker * ResourceBroker::s_instance = NULL;
+std::list< DevicePresence * > ResourceBroker::s_presenceList = NULL;
-class DiscoverResource: public PrimitiveResource {
-public:
- DiscoverResource();
- DiscoverResource(PrimitiveResource & pResource, DiscoverCB _cb) :
- Uri(pResource.getUri()), Address(pResource.getAddress()), discovercb(_cb) {
- pFindCB = (FindCB)(std::bind(&DiscoverResource::findCB,this,std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
- }
- DiscoverResource(std::string _Uri, std::string _Address, DiscoverCB _cb) :
- Uri(_Uri), Address(_Address), discovercb(_cb) {
- pFindCB = (FindCB)(std::bind(&DiscoverResource::findCB, this,std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
+ResourceBroker::ResourceBroker()
+{
+ // TODO Auto-generated constructor stub
+ if(s_presenceList.empty())
+ {
+ s_presenceList = new std::list< DevicePresence * >();
+ }
+}
+
+ResourceBroker::~ResourceBroker()
+{
+ // TODO Auto-generated destructor stub
+ if(!s_presenceList.empty())
+ {
+ s_presenceList.clear();
+ }
+ delete s_presenceList;
+}
+
+ResourceBroker * ResourceBroker::getInstance()
+{
+ if (!s_instance)
+ {
+ s_mutexForCreation.lock();
+ if (!s_instance)
+ {
+ s_instance = new ResourceBroker();
}
- ~DiscoverResource();
- const DiscoverCB discovercb;
- const FindCB pFindCB;
-
-private:
- OCStackApplicationResult findCB(void * ctx, OCDoHandle handle,OCClientResponse * clientResponse)
+ s_mutexForCreation.unlock();
+ }
+ return s_instance;
+}
+
+OCStackResult ResourceBroker::hostResource(PrimitiveResource & pResource, BrokerCB cb)
+{
+ OCStackResult ret = OC_STACK_INVALID_PARAM;
+ if (pResource.getUri().empty() || pResource.getHost().empty())
{
- OCStackApplicationResult ret = OC_STACK_DELETE_TRANSACTION;
- // parse about resource info
-
- // create primitiveResource
- PrimitiveResource * retResource = new PrimitiveResource(this->Uri, this->Address);
- // callback
- this->discovercb(retResource);
- //why using auto_ptr?
- std::auto_ptr bye_bye(this);
- /////////////////////////////////////////////////////////////////////////////
- std::cout << "Is Possible?? : " << this->getAddress() << std::endl;
- /////////////////////////////////////////////////////////////////////////////
return ret;
- }
-};
-
- ResourceBroker::ResourceBroker() {
- // TODO Auto-generated constructor stub
-
- }
-
- ResourceBroker::~ResourceBroker() {
- // TODO Auto-generated destructor stub
- }
-
- ResourceBroker * ResourceBroker::getInstance() {
- if (!s_instance) {
- s_mutexForCreation.lock();
- if (!s_instance) {
- s_instance = new ResourceBroker();
- }
- s_mutexForCreation.unlock();
- }
- return s_instance;
- }
+ }
+ if (cb == NULL)
+ {
+ ret = OC_STACK_INVALID_CALLBACK;
+ return ret;
+ }
- OCStackResult ResourceBroker::discoverResource(const std::string _uri,
- const std::string _address, DiscoverCB _cb) {
- OCStackResult ret = OC_STACK_INVALID_PARAM;
+ DevicePresence * presenceItem = findDevicePresence(pResource, cb);
+ if(presenceItem == NULL)
+ {
+ DevicePresence *newItem = new DevicePresence(pResource, cb);
+ s_presenceList.push_back(newItem);
+ }
+ else
+ {
+ presenceItem->addPresenceResource(pResource, cb);
+ }
- if (_uri.empty() || _address.empty()) {
- return ret;
- }
- if (!_cb) {
- ret = OC_STACK_INVALID_CALLBACK;
- return ret;
- }
+ return ret;
+}
- DiscoverResource * dResource = new DiscoverResource(_uri, _address, _cb);
- OCDoHandle handle;
- OCCallbackData cbData;
- std::string fullAddress = OIC_COAP + _address;
+DevicePresence * ResourceBroker::findDevicePresence(PrimitiveResource& pResource, BrokerCB cb)
+{
+ DevicePresence * retDevice = NULL;
+ if (s_presenceList.empty() || pResource.isEmpty())
+ {
+ return NULL;
+ }
+ else
+ {
+ std::list<DevicePresence *>::iterator it;
- cbData.cb = dResource->pFindCB;
- cbData.context = (void *) DEFAULT_CONTEXT_VALUE;
- cbData.cd = NULL;
+ DevicePresence * temp = new DevicePresence(pResource, cb);
+ it = std::find(s_presenceList.begin(), s_presenceList.end(), temp);
+ delete temp;
- return OCDoResource(&handle, OC_REST_GET, fullAddress.c_str(), _uri.c_str(), 0, OC_ALL,
- OC_LOW_QOS, &cbData, NULL, 0);
+ if(it == s_presenceList.end())
+ {
+ return NULL;
}
-
- OCStackResult ResourceBroker::discoverResource(PrimitiveResource & pResource,
- DiscoverCB _cb) {
- return this->discoverResource(pResource.getUri(), pResource.getAddress(), _cb);
+ else
+ {
+ retDevice = it;
}
+ }
- OCStackResult ResourceBroker::hostResource(const std::string _uri,const std::string _address, BrokerCB _cb)
- {
- OCStackResult ret = OC_STACK_INVALID_PARAM;
- if (uri.empty() || address.empty()) {
- return ret;
- }
- if (!cb) {
- ret = OC_STACK_INVALID_CALLBACK;
- return ret;
- }
+ return retDevice;
+}
- return ret;
- }
- OCStackResult ResourceBroker::hostResource(PrimitiveResource & pResource, BrokerCB cb)
- {
- OCStackResult ret = OC_STACK_INVALID_PARAM;
- if (pResource.getUri().empty() || pResource.getAddress().empty()) {
- return ret;
- }
- if (!cb) {
- ret = OC_STACK_INVALID_CALLBACK;
- return ret;
- }
+ResourcePresence * ResourceBroker::findResourcePresence(PrimitiveResource & pResource, BrokerCB cb)
+{
+ ResourcePresence * retResource = NULL;
+ if (s_presenceList.empty() || pResource.isEmpty())
+ {
+ return NULL;
+ }
+ else
+ {
+ DevicePresence * foundDevice = findDevicePresence(pResource, cb);
+ retResource = foundDevice->findResourcePresence(pResource, cb);
+ }
- return ret;
- }
- bool ResourceBroker::isPrimitiveResource(PrimitiveResource& pResource, BrokerCB cb)
- {
- if(s_presenceInfo.empty())
- return false;
- else
- {
- std::list<PresenceInfo*>::iterator it;
- PresenceInfo item = new PresenceInfo(pResource.getUri(), pResource.getAddress(), cb);
- item.PrimitiveResource(pResource.getUri(),pResource.getAddress());
- it = std::find(s_presenceInfo.begin(),s_presenceInfo.end(),item);
- if(it==s_presenceInfo.end())
- return false;
- else
- return true;
- }
- }
+ return retResource;
+}
--- /dev/null
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include "ResourcePresence.h"
+
+ResourcePresence::ResourcePresence(PrimitiveResource & pResource, BrokerCB _cb)
+{
+ primitiveResource = pResource;
+
+ pGetCB = std::bind(&ResourcePresence::GetCB, this,
+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
+
+ requesterList = new std::list<BrokerRequesterInfo *>();
+ addBrokerRequesterCB(_cb);
+}
+
+ResourcePresence::~ResourcePresence()
+{
+ requesterList->clear();
+ delete requesterList;
+}
+
+void ResourcePresence::addBrokerRequesterCB(BrokerCB _cb)
+{
+ BrokerRequesterInfo *newRequester = new BrokerRequesterInfo();
+ newRequester->brockerCB = _cb;
+ requesterList->push_back(newRequester);
+}
+
+void ResourcePresence::requestResourceState()
+{
+ primitiveResource.requestGet(pGetCB);
+}
+
+void ResourcePresence::GetCB(const HeaderOptions &hos, const ResponseStatement& rep, int seq)
+{
+
+}