Add ResourceBroker Sconscript
authorjyong2.kim <jyong2.kim@samsung.com>
Wed, 10 Jun 2015 10:01:16 +0000 (19:01 +0900)
committerUze Choi <uzchoi@samsung.com>
Thu, 11 Jun 2015 13:12:12 +0000 (13:12 +0000)
fix build error and syntax error.
change from normal pointer to smart pointer.

Change-Id: I52ea5b2cf6b7da34fed9f9271e942f45185fae20
Signed-off-by: jyong2.kim <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1231
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/basis/resourceBroker/SConscript [new file with mode: 0644]
service/basis/resourceBroker/include/BrokerTypes.h
service/basis/resourceBroker/include/DevicePresence.h
service/basis/resourceBroker/include/ResourceBroker.h
service/basis/resourceBroker/include/ResourcePresence.h
service/basis/resourceBroker/src/DevicePresence.cpp
service/basis/resourceBroker/src/ResourceBroker.cpp
service/basis/resourceBroker/src/ResourcePresence.cpp

diff --git a/service/basis/resourceBroker/SConscript b/service/basis/resourceBroker/SConscript
new file mode 100644 (file)
index 0000000..b9169ac
--- /dev/null
@@ -0,0 +1,74 @@
+#******************************************************************
+#
+# 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.
+#
+#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+##
+# ResourceBroker build script
+##
+
+Import('env')
+
+if env.get('RELEASE'):
+       env.AppendUnique(CCFLAGS = ['-Os'])
+       env.AppendUnique(CPPDEFINES = ['NDEBUG'])
+else:
+       env.AppendUnique(CCFLAGS = ['-g'])
+
+if env.get('LOGGING'):
+       env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+
+lib_env = env.Clone()
+SConscript(env.get('SRC_DIR') + '/service/third_party_libs.scons', 'lib_env')
+resourcebroker_env = lib_env.Clone()
+
+target_os = env.get('TARGET_OS')
+######################################################################
+# Build flags
+######################################################################
+resourcebroker_env.AppendUnique(CPPPATH = ['include'])
+resourcebroker_env.AppendUnique(CPPPATH = ['../common/primitiveResource/include'])
+resourcebroker_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'libcoap'])
+
+if target_os not in ['windows', 'winrt']:
+       resourcebroker_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-fmessage-length=0', '-std=c++0x'])
+
+if target_os == 'linux':
+       resourcebroker_env.AppendUnique(LIBS = ['pthread'])
+
+######################################################################
+# Source files and Targets
+######################################################################
+CACHE_SRC_DIR = 'src/'
+resourcebroker_src = [
+        CACHE_SRC_DIR + 'ResourceBroker.cpp',
+        CACHE_SRC_DIR + 'ResourcePresence.cpp',
+        CACHE_SRC_DIR + '../../common/primitiveResource/src/PrimitiveResource.cpp',
+        CACHE_SRC_DIR + '../../common/primitiveResource/src/ResourceAttributes.cpp',
+        CACHE_SRC_DIR + 'DevicePresence.cpp']
+
+if target_os in ['tizen','android'] :
+    resourcebrokersdk = resourcebroker_env.SharedLibrary('ResourceBroker', resourcebroker_src)
+else :
+    resourcebrokersdk = resourcebroker_env.StaticLibrary('ResourceBroker', resourcebroker_src)
+
+resourcebroker_env.InstallTarget(resourcebrokersdk, 'libResouceBroker')
+
+# Go to build sample apps
+#SConscript('SampleApp/SConscript')
+
index 13cf464..c8c624d 100755 (executable)
 #include "PrimitiveResource.h"
 
 #define BROKER_TAG PCF("BROKER")
-#define BASE_LAYER_C 0
 #define BROKER_TRANSPORT OCConnectivityType::OC_IPV4
 
+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::function<DISCOVER_TRANSACTION(std::shared_ptr<PrimitiveResource> resource)> DiscoverCB;
+typedef std::shared_ptr<PrimitiveResource> PrimitiveResourcePtr;
+typedef std::shared_ptr<BrokerRequesterInfo> BrokerRequesterInfoPtr;
+
+typedef std::shared_ptr<ResourcePresence> ResourcePresencePtr;
+typedef std::shared_ptr<DevicePresence> DevicePresencePtr;
 
 enum class DISCOVER_TRANSACTION
 {
@@ -53,6 +64,11 @@ enum class BROKER_STATE
     DESTROYED
 };
 
