Merge "Patch 1 : Adding Arduino WiFi support. This requires updated Arduino WiFi...
[platform/upstream/iotivity.git] / include / IClientWrapper.h
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef _I_CLIENT_WRAPPER_H_
22 #define _I_CLIENT_WRAPPER_H_
23
24 #include <memory>
25 #include <string>
26
27 #include <OCApi.h>
28
29 namespace OC
30 {
31     class IClientWrapper : public std::enable_shared_from_this<IClientWrapper>
32     {
33     public:
34         typedef std::shared_ptr<IClientWrapper> Ptr;
35
36         virtual OCStackResult ListenForResource(const std::string& serviceUrl, const std::string& resourceType,
37             std::function<void(std::shared_ptr<OCResource>)>& callback) = 0;
38         
39         virtual OCStackResult GetResourceAttributes(const std::string& host, const std::string& uri, const QueryParamsMap& queryParams, 
40             std::function<void(const OCRepresentation, const int)>& callback)=0;
41
42         virtual OCStackResult SetResourceAttributes(const std::string& host, const std::string& uri, const OCRepresentation& attributes, 
43             const QueryParamsMap& queryParams, std::function<void(const OCRepresentation, const int)>& callback) = 0;
44
45         virtual OCStackResult ObserveResource(ObserveType observeType, OCDoHandle* handle, 
46             const std::string& host, const std::string& uri, const QueryParamsMap& queryParams, 
47             std::function<void(const OCRepresentation&, const int&, const int&)>& callback)=0;
48         
49         virtual OCStackResult CancelObserveResource(OCDoHandle handle, const std::string& host, const std::string& uri)=0;
50         
51         virtual OCStackResult subscribePresence(OCDoHandle* handle, const std::string& host, 
52             std::function<void(OCStackResult, const int&)> presenceHandler)=0;
53
54         virtual OCStackResult unsubscribePresence(OCDoHandle handle) =0;
55
56         virtual ~IClientWrapper(){}
57        
58
59         // Note: this should never be called by anyone but the handler for the listen command.  It is public becuase that needs to be a non-instance callback
60         virtual std::shared_ptr<OCResource> parseOCResource(IClientWrapper::Ptr clientWrapper, const std::string& host, const boost::property_tree::ptree resourceNode)=0;
61     private:
62     };
63 }
64
65 #endif