Dbus async method call handler
[platform/core/security/vasum.git] / server / host-connection.hpp
1 /*
2  *  Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *  Contact: Piotr Bartosiewicz <p.bartosiewi@partner.samsung.com>
5  *
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License
17  */
18
19 /**
20  * @file
21  * @author  Piotr Bartosiewicz (p.bartosiewi@partner.samsung.com)
22  * @brief   Declaration of a class for communication with server
23  */
24
25
26 #ifndef SERVER_HOST_CONNECTION_HPP
27 #define SERVER_HOST_CONNECTION_HPP
28
29 #include "dbus/connection.hpp"
30
31 #include <mutex>
32 #include <condition_variable>
33
34
35 namespace security_containers {
36
37
38 class HostConnection {
39
40 public:
41     HostConnection();
42     ~HostConnection();
43
44     // ------------- API --------------
45
46     typedef std::function<void()> TestCallback;
47
48     /**
49      * Register test callback
50      */
51     void setTestCallback(const TestCallback& callback);
52
53 private:
54     dbus::DbusConnection::Pointer mDbusConnection;
55     std::mutex mNameMutex;
56     std::condition_variable mNameCondition;
57     bool mNameAcquired;
58     bool mNameLost;
59     TestCallback mTestCallback;
60
61     void onNameAcquired();
62     void onNameLost();
63     bool waitForName(const unsigned int timeoutMs);
64
65     void onMessageCall(const std::string& objectPath,
66                        const std::string& interface,
67                        const std::string& methodName,
68                        GVariant* parameters,
69                        dbus::MethodResultBuilder::Pointer result);
70 };
71
72
73 } // namespace security_containers
74
75
76 #endif // SERVER_HOST_CONNECTION_HPP