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 requestPut(const RCSResourceAttributes&, PutCallback) = 0;
81 virtual void requestObserve(ObserveCallback) = 0;
82 virtual void cancelObserve() = 0;
84 virtual std::string getSid() const = 0;
85 virtual std::string getUri() const = 0;
86 virtual std::string getHost() const = 0;
87 virtual std::vector< std::string > getTypes() const = 0;
88 virtual std::vector< std::string > getInterfaces() const = 0;
90 virtual bool isObservable() const = 0;
93 PrimitiveResource() = default;
95 PrimitiveResource(const PrimitiveResource&) = delete;
96 PrimitiveResource(PrimitiveResource&&) = delete;
98 PrimitiveResource& operator=(const PrimitiveResource&) = delete;
99 PrimitiveResource& operator=(PrimitiveResource&&) = delete;
102 typedef std::function<void(std::shared_ptr<PrimitiveResource>)> DiscoverCallback;
104 void discoverResource(const std::string& host, const std::string& resourceURI,
105 OCConnectivityType, DiscoverCallback);
107 void discoverResource(const RCSAddress& address, const std::string& resourceURI,
113 #endif // COMMON_PRIMITIVERESOURCE_H