+struct BrokerRequesterInfo
+{
+    BrokerCB brockerCB;
+};
+
 typedef OC::OCPlatform::OCPresenceHandle BasePresenceHandle;
 typedef std::function<void(OCStackResult, const unsigned int,
         const std::string&)> SubscribeCallback;
index 05c7882..1d57f99 100755 (executable)
 class DevicePresence
 {
 public:
-    DevicePresence(PrimitiveResource & pResource, BrokerCB _cb);
+    DevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
     ~DevicePresence();
 
-    DevicePresence * createPresenceHandler(PrimitiveResource & pResource, BrokerCB _cb);
-
-    void addPresenceResource(PrimitiveResource & pResource, BrokerCB _cb);
-    ResourcePresence * findResourcePresence(PrimitiveResource & pResource, BrokerCB _cb);
+    void addPresenceResource(PrimitiveResourcePtr pResource, BrokerCB _cb);
+    ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
 
 private:
 
     SubscribeCallback pSubscribeRequestCB;
-    std::list<ResourcePresence *> * presenceResourceList;
+    std::unique_ptr<std::list<ResourcePresencePtr>> presenceResourceList;
 
     BasePresenceHandle presenceHandle;
     void subscribeCB(OCStackResult ret, const unsigned int seq, const std::string& msg);
index 6af94f3..f0b70a7 100755 (executable)
@@ -36,11 +36,11 @@ class ResourceBroker
 public:
     ResourceBroker * getInstance();
 
-    OCStackResult hostResource(PrimitiveResource & pResource, BrokerCB cb);
+    OCStackResult hostResource(PrimitiveResourcePtr pResource, BrokerCB cb);
 
-    OCStackResult cancelHostResource(PrimitiveResource & pResource);
+    OCStackResult cancelHostResource(PrimitiveResourcePtr pResource);
 
-    OCStackResult getResourceState(PrimitiveResource & pResource);
+    OCStackResult getResourceState(PrimitiveResourcePtr pResource);
 
 private:
     ResourceBroker();
@@ -48,10 +48,10 @@ private:
 
     static ResourceBroker * s_instance;
     static std::mutex s_mutexForCreation;
-    static std::list< DevicePresence * >  s_presenceList;
+    static std::unique_ptr<std::list< DevicePresencePtr >>  s_presenceList;
 
-    ResourcePresence * findResourcePresence(PrimitiveResource& pResource, BrokerCB cb);
-    DevicePresence * findDevicePresence(PrimitiveResource& pResource, BrokerCB cb);
+    ResourcePresencePtr findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB cb);
+    DevicePresencePtr findDevicePresence(PrimitiveResourcePtr pResource, BrokerCB cb);
 };
 
 #endif /* RESOURCEBROKER_H_ */
index 9d754f5..47bf8ea 100755 (executable)
 
 #include <functional>
 #include <list>
+#include <string>
 
 #include "BrokerTypes.h"
 
-struct BrokerRequesterInfo
-{
-    BrokerCB brockerCB;
-};
-
 class ResourcePresence
 {
 public:
-    ResourcePresence(PrimitiveResource & pResource, BrokerCB _cb);
+    ResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb);
     ~ResourcePresence();
 
     void addBrokerRequesterCB(BrokerCB _cb);
@@ -44,9 +40,9 @@ public:
     void requestResourceState();
 
 private:
-    PrimitiveResource & primitiveResource;
+    PrimitiveResourcePtr primitiveResource;
 
-    std::list<BrokerRequesterInfo *> * requesterList;
+    std::unique_ptr<std::list<BrokerRequesterInfoPtr>> requesterList;
 
     GetCallback pGetCB;
     void GetCB(const HeaderOptions &hos, const ResponseStatement& rep, int seq);
index aba8f32..28b9e77 100755 (executable)
 
 #include "DevicePresence.h"
 
