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<OC::OCResource>&);
+
+ 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<void(std::shared_ptr<PrimitiveResource>)>;
}
}
+
#endif // __PRIMITIVERESOURCE_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 __PRIMITIVERESOURCEIMPL_H
+#define __PRIMITIVERESOURCEIMPL_H
+
+#include <PrimitiveResource.h>
+#include <ResponseStatement.h>
+
+#include <internal/ResourceAtrributesConverter.h>
+
+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
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include <PrimitiveResource.h>
-#include <ResourceAttributes.h>
-#include <ResponseStatement.h>
-#include <internal/ResourceAtrributesConverter.h>
+#include <internal/PrimitiveResourceImpl.h>
#include <OCPlatform.h>
-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<OC::OCResource>& 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)
{