1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #ifndef COMMON_PRIMITIVERESOURCE_H
22 #define COMMON_PRIMITIVERESOURCE_H
28 #include "OCResource.h"
30 #include "ResponseStatement.h"
31 #include "RCSAddress.h"
38 typedef OC::HeaderOption::OCHeaderOption HeaderOption;
39 typedef std::vector<HeaderOption> HeaderOptions;
41 class RCSResourceAttributes;
42 class RCSRepresentation;
44 class PrimitiveResource: public std::enable_shared_from_this< PrimitiveResource >
47 typedef std::shared_ptr< PrimitiveResource > Ptr;
48 typedef std::shared_ptr< const PrimitiveResource > ConstPtr;
50 typedef std::function<void(const HeaderOptions&, const RCSRepresentation&, int)>
53 typedef std::function<void(const HeaderOptions&, const RCSRepresentation&, int)>
56 typedef std::function<void(const HeaderOptions&, const RCSRepresentation&, int)>
59 typedef std::function<void(const HeaderOptions&, const RCSRepresentation&, int, int)>
63 static PrimitiveResource::Ptr create(const std::shared_ptr<OC::OCResource>&);
65 virtual ~PrimitiveResource() { }
67 virtual void requestGet(GetCallback) = 0;
69 virtual void requestGetWith(const std::string& resourceType,
70 const std::string& resourceInterface,
71 const OC::QueryParamsMap& queryParametersMap, GetCallback) = 0;
73 virtual void requestSet(const RCSResourceAttributes&, SetCallback) = 0;
75 virtual void requestSetWith(const std::string& resourceType,
76 const std::string& resourceInterface,
77 const OC::QueryParamsMap& queryParametersMap,
78 const RCSResourceAttributes&, GetCallback) = 0;
80 virtual void requestSetWith(const std::string& resourceType,
81 const std::string& resourceInterface,
82 const OC::QueryParamsMap& queryParametersMap,
83 const RCSRepresentation&, SetCallback) = 0;
85 virtual void requestPut(const RCSResourceAttributes&, PutCallback) = 0;
86 virtual void requestObserve(ObserveCallback) = 0;
87 virtual void cancelObserve() = 0;
89 virtual std::string getSid() const = 0;
90 virtual std::string getUri() const = 0;
91 virtual std::string getHost() const = 0;
92 virtual std::vector< std::string > getTypes() const = 0;
93 virtual std::vector< std::string > getInterfaces() const = 0;
95 virtual bool isObservable() const = 0;
98 PrimitiveResource() = default;
100 PrimitiveResource(const PrimitiveResource&) = delete;
101 PrimitiveResource(PrimitiveResource&&) = delete;
103 PrimitiveResource& operator=(const PrimitiveResource&) = delete;
104 PrimitiveResource& operator=(PrimitiveResource&&) = delete;
107 typedef std::function<void(std::shared_ptr<PrimitiveResource>)> DiscoverCallback;
109 void discoverResource(const std::string& host, const std::string& resourceURI,
110 OCConnectivityType, DiscoverCallback);
112 void discoverResource(const RCSAddress& address, const std::string& resourceURI,
118 #endif // COMMON_PRIMITIVERESOURCE_H