Modified RCSResourceObject to eliminate its inheritance from enable_shared_from_this.
authorcoderhyme <jhyo.kim@samsung.com>
Thu, 3 Mar 2016 08:02:47 +0000 (00:02 -0800)
committerUze Choi <uzchoi@samsung.com>
Mon, 7 Mar 2016 08:38:26 +0000 (08:38 +0000)
Change-Id: I7950249ad1ad132693ee93cb11794bf3b90c6e48
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/5337
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/resource-encapsulation/include/RCSResourceObject.h
service/resource-encapsulation/src/serverBuilder/src/RCSResourceObject.cpp
service/resource-encapsulation/unittests/ResourceClientTest.cpp

index 505e43a..00644cf 100644 (file)
@@ -57,7 +57,7 @@ namespace OIC
         class NoLockException: public RCSException
         {
             public:
-                NoLockException(std::string &&what) : RCSException { std::move(what) } {}
+                NoLockException(std::string what) : RCSException { std::move(what) } {}
         };
 
         //! @cond
@@ -79,7 +79,7 @@ namespace OIC
          * in instead of overriding SetRequestHandler.
          * </p>
          */
-        class RCSResourceObject : public std::enable_shared_from_this< RCSResourceObject >
+        class RCSResourceObject
         {
         private:
             class WeakGuard;
@@ -545,10 +545,10 @@ namespace OIC
             static OCEntityHandlerResult entityHandler(const std::weak_ptr< RCSResourceObject >&,
                     const std::shared_ptr< OC::OCResourceRequest >&);
 
-            OCEntityHandlerResult handleRequest(const std::shared_ptr< OC::OCResourceRequest >&);
+            OCEntityHandlerResult handleRequest(const RCSRequest&);
             OCEntityHandlerResult handleRequestGet(const RCSRequest&);
             OCEntityHandlerResult handleRequestSet(const RCSRequest&);
-            OCEntityHandlerResult handleObserve(const std::shared_ptr< OC::OCResourceRequest >&);
+            OCEntityHandlerResult handleObserve(const RCSRequest&);
 
             template <typename RESPONSE, typename RESPONSE_BUILDER>
             OCEntityHandlerResult sendResponse(const RCSRequest&,
index 0e52fdd..db834f5 100644 (file)
@@ -21,7 +21,6 @@
 #include "RCSResourceObject.h"
 
 #include <functional>
-#include <vector>
 
 #include "RequestHandler.h"
 #include "AssertUtils.h"
@@ -86,13 +85,12 @@ namespace
 
     template< typename HANDLER, typename RESPONSE =
             typename std::decay<HANDLER>::type::result_type >
-    RESPONSE invokeHandler(const RCSResourceObject::Ptr& resObj, RCSResourceAttributes& attrs,
-            const std::shared_ptr< OC::OCResourceRequest >& ocRequest,
+    RESPONSE invokeHandler(RCSResourceAttributes& attrs, const RCSRequest& request,
             std::shared_ptr< HANDLER > handler)
     {
         if (handler)
         {
-            return (*handler)(RCSRequest{ resObj, ocRequest }, attrs);
+            return (*handler)(request, attrs);
         }
 
         return RESPONSE::defaultAction();
@@ -576,14 +574,16 @@ namespace OIC
 
             try
             {
+                RCSRequest rcsRequest{ resource, request };
+
                 if (request->getRequestHandlerFlag() & OC::RequestHandlerFlag::RequestFlag)
                 {
-                    return resource->handleRequest(request);
+                    return resource->handleRequest(rcsRequest);
                 }
 
                 if (request->getRequestHandlerFlag() & OC::RequestHandlerFlag::ObserverFlag)
                 {
-                    return resource->handleObserve(request);
+                    return resource->handleObserve(rcsRequest);
                 }
             }
             catch (const std::exception& e)
@@ -601,33 +601,28 @@ namespace OIC
         }
 
         OCEntityHandlerResult RCSResourceObject::handleRequest(
-                const std::shared_ptr< OC::OCResourceRequest >& request)
+                const RCSRequest& request)
         {
-            assert(request != nullptr);
-
-            RCSRequest rcsRequest{ shared_from_this(), request };
-
-            if (rcsRequest.getInterface() != "" && m_interfaceHandlers.find(
-                    rcsRequest.getInterface()) == m_interfaceHandlers.end())
+            if (request.getInterface() != "" &&
+                    m_interfaceHandlers.find(request.getInterface()) == m_interfaceHandlers.end())
             {
                 return OC_EH_ERROR;
             }
 
-            if (request->getRequestType() == "GET")
+            if (request.getOCRequest()->getRequestType() == "GET")
             {
-                return handleRequestGet(rcsRequest);
+                return handleRequestGet(request);
             }
 
-            if (request->getRequestType() == "POST")
+            if (request.getOCRequest()->getRequestType() == "POST")
             {
-                return handleRequestSet(rcsRequest);
+                return handleRequestSet(request);
             }
 
             return OC_EH_ERROR;
         }
 
-        OCEntityHandlerResult RCSResourceObject::handleRequestGet(
-                const RCSRequest& request)
+        OCEntityHandlerResult RCSResourceObject::handleRequestGet(const RCSRequest& request)
         {
             if (!findInterfaceHandler(request.getInterface()).isGetSupported())
             {
@@ -635,8 +630,8 @@ namespace OIC
             }
 
             auto attrs = getAttributesFromOCRequest(request.getOCRequest());
-            auto response = invokeHandler(shared_from_this(), attrs, request.getOCRequest(),
-                    m_getRequestHandler);
+
+            auto response = invokeHandler(attrs, request, m_getRequestHandler);
 
             if (response.isSeparate()) return OC_EH_SLOW;
 
@@ -679,8 +674,7 @@ namespace OIC
             return !replaced.empty();
         }
 
-        OCEntityHandlerResult RCSResourceObject::handleRequestSet(
-                const RCSRequest& request)
+        OCEntityHandlerResult RCSResourceObject::handleRequestSet(const RCSRequest& request)
         {
             if (!findInterfaceHandler(request.getInterface()).isSetSupported())
             {
@@ -689,8 +683,7 @@ namespace OIC
 
             auto attrs = getAttributesFromOCRequest(request.getOCRequest());
 
-            auto response = invokeHandler(shared_from_this(), attrs, request.getOCRequest(),
-                    m_setRequestHandler);
+            auto response = invokeHandler(attrs, request, m_setRequestHandler);
 
             if (response.isSeparate()) return OC_EH_SLOW;
 
@@ -700,8 +693,7 @@ namespace OIC
                     findInterfaceHandler(request.getInterface()).getSetResponseBuilder());
         }
 
-        OCEntityHandlerResult RCSResourceObject::handleObserve(
-                const std::shared_ptr< OC::OCResourceRequest >&)
+        OCEntityHandlerResult RCSResourceObject::handleObserve(const RCSRequest&)
         {
             if (!isObservable())
             {
index 341d365..171531b 100644 (file)
@@ -95,9 +95,8 @@ private:
     {
         for (int i=0; i<10 && !object; ++i)
         {
-            const std::string uri  = "/oic/res";
             auto discoveryTask = RCSDiscoveryManager::getInstance()->discoverResourceByType(
-                    RCSAddress::multicast(), uri, RESOURCETYPE,
+                    RCSAddress::multicast(), RESOURCETYPE,
                     std::bind(&RemoteResourceObjectTest::resourceDiscovered, this,
                             std::placeholders::_1));
             Wait(1000);