| // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef UPDATE_ENGINE_REAL_DBUS_WRAPPER_H_ | |
| #define UPDATE_ENGINE_REAL_DBUS_WRAPPER_H_ | |
| // A mockable interface for DBus. | |
| #include <base/macros.h> | |
| #include <dbus/dbus-glib.h> | |
| #include <dbus/dbus-glib-lowlevel.h> | |
| #include "update_engine/dbus_wrapper_interface.h" | |
| namespace chromeos_update_engine { | |
| class RealDBusWrapper : public DBusWrapperInterface { | |
| DBusGProxy* ProxyNewForName(DBusGConnection* connection, | |
| const char* name, | |
| const char* path, | |
| const char* interface) override { | |
| return dbus_g_proxy_new_for_name(connection, | |
| name, | |
| path, | |
| interface); | |
| } | |
| void ProxyUnref(DBusGProxy* proxy) override { | |
| g_object_unref(proxy); | |
| } | |
| DBusGConnection* BusGet(DBusBusType type, GError** error) override { | |
| return dbus_g_bus_get(type, error); | |
| } | |
| gboolean ProxyCall_0_1(DBusGProxy* proxy, | |
| const char* method, | |
| GError** error, | |
| GHashTable** out1) override { | |
| return dbus_g_proxy_call(proxy, method, error, G_TYPE_INVALID, | |
| dbus_g_type_get_map("GHashTable", | |
| G_TYPE_STRING, | |
| G_TYPE_VALUE), | |
| out1, G_TYPE_INVALID); | |
| } | |
| gboolean ProxyCall_1_0(DBusGProxy* proxy, | |
| const char* method, | |
| GError** error, | |
| gint in1) override { | |
| return dbus_g_proxy_call(proxy, method, error, | |
| G_TYPE_INT, in1, | |
| G_TYPE_INVALID, G_TYPE_INVALID); | |
| } | |
| gboolean ProxyCall_3_0(DBusGProxy* proxy, | |
| const char* method, | |
| GError** error, | |
| const char* in1, | |
| const char* in2, | |
| const char* in3) override { | |
| return dbus_g_proxy_call( | |
| proxy, method, error, | |
| G_TYPE_STRING, in1, G_TYPE_STRING, in2, G_TYPE_STRING, in3, | |
| G_TYPE_INVALID, G_TYPE_INVALID); | |
| } | |
| void ProxyAddSignal_2(DBusGProxy* proxy, | |
| const char* signal_name, | |
| GType type1, | |
| GType type2) override { | |
| dbus_g_proxy_add_signal(proxy, signal_name, type1, type2, G_TYPE_INVALID); | |
| } | |
| void ProxyConnectSignal(DBusGProxy* proxy, | |
| const char* signal_name, | |
| GCallback handler, | |
| void* data, | |
| GClosureNotify free_data_func) override { | |
| dbus_g_proxy_connect_signal(proxy, signal_name, handler, data, | |
| free_data_func); | |
| } | |
| void ProxyDisconnectSignal(DBusGProxy* proxy, | |
| const char* signal_name, | |
| GCallback handler, | |
| void* data) override { | |
| dbus_g_proxy_disconnect_signal(proxy, signal_name, handler, data); | |
| } | |
| DBusConnection* ConnectionGetConnection(DBusGConnection* gbus) override { | |
| return dbus_g_connection_get_connection(gbus); | |
| } | |
| void DBusBusAddMatch(DBusConnection* connection, | |
| const char* rule, | |
| DBusError* error) override { | |
| dbus_bus_add_match(connection, rule, error); | |
| } | |
| dbus_bool_t DBusConnectionAddFilter( | |
| DBusConnection* connection, | |
| DBusHandleMessageFunction function, | |
| void* user_data, | |
| DBusFreeFunction free_data_function) override { | |
| return dbus_connection_add_filter(connection, | |
| function, | |
| user_data, | |
| free_data_function); | |
| } | |
| void DBusConnectionRemoveFilter(DBusConnection* connection, | |
| DBusHandleMessageFunction function, | |
| void* user_data) override { | |
| dbus_connection_remove_filter(connection, function, user_data); | |
| } | |
| dbus_bool_t DBusMessageIsSignal(DBusMessage* message, | |
| const char* interface, | |
| const char* signal_name) override { | |
| return dbus_message_is_signal(message, interface, signal_name); | |
| } | |
| dbus_bool_t DBusMessageGetArgs_3(DBusMessage* message, | |
| DBusError* error, | |
| char** out1, | |
| char** out2, | |
| char** out3) override { | |
| return dbus_message_get_args(message, error, | |
| DBUS_TYPE_STRING, out1, | |
| DBUS_TYPE_STRING, out2, | |
| DBUS_TYPE_STRING, out3, | |
| G_TYPE_INVALID); | |
| } | |
| }; | |
| } // namespace chromeos_update_engine | |
| #endif // UPDATE_ENGINE_REAL_DBUS_WRAPPER_H_ |