-DevicePresence::DevicePresence(PrimitiveResource & pResource, BrokerCB _cb)
+DevicePresence::DevicePresence(PrimitiveResourcePtr 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 *>();
+    presenceResourceList
+    = std::unique_ptr<std::list<ResourcePresencePtr>>(new std::list<ResourcePresencePtr>);
     addPresenceResource(pResource, _cb);
 
-    OC::OCPlatform::subscribePresence(presenceHandle, address,
+    OC::OCPlatform::subscribePresence(presenceHandle, pResource->getHost(),
             BROKER_TRANSPORT, pSubscribeRequestCB);
 }
 
@@ -38,37 +38,35 @@ DevicePresence::~DevicePresence()
     // TODO Auto-generated destructor stub
     OC::OCPlatform::unsubscribePresence(presenceHandle);
     presenceResourceList->clear();
-    delete presenceResourceList;
 }
 
-void DevicePresence::addPresenceResource(PrimitiveResource & pResource, BrokerCB _cb)
+void DevicePresence::addPresenceResource(PrimitiveResourcePtr pResource, BrokerCB _cb)
 {
-    ResourcePresence * newPresenceResource = new ResourcePresence(pResource, _cb);
+    ResourcePresencePtr newPresenceResource = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
     presenceResourceList->push_back(newPresenceResource);
 }
 
-ResourcePresence * DevicePresence::findPresenceResource(PrimitiveResource & pResource, BrokerCB _cb)
+ResourcePresencePtr DevicePresence::findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
 {
-    ResourcePresence * retResource = NULL;
-    if (presenceResourceList->empty() || pResource.isEmpty())
+    ResourcePresencePtr retResource(nullptr);
+    if (presenceResourceList->empty())// || pResource.isEmpty())
     {
-       return NULL;
+       return retResource;
     }
     else
     {
-       std::list<ResourcePresence *>::iterator it;
+       std::list<ResourcePresencePtr>::iterator it;
 
-       ResourcePresence * temp = new ResourcePresence(pResource, _cb);
+       ResourcePresencePtr temp = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
        it = std::find(presenceResourceList->begin(), presenceResourceList->end(), temp);
-       delete temp;
 
        if(it == presenceResourceList->end())
        {
-           return NULL;
+           return retResource;
        }
        else
        {
-           retResource = it;
+           retResource = *it;
        }
     }
 
index 9a7822c..8ec9f3a 100755 (executable)
 #define DEFAULT_CONTEXT_VALUE 0x99
 
 ResourceBroker * ResourceBroker::s_instance = NULL;
-std::list< DevicePresence * >  ResourceBroker::s_presenceList = NULL;
+std::unique_ptr<std::list< DevicePresencePtr >>  ResourceBroker::s_presenceList(nullptr);
 
 ResourceBroker::ResourceBroker()
 {
     // TODO Auto-generated constructor stub
-    if(s_presenceList.empty())
+    if(s_presenceList == nullptr)
     {
-        s_presenceList = new std::list< DevicePresence * >();
+        s_presenceList = std::unique_ptr<std::list< DevicePresencePtr >>(new std::list<DevicePresencePtr>);
     }
 }
 
 ResourceBroker::~ResourceBroker()
 {
     // TODO Auto-generated destructor stub
-    if(!s_presenceList.empty())
+    if(s_presenceList != nullptr)
     {
-        s_presenceList.clear();
+        s_presenceList->clear();
     }
-    delete s_presenceList;
 }
 
 ResourceBroker * ResourceBroker::getInstance()
@@ -60,10 +59,10 @@ ResourceBroker * ResourceBroker::getInstance()
     return s_instance;
 }
 
