Modify Architecture about Resource Presence managing by Broker directly instead of DevicePresence.
Add Class DeviceAssociation that manage device handle.
Delete unused function.
Change-Id: I1c9e39d0388ba808169e1c763daba8a8943e3189
Signed-off-by: jyong2.kim <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1372
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
######################################################################
BROKER_SRC_DIR = 'src/'
resourcebroker_src = [
- BROKER_SRC_DIR + 'ResourceBroker.cpp',
+ BROKER_SRC_DIR + 'DeviceAssociation.cpp',
+ BROKER_SRC_DIR + 'DevicePresence.cpp',
BROKER_SRC_DIR + 'ResourcePresence.cpp',
- BROKER_SRC_DIR + 'DevicePresence.cpp']
+ BROKER_SRC_DIR + 'ResourceBroker.cpp'
+ ]
if target_os in ['tizen','android'] :
#define BROKER_TAG PCF("BROKER")
-#define BROKER_TRANSPORT OCConnectivityType::CT_IP_USE_V4
+#define BROKER_TRANSPORT OCConnectivityType::CT_ADAPTER_IP
using namespace OIC::Service;
-struct BrokerRequesterInfo;
-class ResourcePresence;
-class DevicePresence;
-
-enum class DISCOVER_TRANSACTION;
-enum class BROKER_STATE;
-
-typedef std::function<void(std::shared_ptr<OC::OCResource>)> FindCB;
-typedef std::function<DISCOVER_TRANSACTION(std::shared_ptr<PrimitiveResource> resource)> DiscoverCB;
-
-typedef std::function<OCStackResult(BROKER_STATE)> BrokerCB;
-
-typedef std::shared_ptr<PrimitiveResource> PrimitiveResourcePtr;
-typedef std::shared_ptr<BrokerRequesterInfo> BrokerRequesterInfoPtr;
-
-typedef std::shared_ptr<ResourcePresence> ResourcePresencePtr;
-typedef std::shared_ptr<DevicePresence> DevicePresencePtr;
-
/*
* @BROKER_STATE
* brief : resourcePresence state
DESTROYED,
NONE
};
+
/*
* @DEVICE_STATE
* brief : devicePresence state
LOST_SIGNAL
};
+enum class BROKER_MODE
+{
+ DEVICE_PRESENCE_MODE = 0,
+ NON_PRESENCE_MODE
+};
+typedef std::function<OCStackResult(BROKER_STATE)> BrokerCB;
struct BrokerRequesterInfo
{
BrokerCB brockerCB;
};
+typedef std::shared_ptr<BrokerRequesterInfo> BrokerRequesterInfoPtr;
+
+class ResourcePresence;
+class DevicePresence;
+
+typedef std::function<void(std::shared_ptr<OC::OCResource>)> FindCB;
+
+typedef std::shared_ptr<PrimitiveResource> PrimitiveResourcePtr;
+
+typedef std::shared_ptr<ResourcePresence> ResourcePresencePtr;
+typedef std::shared_ptr<DevicePresence> DevicePresencePtr;
typedef OC::OCPlatform::OCPresenceHandle BasePresenceHandle;
typedef std::function<void(OCStackResult, const unsigned int,
--- /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 DEVICEASSOCIATION_H_
+#define DEVICEASSOCIATION_H_
+
+#include <list>
+#include <string>
+#include <algorithm>
+#include <mutex>
+#include <condition_variable>
+
+#include "BrokerTypes.h"
+
+class DeviceAssociation {
+public:
+
+ static DeviceAssociation * getInstance();
+
+ DevicePresencePtr findDevice(const std::string & address);
+ void addDevice(DevicePresencePtr dPresence);
+ void removeDevice(DevicePresencePtr dPresence);
+
+private:
+ DeviceAssociation();
+ ~DeviceAssociation();
+
+ static DeviceAssociation * s_instance;
+ static std::mutex s_mutexForCreation;
+ static std::list< DevicePresencePtr > s_deviceList;
+};
+
+#endif /* DEVICEASSOCIATION_H_ */
class DevicePresence
{
public:
- DevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
-
- DevicePresence();
+ DevicePresence(PrimitiveResourcePtr pResource);
~DevicePresence();
- void createDevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
-
- void addPresenceResource(PrimitiveResourcePtr pResource, BrokerCB _cb);
- ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
- ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource);
+ const std::string getAddress() const;
+ void addPresenceResource(ResourcePresence * rPresence);
private:
- SubscribeCallback pSubscribeRequestCB;
-
- std::unique_ptr<std::list<ResourcePresencePtr>> resourcePresenceList;
+ std::string address;
+ DEVICE_STATE state;
+ bool isWithinTime;
+ std::list<ResourcePresence * > resourcePresenceList;
- BasePresenceHandle presenceHandle;
- PresenceSubscriber presenceSubscriber;
+ SubscribeCallback pSubscribeRequestCB;
TimeoutCallback pTimeoutCB;
- DEVICE_STATE state;
- const std::string address;
+ PresenceSubscriber presenceSubscriber;
- void subscribeCB(OCStackResult ret,const unsigned int seq, const std::string& Hostaddress);
void requestAllResourcePresence();
- bool isWithinTime;
- void TimeOutCB(int msg);
+
+ void subscribeCB(OCStackResult ret,const unsigned int seq, const std::string& Hostaddress);
+ void timeOutCB(int msg);
};
#include <condition_variable>
#include "BrokerTypes.h"
-#include "DevicePresence.h"
+#include "ResourcePresence.h"
class ResourceBroker
{
OCStackResult cancelHostResource(PrimitiveResourcePtr pResource);
-
BROKER_STATE getResourceState(PrimitiveResourcePtr pResource);
-
private:
ResourceBroker();
~ResourceBroker();
static ResourceBroker * s_instance;
static std::mutex s_mutexForCreation;
- static std::unique_ptr<std::list< DevicePresencePtr >> s_presenceList;
-
- ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB cb);
- DevicePresencePtr findDevicePresence(PrimitiveResourcePtr pResource, BrokerCB cb);
-
+ static std::unique_ptr<std::list< ResourcePresencePtr >> s_presenceList;
ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource);
class ResourcePresence
{
public:
- ResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
+ ResourcePresence(PrimitiveResourcePtr pResource);
~ResourcePresence();
void addBrokerRequesterCB(BrokerCB _cb);
void setResourcestate(BROKER_STATE _state);
void executeAllBrokerCB();
+ void changePresenceMode(BROKER_MODE newMode);
+
private:
PrimitiveResourcePtr primitiveResource;
std::unique_ptr<std::list<BrokerRequesterInfoPtr>> requesterList;
BROKER_STATE state;
+ BROKER_MODE mode;
+
GetCallback pGetCB;
- TimeoutCallback pTimeoutCB;
void GetCB(const HeaderOptions &hos, const ResponseStatement& rep, int seq);
+
+ TimeoutCallback pTimeoutCB;
+
bool isWithinTime;
void TimeOutCB(int msg);
+ void registerDevicePresence();
+
};
#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 "DeviceAssociation.h"
+#include "DevicePresence.h"
+
+DeviceAssociation * DeviceAssociation::s_instance = nullptr;
+std::mutex DeviceAssociation::s_mutexForCreation;
+std::list< DevicePresencePtr > DeviceAssociation::s_deviceList;
+
+DeviceAssociation::DeviceAssociation()
+{
+ // TODO Auto-generated constructor stub
+
+}
+
+DeviceAssociation::~DeviceAssociation()
+{
+ // TODO Auto-generated destructor stub
+}
+
+DeviceAssociation * DeviceAssociation::getInstance()
+{
+ if (!s_instance)
+ {
+ s_mutexForCreation.lock();
+ if (!s_instance)
+ {
+ s_instance = new DeviceAssociation();
+ }
+ s_mutexForCreation.unlock();
+ }
+ return s_instance;
+}
+
+DevicePresencePtr DeviceAssociation::findDevice(const std::string & address)
+{
+ DevicePresencePtr retDevice = nullptr;
+ for(auto it : s_deviceList)
+ {
+ if(address == it->getAddress())
+ {
+ retDevice = it;
+ }
+ }
+
+ return retDevice;
+}
+
+void DeviceAssociation::addDevice(DevicePresencePtr dPresence)
+{
+ DevicePresencePtr foundDevice = findDevice(dPresence->getAddress());
+ if(foundDevice == nullptr)
+ {
+ s_deviceList.push_back(dPresence);
+ }
+}
+
+void DeviceAssociation::removeDevice(DevicePresencePtr dPresence)
+{
+ DevicePresencePtr foundDevice = findDevice(dPresence->getAddress());
+ if(foundDevice != nullptr)
+ {
+ s_deviceList.remove(foundDevice);
+ }
+}
#include "DevicePresence.h"
#include "PrimitiveException.h"
-DevicePresence::DevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
-{
- createDevicePresence(pResource, _cb);
-}
-
-DevicePresence::DevicePresence()
-{
-}
-
-DevicePresence::~DevicePresence()
-{
- // TODO Auto-generated destructor stub
-
- resourcePresenceList->clear();
-}
-
-void DevicePresence::createDevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
+DevicePresence::DevicePresence(PrimitiveResourcePtr pResource)
{
pSubscribeRequestCB = std::bind(&DevicePresence::subscribeCB, this,
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
+
const char* log = pResource->getHost().c_str();
OC_LOG_V(DEBUG, BROKER_TAG, "%s",log);
+
try
{
presenceSubscriber
= PresenceSubscriber(pResource->getHost(), BROKER_TRANSPORT, pSubscribeRequestCB);
OC_LOG_V(DEBUG, BROKER_TAG, "subscribe Presence");
- } catch(PrimitiveException e)
+ } catch(PrimitiveException & e)
{
OC_LOG_V(DEBUG, BROKER_TAG, "exception in subscribe Presence %s",e.what());
}
- resourcePresenceList
- = std::unique_ptr<std::list<ResourcePresencePtr>>(new std::list<ResourcePresencePtr>);
- addPresenceResource(pResource, _cb);
state = DEVICE_STATE::REQUESTED;
- pTimeoutCB = std::bind(&DevicePresence::TimeOutCB, this,
- std::placeholders::_1);
+ pTimeoutCB = std::bind(&DevicePresence::timeOutCB, this, std::placeholders::_1);
+
+ isWithinTime = true;
//TODO generate Timer(if(!isTimer))
//register pTimeroutCB
- this->isWithinTime = true;
}
-void DevicePresence::TimeOutCB(int msg)
-{
- this->isWithinTime = false;
- OC_LOG_V(DEBUG, BROKER_TAG, "Timeout execution. will be discard after receiving cb message");
- state = DEVICE_STATE::LOST_SIGNAL;
-}
-void DevicePresence::addPresenceResource(PrimitiveResourcePtr pResource, BrokerCB _cb)
-{
- ResourcePresencePtr newPresenceResource = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
- resourcePresenceList->push_back(newPresenceResource);
+DevicePresence::~DevicePresence()
+{
+ resourcePresenceList.clear();
}
-ResourcePresencePtr DevicePresence::findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
+const std::string DevicePresence::getAddress() const
{
- ResourcePresencePtr retResource(nullptr);
-
- if (resourcePresenceList->empty())// || pResource.isEmpty())
- {
- return retResource;
- }
- else
- {
- std::list<ResourcePresencePtr>::iterator it;
-
- ResourcePresencePtr temp = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
- it = std::find(resourcePresenceList->begin(), resourcePresenceList->end(), temp);
- if(it == resourcePresenceList->end())
- {
- return retResource;
- }
- else
- {
- retResource = *it;
- }
- }
-
- return retResource;
+ return address;
}
-ResourcePresencePtr DevicePresence::findResourcePresence(PrimitiveResourcePtr pResource)
+void DevicePresence::addPresenceResource(ResourcePresence * rPresence)
{
- ResourcePresencePtr retResource(nullptr);
- if (resourcePresenceList->empty())// || pResource.isEmpty())
- {
- return retResource;
- }
- else
- {
- for(auto & it : * resourcePresenceList)
- {
- if(it->getPrimitiveResource() == pResource)
- {
- retResource = it;
- }
- }
- }
- return retResource;
+ resourcePresenceList.push_back(rPresence);
}
void DevicePresence::requestAllResourcePresence()
{
- std::list<ResourcePresencePtr>::iterator it;
- for( auto & it : * resourcePresenceList)
+ for(auto it : resourcePresenceList)
{
it->requestResourceState();
}
void DevicePresence::subscribeCB(OCStackResult ret,
const unsigned int seq, const std::string& hostAddress)
{
+ std::cout << "Call Back Deivce's Presence\n";
const char* log = hostAddress.c_str();
OC_LOG_V(DEBUG, BROKER_TAG, "Received presence CB from: %s",log);
OC_LOG_V(DEBUG, BROKER_TAG, "In subscribeCB: %d",ret);
case OC_STACK_OK:
case OC_STACK_RESOURCE_CREATED:
case OC_STACK_CONTINUE:
-
OC_LOG_V(DEBUG, BROKER_TAG, "SEQ# %d",seq);
state = DEVICE_STATE::ALIVE;
-
OC_LOG_V(DEBUG, BROKER_TAG, "device state : %d",(int)state);
- if(!resourcePresenceList->empty())
+ if(!resourcePresenceList.empty())
{
requestAllResourcePresence();
}
break;
+
case OC_STACK_INVALID_REQUEST_HANDLE:
case OC_STACK_RESOURCE_DELETED:
case OC_STACK_TIMEOUT:
case OC_STACK_COMM_ERROR:
//TODO get request
state = DEVICE_STATE::REQUESTED;
- if(!resourcePresenceList->empty())
+ if(!resourcePresenceList.empty())
{
OC_LOG_V(DEBUG, BROKER_TAG, "ready to execute requestAllResourcePresence()");
requestAllResourcePresence();
}
break;
+
case OC_STACK_PRESENCE_STOPPED:
case OC_STACK_PRESENCE_TIMEOUT:
-
OC_LOG_V(DEBUG, BROKER_TAG, "Server Presence Stop!!");
state = DEVICE_STATE::LOST_SIGNAL;
- for(auto & it : * resourcePresenceList)
- {
- it->setResourcestate(BROKER_STATE::LOST_SIGNAL);
- it->executeAllBrokerCB();
- }
-
+ requestAllResourcePresence();
break;
+
case OC_STACK_PRESENCE_DO_NOT_HANDLE:
OC_LOG_V(DEBUG, BROKER_TAG, "Presence Lost Signal because do not handled");
state = DEVICE_STATE::LOST_SIGNAL;
+ requestAllResourcePresence();
break;
+
default:
+ OC_LOG_V(DEBUG, BROKER_TAG, "Presence Lost Signal because unknown type");
state = DEVICE_STATE::LOST_SIGNAL;
+ requestAllResourcePresence();
break;
}
}
else
{
- OC_LOG_V(DEBUG, BROKER_TAG, "its message is not available because of Timeout msg");
+ OC_LOG_V(DEBUG, BROKER_TAG, "This response is Timeout but device steel alive");
this->state = DEVICE_STATE::ALIVE;
//notify cb message to user.
isWithinTime = true;
}
}
+
+void DevicePresence::timeOutCB(int msg)
+{
+ this->isWithinTime = false;
+ OC_LOG_V(DEBUG, BROKER_TAG, "Timeout execution. will be discard after receiving cb message");
+ state = DEVICE_STATE::LOST_SIGNAL;
+}
ResourceBroker * ResourceBroker::s_instance = NULL;
std::mutex ResourceBroker::s_mutexForCreation;
-std::unique_ptr<std::list< DevicePresencePtr >> ResourceBroker::s_presenceList(nullptr);
+std::unique_ptr<std::list< ResourcePresencePtr >> ResourceBroker::s_presenceList(nullptr);
ResourceBroker::ResourceBroker()
{
// TODO Auto-generated constructor stub
if(s_presenceList == nullptr)
{
- s_presenceList = std::unique_ptr<std::list< DevicePresencePtr >>(new std::list<DevicePresencePtr>);
+ s_presenceList = std::unique_ptr<std::list< ResourcePresencePtr >>(new std::list<ResourcePresencePtr>);
}
}
return ret;
}
- DevicePresencePtr presenceItem = findDevicePresence(pResource, cb);
-
+ ResourcePresencePtr presenceItem = findResourcePresence(pResource);
if(presenceItem == nullptr)
{
- OC_LOG_V(DEBUG, BROKER_TAG, "Not found any Handled Device.");
- OC_LOG_V(DEBUG, BROKER_TAG, "Create New Device Presence Handler.");
-
- DevicePresencePtr newItem = DevicePresencePtr(new DevicePresence());
- newItem->createDevicePresence(pResource, cb);
+ OC_LOG_V(DEBUG, BROKER_TAG, "Not found any Handled Resource.");
+ OC_LOG_V(DEBUG, BROKER_TAG, "Create New Resource Presence Handler.");
- s_presenceList->push_back(newItem);
+ presenceItem = ResourcePresencePtr(new ResourcePresence(pResource));
+ s_presenceList->push_back(presenceItem);
}
else
{
- presenceItem->addPresenceResource(pResource, cb);
+ presenceItem->addBrokerRequesterCB(cb);
}
return ret;
{
BROKER_STATE retState = BROKER_STATE::NONE;
- auto foundResource = findResourcePresence(pResource);
+ ResourcePresencePtr foundResource = findResourcePresence(pResource);
if(foundResource != nullptr)
{
return retState;
}
-
-DevicePresencePtr ResourceBroker::findDevicePresence(PrimitiveResourcePtr pResource, BrokerCB cb)
-{
- DevicePresencePtr retDevice(nullptr);
- if (s_presenceList->empty())// || pResource->isEmpty())
- {
- return retDevice;
- }
- else
- {
- std::list<DevicePresencePtr>::iterator it;
-
- DevicePresencePtr temp = DevicePresencePtr(new DevicePresence(pResource, cb));
- it = std::find(s_presenceList->begin(), s_presenceList->end(), temp);
-
- if(it == s_presenceList->end())
- {
- return retDevice;
- }
- else
- {
- retDevice = *it;
- }
- }
-
- return retDevice;
-}
-
-ResourcePresencePtr ResourceBroker::findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB cb)
-{
- ResourcePresencePtr retResource(nullptr);
- if (s_presenceList->empty())// || pResource.isEmpty())
- {
- return retResource;
- }
- else
- {
- DevicePresencePtr foundDevice = findDevicePresence(pResource, cb);
- retResource = foundDevice->findResourcePresence(pResource, cb);
- }
-
- return retResource;
-}
-
ResourcePresencePtr ResourceBroker::findResourcePresence(PrimitiveResourcePtr pResource)
{
ResourcePresencePtr retResource(nullptr);
- if (s_presenceList->empty())// || pResource->isEmpty())
- {
- return retResource;
- }
- else
+
+ if(s_presenceList->empty() != true)
{
for(auto & it : * s_presenceList)
{
- auto temp = it->findResourcePresence(pResource);
- if(temp != nullptr)
+ PrimitiveResourcePtr temp = it->getPrimitiveResource();
+ if(temp == pResource)
{
- retResource = temp;
+ retResource = it;
+ break;
}
}
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include "ResourcePresence.h"
+#include "DeviceAssociation.h"
+#include "DevicePresence.h"
-ResourcePresence::ResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
+ResourcePresence::ResourcePresence(PrimitiveResourcePtr pResource)
{
primitiveResource = pResource;
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
pTimeoutCB = std::bind(&ResourcePresence::TimeOutCB, this,
std::placeholders::_1);
+
requesterList
= std::unique_ptr<std::list<BrokerRequesterInfoPtr>>(new std::list<BrokerRequesterInfoPtr>);
+
//TODO generate Timer(if(!isTimer))
//register pTimeroutCB
- addBrokerRequesterCB(_cb);
+
state = BROKER_STATE::REQUESTED;
- this->isWithinTime = true;
+ isWithinTime = true;
+
+ mode = BROKER_MODE::NON_PRESENCE_MODE;
+ primitiveResource->requestGet(pGetCB);
+
+ registerDevicePresence();
+}
+
+void ResourcePresence::registerDevicePresence()
+{
+ // find device......
+ std::string deviceAddress = primitiveResource->getHost();
+
+ DevicePresencePtr foundDevice
+ = DeviceAssociation::getInstance()->findDevice(deviceAddress);
+
+ if(foundDevice == nullptr)
+ {
+ foundDevice = DevicePresencePtr(new DevicePresence(primitiveResource));
+ DeviceAssociation::getInstance()->addDevice(foundDevice);
+ }
+ foundDevice->addPresenceResource(this);
}
ResourcePresence::~ResourcePresence()
{
}
+
+ if(mode == BROKER_MODE::NON_PRESENCE_MODE)
+ {
+ // TODO set timer & request get
+ }
}
-/*
- * TODO : getCB logic is not fixed until now. below logic will be used forwarding task.
- *
- * // if(eCode == OC_STACK_OK)
-// {
- OC_LOG_V(DEBUG, BROKER_TAG, "broker state :: %d",(int)state);
- state = BROKER_STATE::ALIVE;
- OC_LOG_V(DEBUG, BROKER_TAG, "broker state changed :: %d",(int)state);
- OC_LOG_V(DEBUG, BROKER_TAG, "GET request was successful");
-// std::cout << "[ResourcePresence]" << "Resource URI: " << rep.getUri() << std::endl;
-// }
-// else
-// {
-// std::cout << "[ResourcePresence]" << "onGET Response error: " << eCode << std::endl;
- if(!requesterList->empty())
- {
- executeAllBrokerCB();
- }
- else
- {
- OC_LOG_V(DEBUG, BROKER_TAG, "None exist resource for request");
- state = BROKER_STATE::DESTROYED;
- }
-// }
- */
PrimitiveResourcePtr ResourcePresence::getPrimitiveResource()
{
{
return state;
}
+
+void ResourcePresence::changePresenceMode(BROKER_MODE newMode)
+{
+ if(newMode != mode)
+ {
+ if(newMode == BROKER_MODE::NON_PRESENCE_MODE)
+ {
+ requestResourceState();
+ }
+ mode = newMode;
+ }
+}