From: coderhyme Date: Thu, 18 Jun 2015 06:48:59 +0000 (+0900) Subject: Separate PrimitiveResource implementation X-Git-Tag: 1.2.0+RC1~1430^2~114 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fcd92853fa2e5efcc0d74ef5e03e65679e3ff15f;p=platform%2Fupstream%2Fiotivity.git Separate PrimitiveResource implementation Change-Id: I3f209fa80a38156a0b8b668406ced390d375febe Signed-off-by: coderhyme Reviewed-on: https://gerrit.iotivity.org/gerrit/1375 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi --- diff --git a/service/basis/common/primitiveResource/include/PrimitiveResource.h b/service/basis/common/primitiveResource/include/PrimitiveResource.h index 8f7e411..2d7fa3b 100755 --- a/service/basis/common/primitiveResource/include/PrimitiveResource.h +++ b/service/basis/common/primitiveResource/include/PrimitiveResource.h @@ -52,30 +52,31 @@ namespace OIC using ObserveCallback = std::function< void(const HeaderOptions&, const ResponseStatement&, int, int)>; - private: - using BaseResource = OC::OCResource; - using BaseResourcePtr = BaseResource::Ptr; - public: - static PrimitiveResource::Ptr create(const BaseResourcePtr&); + static PrimitiveResource::Ptr create(const std::shared_ptr&); + + virtual ~PrimitiveResource() = default; - void requestGet(GetCallback); - void requestSet(const ResourceAttributes&, SetCallback); - void requestObserve(ObserveCallback); - void cancelObserve(); + virtual void requestGet(GetCallback) = 0; + virtual void requestSet(const ResourceAttributes&, SetCallback) = 0; + virtual void requestObserve(ObserveCallback) = 0; + virtual void cancelObserve() = 0; - std::string getUri() const; - std::string getHost() const; - std::vector< std::string > getTypes() const; - std::vector< std::string > getInterfaces() const; + virtual std::string getUri() const = 0; + virtual std::string getHost() const = 0; + virtual std::vector< std::string > getTypes() const = 0; + virtual std::vector< std::string > getInterfaces() const = 0; - bool isObservable() const; + virtual bool isObservable() const = 0; - private: - PrimitiveResource(const BaseResourcePtr&); + protected: + PrimitiveResource() = default; - private: - BaseResourcePtr m_ocResource; + PrimitiveResource(const PrimitiveResource&) = delete; + PrimitiveResource(PrimitiveResource&&) = delete; + + PrimitiveResource& operator=(const PrimitiveResource&) const = delete; + PrimitiveResource& operator=(PrimitiveResource&&) const = delete; }; using FindCallback = std::function)>; @@ -85,4 +86,5 @@ namespace OIC } } + #endif // __PRIMITIVERESOURCE_H diff --git a/service/basis/common/primitiveResource/include/internal/PrimitiveResourceImpl.h b/service/basis/common/primitiveResource/include/internal/PrimitiveResourceImpl.h new file mode 100644 index 0000000..6fdc93a --- /dev/null +++ b/service/basis/common/primitiveResource/include/internal/PrimitiveResourceImpl.h @@ -0,0 +1,116 @@ +//****************************************************************** +// +// 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 __PRIMITIVERESOURCEIMPL_H +#define __PRIMITIVERESOURCEIMPL_H + +#include +#include + +#include + +namespace OIC +{ + namespace Service + { + + template< typename BaseResource > + class PrimitiveResourceImpl: public PrimitiveResource + { + private: + using BaseResourcePtr = std::shared_ptr< BaseResource >; + + private: + static ResponseStatement createResponseStatement( + const OC::OCRepresentation& ocRepresentation) + { + return ResponseStatement::create( + ResourceAttributesConverter::fromOCRepresentation(ocRepresentation)); + } + + public: + PrimitiveResourceImpl(const BaseResourcePtr& baseResource) : + m_baseResource{ baseResource } + { + } + + void requestGet(GetCallback callback) override + { + using namespace std::placeholders; + + m_baseResource->get(OC::QueryParamsMap(), + std::bind(callback, _1, std::bind(createResponseStatement, _2), _3)); + } + + void requestSet(const ResourceAttributes& attrs, SetCallback callback) override + { + using namespace std::placeholders; + + m_baseResource->put(ResourceAttributesConverter::toOCRepresentation(attrs), + OC::QueryParamsMap{}, + std::bind(callback, _1, std::bind(createResponseStatement, _2), _3)); + } + + void requestObserve(ObserveCallback callback) override + { + using namespace std::placeholders; + + m_baseResource->observe(OC::ObserveType::ObserveAll, OC::QueryParamsMap{ }, + bind(callback, _1, bind(createResponseStatement, _2), _3, _4)); + } + + void cancelObserve() override + { + m_baseResource->cancelObserve(); + } + + std::string getUri() const override + { + return m_baseResource->uri(); + } + + std::string getHost() const override + { + return m_baseResource->host(); + } + + std::vector< std::string > getTypes() const override + { + return m_baseResource->getResourceTypes(); + } + + std::vector< std::string > getInterfaces() const override + { + return m_baseResource->getResourceInterfaces(); + } + + bool isObservable() const override + { + return m_baseResource->isObservable(); + } + + private: + BaseResourcePtr m_baseResource; + }; + + } +} + +#endif // __PRIMITIVERESOURCEIMPL_H diff --git a/service/basis/common/primitiveResource/src/PrimitiveResource.cpp b/service/basis/common/primitiveResource/src/PrimitiveResource.cpp index a66469e..570e296 100755 --- a/service/basis/common/primitiveResource/src/PrimitiveResource.cpp +++ b/service/basis/common/primitiveResource/src/PrimitiveResource.cpp @@ -19,93 +19,23 @@ //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include -#include -#include -#include +#include #include -namespace -{ - using namespace OIC::Service; - - ResponseStatement createResponseStatement(const OC::OCRepresentation& ocRepresentation) - { - return ResponseStatement::create( - ResourceAttributesConverter::fromOCRepresentation(ocRepresentation)); - } - -} // unnamed namespace - - namespace OIC { namespace Service { - using namespace std::placeholders; - - PrimitiveResource::PrimitiveResource(const BaseResourcePtr& ocResource) : - m_ocResource{ ocResource } - { - } - PrimitiveResource::Ptr PrimitiveResource::create(const BaseResourcePtr& ptr) + PrimitiveResource::Ptr PrimitiveResource::create( + const std::shared_ptr& ptr) { - return std::shared_ptr< PrimitiveResource >(new PrimitiveResource{ ptr }); + return std::shared_ptr< PrimitiveResource >( + new PrimitiveResourceImpl< OC::OCResource >{ ptr }); } - void PrimitiveResource::requestGet(GetCallback callback) - { - m_ocResource->get(OC::QueryParamsMap(), - std::bind(callback, _1, std::bind(createResponseStatement, _2), _3)); - } - - void PrimitiveResource::requestSet(const ResourceAttributes& attrs, SetCallback callback) - { - m_ocResource->put(ResourceAttributesConverter::toOCRepresentation(attrs), - OC::QueryParamsMap{}, - std::bind(callback, _1, std::bind(createResponseStatement, _2), _3)); - } - - void PrimitiveResource::requestObserve(ObserveCallback callback) - { - m_ocResource->observe(OC::ObserveType::ObserveAll, OC::QueryParamsMap{}, - bind(callback, _1, bind(createResponseStatement, _2), _3, _4)); - } - - void PrimitiveResource::cancelObserve() - { - m_ocResource->cancelObserve(); - } - - bool PrimitiveResource::isObservable() const - { - return m_ocResource->isObservable(); - } - - std::string PrimitiveResource::getUri() const - { - return m_ocResource->uri(); - } - - std::string PrimitiveResource::getHost() const - { - return m_ocResource->host(); - } - - std::vector< std::string > PrimitiveResource::getTypes() const - { - return m_ocResource->getResourceTypes(); - } - - std::vector< std::string > PrimitiveResource::getInterfaces() const - { - return m_ocResource->getResourceInterfaces(); - } - - - void discoverResource(const std::string& host, const std::string& resourceURI, OCConnectivityType connectivityType, FindCallback resourceHandler) {