-OCStackResult ResourceBroker::hostResource(PrimitiveResource & pResource, BrokerCB cb)
+OCStackResult ResourceBroker::hostResource(PrimitiveResourcePtr pResource, BrokerCB cb)
 {
     OCStackResult ret = OC_STACK_INVALID_PARAM;
-    if (pResource.getUri().empty() || pResource.getHost().empty())
+    if (pResource->getUri().empty() || pResource->getHost().empty())
     {
         return ret;
     }
@@ -73,11 +72,11 @@ OCStackResult ResourceBroker::hostResource(PrimitiveResource & pResource, Broker
         return ret;
     }
 
-    DevicePresence * presenceItem = findDevicePresence(pResource, cb);
+    DevicePresencePtr presenceItem = findDevicePresence(pResource, cb);
     if(presenceItem == NULL)
     {
-        DevicePresence *newItem = new DevicePresence(pResource, cb);
-        s_presenceList.push_back(newItem);
+        DevicePresencePtr newItem = DevicePresencePtr(new DevicePresence(pResource, cb));
+        s_presenceList->push_back(newItem);
     }
     else
     {
@@ -87,44 +86,43 @@ OCStackResult ResourceBroker::hostResource(PrimitiveResource & pResource, Broker
     return ret;
 }
 
-DevicePresence * ResourceBroker::findDevicePresence(PrimitiveResource& pResource, BrokerCB cb)
+DevicePresencePtr ResourceBroker::findDevicePresence(PrimitiveResourcePtr pResource, BrokerCB cb)
 {
-    DevicePresence * retDevice = NULL;
-    if (s_presenceList.empty() || pResource.isEmpty())
+    DevicePresencePtr retDevice(nullptr);
+    if (s_presenceList->empty())// || pResource->isEmpty())
     {
-        return NULL;
+        return retDevice;
     }
     else
     {
-        std::list<DevicePresence *>::iterator it;
+        std::list<DevicePresencePtr>::iterator it;
 
-        DevicePresence * temp = new DevicePresence(pResource, cb);
-        it = std::find(s_presenceList.begin(), s_presenceList.end(), temp);
-        delete temp;
+        DevicePresencePtr temp = DevicePresencePtr(new DevicePresence(pResource, cb));
+        it = std::find(s_presenceList->begin(), s_presenceList->end(), temp);
 
-        if(it == s_presenceList.end())
+        if(it == s_presenceList->end())
         {
-            return NULL;
+            return retDevice;
         }
         else
         {
-            retDevice = it;
+            retDevice = *it;
         }
     }
 
     return retDevice;
 }
 
-ResourcePresence * ResourceBroker::findResourcePresence(PrimitiveResource & pResource, BrokerCB cb)
+ResourcePresencePtr ResourceBroker::findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB cb)
 {
-    ResourcePresence * retResource = NULL;
-    if (s_presenceList.empty() || pResource.isEmpty())
+    ResourcePresencePtr retResource(nullptr);
+    if (s_presenceList->empty())// || pResource.isEmpty())
     {
-        return NULL;
+        return retResource;
     }
     else
     {
-        DevicePresence * foundDevice = findDevicePresence(pResource, cb);
+        DevicePresencePtr foundDevice = findDevicePresence(pResource, cb);
         retResource = foundDevice->findResourcePresence(pResource, cb);
     }
 
index 22ae25c..41a3260 100755 (executable)
 
 #include "ResourcePresence.h"
 
-ResourcePresence::ResourcePresence(PrimitiveResource & pResource, BrokerCB _cb)
+ResourcePresence::ResourcePresence(PrimitiveResourcePtr 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 *>();
+    requesterList
+    = std::unique_ptr<std::list<BrokerRequesterInfoPtr>>(new std::list<BrokerRequesterInfoPtr>);
+
     addBrokerRequesterCB(_cb);
 }
 
 ResourcePresence::~ResourcePresence()
 {
     requesterList->clear();
-    delete requesterList;
 }
 
 void ResourcePresence::addBrokerRequesterCB(BrokerCB _cb)
 {
-    BrokerRequesterInfo *newRequester = new BrokerRequesterInfo();
+    BrokerRequesterInfoPtr newRequester = BrokerRequesterInfoPtr(new BrokerRequesterInfo());
     newRequester->brockerCB = _cb;
     requesterList->push_back(newRequester);
 }
 
 void ResourcePresence::requestResourceState()
 {
-    primitiveResource.requestGet(pGetCB);
+    primitiveResource->requestGet(pGetCB);
 }
 
 void ResourcePresence::GetCB(const HeaderOptions &hos, const ResponseStatement& rep, int seq)