Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
host-dbus-connection.hpp
Go to the documentation of this file.
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 
26 #ifndef SERVER_HOST_DBUS_CONNECTION_HPP
27 #define SERVER_HOST_DBUS_CONNECTION_HPP
28 
29 #include "dbus/connection.hpp"
31 #include "api/messages.hpp"
32 
33 #include <functional>
34 #include <mutex>
35 #include <condition_variable>
36 #include <tuple>
37 #include <vector>
38 
39 
40 namespace vasum {
41 
42 class ZonesManager;
43 
45 
46 public:
49 
50  // ------------- API --------------
51 
52  typedef std::function<void(const std::string& target,
53  const std::string& targetBusName,
54  const std::string& targetObjectPath,
55  const std::string& targetInterface,
56  const std::string& targetMethod,
57  GVariant* parameters,
60 
64  void setProxyCallCallback(const ProxyCallCallback& callback);
65 
69  void proxyCallAsync(const std::string& busName,
70  const std::string& objectPath,
71  const std::string& interface,
72  const std::string& method,
73  GVariant* parameters,
75 
76 private:
78  std::mutex mNameMutex;
79  std::condition_variable mNameCondition;
81  bool mNameLost;
85 
86  void onNameAcquired();
87  void onNameLost();
88  bool waitForName(const unsigned int timeoutMs);
89 
90  void onMessageCall(const std::string& objectPath,
91  const std::string& interface,
92  const std::string& methodName,
93  GVariant* parameters,
95  void onClientVanished(const std::string& name);
96  void onSignalCall(const std::string& senderBusName,
97  const std::string& objectPath,
98  const std::string& interface,
99  const std::string& signalName,
100  GVariant* parameters) const;
101 };
102 
103 
104 } // namespace vasum
105 
106 
107 #endif // SERVER_HOST_DBUS_CONNECTION_HPP
dbus::DbusConnection::SubscriptionId mSubscriptionId
Definition: host-dbus-connection.hpp:82
void onSignalCall(const std::string &senderBusName, const std::string &objectPath, const std::string &interface, const std::string &signalName, GVariant *parameters) const
HostDbusConnection(ZonesManager *zm)
void onClientVanished(const std::string &name)
ProxyCallCallback mProxyCallCallback
Definition: host-dbus-connection.hpp:83
Dbus connection class.
Definition: zones-manager.hpp:51
void onMessageCall(const std::string &objectPath, const std::string &interface, const std::string &methodName, GVariant *parameters, dbus::MethodResultBuilder::Pointer result)
void proxyCallAsync(const std::string &busName, const std::string &objectPath, const std::string &interface, const std::string &method, GVariant *parameters, const dbus::DbusConnection::AsyncMethodCallCallback &callback)
Make a proxy call.
dbus::DbusConnection::Pointer mDbusConnection
Definition: host-dbus-connection.hpp:77
std::function< void(const std::string &target, const std::string &targetBusName, const std::string &targetObjectPath, const std::string &targetInterface, const std::string &targetMethod, GVariant *parameters, dbus::MethodResultBuilder::Pointer result)> ProxyCallCallback
Definition: host-dbus-connection.hpp:59
bool mNameLost
Definition: host-dbus-connection.hpp:81
bool mNameAcquired
Definition: host-dbus-connection.hpp:80
void setProxyCallCallback(const ProxyCallCallback &callback)
Register proxy call callback.
ZonesManager * mZonesManagerPtr
Definition: host-dbus-connection.hpp:84
std::unique_ptr< DbusConnection > Pointer
Definition: connection.hpp:74
Definition: host-dbus-connection.hpp:44
bool waitForName(const unsigned int timeoutMs)
std::function< void(AsyncMethodCallResult &asyncMethodCallResult)> AsyncMethodCallCallback
Definition: connection.hpp:96
std::shared_ptr< MethodResultBuilder > Pointer
Definition: connection.hpp:47
std::mutex mNameMutex
Definition: host-dbus-connection.hpp:78
unsigned int SubscriptionId
Definition: connection.hpp:98
Interface for result builders.
std::condition_variable mNameCondition
Definition: host-dbus-connection.hpp:79
Host's internal IPC messages declaration.