f5c33b520234e9c2a8cbb2ca652363b0a7a0dd7c
[profile/ivi/settings-daemon.git] / plugins / connman / service.hpp
1 /**
2  * @file service.hpp
3  *
4  * @brief Connman service request handling.
5  *
6  * @author Ossama Othman @<ossama.othman@@intel.com@>
7  *
8  * @copyright @par
9  * Copyright 2013 Intel Corporation All Rights Reserved.
10  * @par
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation;
14  * version 2.1 of the License.
15  * @par
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Lesser General Public License for more details.
20  * @par
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this library; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin Street, Fifth Floor,
24  * Boston, MA  02110-1301  USA
25  */
26
27 #ifndef IVI_SETTINGS_CONNMAN_SERVICE_HPP
28 #define IVI_SETTINGS_CONNMAN_SERVICE_HPP
29
30 #include "connman.hpp"
31 #include "connman_manager.hpp"
32
33
34 namespace ivi
35 {
36   namespace settings
37   {
38     class response_callback;
39
40     /**
41      * @class service
42      *
43      * @brief Connman Service object proxy.
44      *
45      * This class exposes functionality found in the connman
46      * @c Service interface to the caller.
47      */
48     class service
49     {
50     public:
51
52       /**
53        * Constructor.
54        *
55        * @param[in] service_path The D-Bus object path for connman
56        *                         service.
57        * @param[in] connection   Underlying D-Bus connection.
58        * @param[in] e            Callback through which events will be
59        *                         sent to clients.
60        */
61       service(std::string service_path,
62               GDBusConnection * connection);
63
64       /**
65        * Handle connman Service object request.
66        *
67        * @param[in] name     The Connman Service method name.
68        * @param[in] reader   @c JsonReader object containing desired
69        *                     values.  The value will be in the second
70        *                     array element.
71        * @param[in] response Callback through which results will be
72        *                     sent.
73        */
74       void handle_request(char const * name,
75                           JsonReader * reader,
76                           connman_manager & manager,
77                           response_callback & response);
78
79     private:
80
81       /// Connect to the service.
82       void connect(JsonReader * reader,
83                    connman_manager & manager,
84                    response_callback response);
85
86       /// Disconnect from the service.
87       void disconnect(JsonReader * reader,
88                       connman_manager & manager,
89                       response_callback response);
90
91       /**
92        * Call the method @a name on the connman Service object.
93        *
94        * @param[in]    name     The connman Service object method
95        *                        name.
96        * @param[inout] response Callback used to inform the caller of
97        *                        success or failure.
98        */
99       void call_method(char const * name,
100                        response_callback response);
101
102     private:
103
104       /// The proxy used to access the connman Service D-Bus API.
105       connman connman_;
106
107     };
108
109   }
110 }
111
112
113 #endif  /* IVI_SETTINGS_CONNMAN_SERVICE_HPP */
114
115
116 // Local Variables:
117 // mode:c++
118 // c-basic-offset:2
119 // indent-tabs-mode: nil
120 // End: