diff options
author | Milan Crha <mcrha@redhat.com> | 2018-11-08 18:44:19 +0100 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2018-11-08 18:44:19 +0100 |
commit | 3ddb21132920cc3106cf9ef0642369d2f59d3fdb (patch) | |
tree | 29b9b0815c1b128899bfb0b5a9b8f84e33bf7bbe | |
parent | c559c57c38b1a26043cd5795eebd80c35ebf2ed2 (diff) | |
download | evolution-data-server-3ddb21132920cc3106cf9ef0642369d2f59d3fdb.tar.gz |
Remove e-gdbus-templates from libedataserver
The only two parts using it were GDBus objects for address book and
calendar view, which could be easily transformed to use gdbus-codegen,
the same as the rest of the GDBus objects defined in src/private/.
30 files changed, 285 insertions, 5429 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c60afbd25..71d3a317e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,7 +53,7 @@ set(LIBEBACKEND_CURRENT 10) set(LIBEBACKEND_REVISION 0) set(LIBEBACKEND_AGE 0) -set(LIBEDATASERVER_CURRENT 23) +set(LIBEDATASERVER_CURRENT 24) set(LIBEDATASERVER_REVISION 0) set(LIBEDATASERVER_AGE 0) diff --git a/docs/reference/evolution-data-server/evolution-data-server-docs.sgml.in b/docs/reference/evolution-data-server/evolution-data-server-docs.sgml.in index 3e7913468..a5ba6f283 100644 --- a/docs/reference/evolution-data-server/evolution-data-server-docs.sgml.in +++ b/docs/reference/evolution-data-server/evolution-data-server-docs.sgml.in @@ -230,7 +230,6 @@ <xi:include href="xml/e-flag.xml"/> <xi:include href="xml/e-free-form-exp.xml"/> <xi:include href="xml/e-gdata-oauth2-authorizer.xml"/> - <xi:include href="xml/e-gdbus-templates.xml"/> <xi:include href="xml/e-memory.xml"/> <xi:include href="xml/e-network-monitor.xml"/> <xi:include href="xml/e-operation-pool.xml"/> diff --git a/src/addressbook/CMakeLists.txt b/src/addressbook/CMakeLists.txt index b1c70664b..85d56e647 100644 --- a/src/addressbook/CMakeLists.txt +++ b/src/addressbook/CMakeLists.txt @@ -2,4 +2,3 @@ add_subdirectory(backends) add_subdirectory(libebook) add_subdirectory(libebook-contacts) add_subdirectory(libedata-book) -add_subdirectory(libegdbus) diff --git a/src/addressbook/libebook/CMakeLists.txt b/src/addressbook/libebook/CMakeLists.txt index e0926ccde..6ed4c13f6 100644 --- a/src/addressbook/libebook/CMakeLists.txt +++ b/src/addressbook/libebook/CMakeLists.txt @@ -9,7 +9,6 @@ set(DEPENDENCIES edbus-private edataserver edata-book - egdbus-book ) set(SOURCES @@ -67,12 +66,10 @@ target_include_directories(ebook PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/addressbook - ${CMAKE_BINARY_DIR}/src/addressbook/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/addressbook - ${CMAKE_SOURCE_DIR}/src/addressbook/libegdbus ${CMAKE_CURRENT_BINARY_DIR} ${ADDRESSBOOK_INCLUDE_DIRS} ) diff --git a/src/addressbook/libebook/e-book-client-view.c b/src/addressbook/libebook/e-book-client-view.c index a18dab322..dc4796c2d 100644 --- a/src/addressbook/libebook/e-book-client-view.c +++ b/src/addressbook/libebook/e-book-client-view.c @@ -38,7 +38,7 @@ #include "e-book-client.h" #include "e-book-client-view.h" -#include "e-gdbus-book-view.h" +#include "e-dbus-address-book-view.h" #define E_BOOK_CLIENT_VIEW_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -48,7 +48,7 @@ typedef struct _SignalClosure SignalClosure; struct _EBookClientViewPrivate { EBookClient *client; - GDBusProxy *dbus_proxy; + EDBusAddressBookView *dbus_proxy; GDBusConnection *connection; gchar *object_path; guint running : 1; @@ -446,7 +446,7 @@ direct_contacts_fetch (EBookClientView *client_view, } static void -book_client_view_objects_added_cb (EGdbusBookView *object, +book_client_view_objects_added_cb (EDBusAddressBookView *object, const gchar * const *vcards, GWeakRef *client_view_weak_ref) { @@ -491,7 +491,7 @@ book_client_view_objects_added_cb (EGdbusBookView *object, } static void -book_client_view_objects_modified_cb (EGdbusBookView *object, +book_client_view_objects_modified_cb (EDBusAddressBookView *object, const gchar * const *vcards, GWeakRef *client_view_weak_ref) { @@ -536,8 +536,8 @@ book_client_view_objects_modified_cb (EGdbusBookView *object, } static void -book_client_view_objects_removed_cb (EGdbusBookView *object, - const gchar * const *ids, +book_client_view_objects_removed_cb (EDBusAddressBookView *object, + const gchar * const *uids, GWeakRef *client_view_weak_ref) { EBookClientView *client_view; @@ -556,8 +556,8 @@ book_client_view_objects_removed_cb (EGdbusBookView *object, return; } - for (ii = 0; ids[ii] != NULL; ii++) - list = g_slist_prepend (list, g_strdup (ids[ii])); + for (ii = 0; uids[ii] != NULL; ii++) + list = g_slist_prepend (list, g_strdup (uids[ii])); signal_closure = g_slice_new0 (SignalClosure); g_weak_ref_init (&signal_closure->client_view, client_view); @@ -581,7 +581,7 @@ book_client_view_objects_removed_cb (EGdbusBookView *object, } static void -book_client_view_progress_cb (EGdbusBookView *object, +book_client_view_progress_cb (EDBusAddressBookView *object, guint percent, const gchar *message, GWeakRef *client_view_weak_ref) @@ -623,8 +623,9 @@ book_client_view_progress_cb (EGdbusBookView *object, } static void -book_client_view_complete_cb (EGdbusBookView *object, - const gchar * const *in_error_strv, +book_client_view_complete_cb (EDBusAddressBookView *object, + const gchar *arg_error_name, + const gchar *arg_error_message, GWeakRef *client_view_weak_ref) { EBookClientView *client_view; @@ -643,8 +644,11 @@ book_client_view_complete_cb (EGdbusBookView *object, signal_closure = g_slice_new0 (SignalClosure); g_weak_ref_init (&signal_closure->client_view, client_view); - e_gdbus_templates_decode_error ( - in_error_strv, &signal_closure->error); + if (arg_error_name && *arg_error_name && arg_error_message) + signal_closure->error = g_dbus_error_new_for_dbus_error (arg_error_name, arg_error_message); + else + signal_closure->error = NULL; + if (signal_closure->error) g_dbus_error_strip_remote_error (signal_closure->error); @@ -822,7 +826,7 @@ book_client_view_dispose (GObject *object) * Also omit a callback function, so the GDBusMessage * uses G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED. */ - e_gdbus_book_view_call_dispose (priv->dbus_proxy, NULL, NULL, NULL); + e_dbus_address_book_view_call_dispose (priv->dbus_proxy, NULL, NULL, NULL); g_object_unref (priv->dbus_proxy); priv->dbus_proxy = NULL; } @@ -854,7 +858,7 @@ book_client_view_initable_init (GInitable *initable, { EBookClient *book_client; EBookClientViewPrivate *priv; - EGdbusBookView *gdbus_bookview; + EDBusAddressBookView *dbus_bookview; gulong handler_id; gchar *bus_name; @@ -873,7 +877,7 @@ book_client_view_initable_init (GInitable *initable, bus_name = e_client_dup_bus_name (E_CLIENT (book_client)); g_object_unref (book_client); - gdbus_bookview = e_gdbus_book_view_proxy_new_sync ( + dbus_bookview = e_dbus_address_book_view_proxy_new_sync ( priv->connection, G_DBUS_PROXY_FLAGS_NONE, bus_name, @@ -882,10 +886,10 @@ book_client_view_initable_init (GInitable *initable, g_free (bus_name); - if (gdbus_bookview == NULL) + if (dbus_bookview == NULL) return FALSE; - priv->dbus_proxy = G_DBUS_PROXY (gdbus_bookview); + priv->dbus_proxy = dbus_bookview; handler_id = g_signal_connect_data ( priv->dbus_proxy, "objects-added", @@ -1169,7 +1173,7 @@ e_book_client_view_start (EBookClientView *client_view, client_view->priv->running = TRUE; - e_gdbus_book_view_call_start_sync ( + e_dbus_address_book_view_call_start_sync ( client_view->priv->dbus_proxy, NULL, &local_error); if (local_error != NULL) { @@ -1196,7 +1200,7 @@ e_book_client_view_stop (EBookClientView *client_view, client_view->priv->running = FALSE; - e_gdbus_book_view_call_stop_sync ( + e_dbus_address_book_view_call_stop_sync ( client_view->priv->dbus_proxy, NULL, &local_error); if (local_error != NULL) { @@ -1224,7 +1228,7 @@ e_book_client_view_set_flags (EBookClientView *client_view, g_return_if_fail (E_IS_BOOK_CLIENT_VIEW (client_view)); - e_gdbus_book_view_call_set_flags_sync ( + e_dbus_address_book_view_call_set_flags_sync ( client_view->priv->dbus_proxy, flags, NULL, &local_error); if (local_error != NULL) { @@ -1274,7 +1278,7 @@ e_book_client_view_set_fields_of_interest (EBookClientView *client_view, } else strv = e_client_util_slist_to_strv (fields_of_interest); - e_gdbus_book_view_call_set_fields_of_interest_sync ( + e_dbus_address_book_view_call_set_fields_of_interest_sync ( client_view->priv->dbus_proxy, (const gchar * const *) strv, NULL, &local_error); diff --git a/src/addressbook/libedata-book/CMakeLists.txt b/src/addressbook/libedata-book/CMakeLists.txt index 994d5f40a..8972c9bd5 100644 --- a/src/addressbook/libedata-book/CMakeLists.txt +++ b/src/addressbook/libedata-book/CMakeLists.txt @@ -6,7 +6,6 @@ set(DEPENDENCIES ebook-contacts edbus-private edataserver - egdbus-book ) set(SOURCES @@ -95,12 +94,10 @@ target_include_directories(edata-book PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/addressbook - ${CMAKE_BINARY_DIR}/src/addressbook/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/addressbook - ${CMAKE_SOURCE_DIR}/src/addressbook/libegdbus ${CMAKE_CURRENT_BINARY_DIR} ${ADDRESSBOOK_INCLUDE_DIRS} ${LIBDB_INCLUDE_DIRS} @@ -141,12 +138,10 @@ target_include_directories(e-book-backend-sqlitedb-test PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/addressbook - ${CMAKE_BINARY_DIR}/src/addressbook/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/addressbook - ${CMAKE_SOURCE_DIR}/src/addressbook/libegdbus ${CMAKE_CURRENT_BINARY_DIR} ${ADDRESSBOOK_INCLUDE_DIRS} ${LIBDB_INCLUDE_DIRS} @@ -185,12 +180,10 @@ target_include_directories(evolution-addressbook-factory-subprocess PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/addressbook - ${CMAKE_BINARY_DIR}/src/addressbook/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/addressbook - ${CMAKE_SOURCE_DIR}/src/addressbook/libegdbus ${CMAKE_CURRENT_BINARY_DIR} ${ADDRESSBOOK_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} diff --git a/src/addressbook/libedata-book/e-data-book-view.c b/src/addressbook/libedata-book/e-data-book-view.c index 36157adc6..86c98af92 100644 --- a/src/addressbook/libedata-book/e-data-book-view.c +++ b/src/addressbook/libedata-book/e-data-book-view.c @@ -40,7 +40,7 @@ #include "e-data-book.h" #include "e-book-backend.h" -#include "e-gdbus-book-view.h" +#include "e-dbus-address-book-view.h" #define E_DATA_BOOK_VIEW_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -54,7 +54,7 @@ struct _EDataBookViewPrivate { GDBusConnection *connection; - EGdbusBookView *gdbus_object; + EDBusAddressBookView *dbus_object; gchar *object_path; EBookBackend *backend; @@ -158,8 +158,8 @@ send_pending_adds (EDataBookView *view) if (view->priv->adds->len == 0) return; - e_gdbus_book_view_emit_objects_added ( - view->priv->gdbus_object, + e_dbus_address_book_view_emit_objects_added ( + view->priv->dbus_object, (const gchar * const *) view->priv->adds->data); reset_array (view->priv->adds); } @@ -170,8 +170,8 @@ send_pending_changes (EDataBookView *view) if (view->priv->changes->len == 0) return; - e_gdbus_book_view_emit_objects_modified ( - view->priv->gdbus_object, + e_dbus_address_book_view_emit_objects_modified ( + view->priv->dbus_object, (const gchar * const *) view->priv->changes->data); reset_array (view->priv->changes); } @@ -182,8 +182,8 @@ send_pending_removes (EDataBookView *view) if (view->priv->removes->len == 0) return; - e_gdbus_book_view_emit_objects_removed ( - view->priv->gdbus_object, + e_dbus_address_book_view_emit_objects_removed ( + view->priv->dbus_object, (const gchar * const *) view->priv->removes->data); reset_array (view->priv->removes); } @@ -231,7 +231,7 @@ bookview_start_thread (gpointer data) } static gboolean -impl_DataBookView_start (EGdbusBookView *object, +impl_DataBookView_start (EDBusAddressBookView *object, GDBusMethodInvocation *invocation, EDataBookView *view) { @@ -244,7 +244,7 @@ impl_DataBookView_start (EGdbusBookView *object, NULL, bookview_start_thread, g_object_ref (view)); g_thread_unref (thread); - e_gdbus_book_view_complete_start (object, invocation, NULL); + e_dbus_address_book_view_complete_start (object, invocation); return TRUE; } @@ -262,7 +262,7 @@ bookview_stop_thread (gpointer data) } static gboolean -impl_DataBookView_stop (EGdbusBookView *object, +impl_DataBookView_stop (EDBusAddressBookView *object, GDBusMethodInvocation *invocation, EDataBookView *view) { @@ -275,30 +275,30 @@ impl_DataBookView_stop (EGdbusBookView *object, NULL, bookview_stop_thread, g_object_ref (view)); g_thread_unref (thread); - e_gdbus_book_view_complete_stop (object, invocation, NULL); + e_dbus_address_book_view_complete_stop (object, invocation); return TRUE; } static gboolean -impl_DataBookView_setFlags (EGdbusBookView *object, +impl_DataBookView_setFlags (EDBusAddressBookView *object, GDBusMethodInvocation *invocation, EBookClientViewFlags flags, EDataBookView *view) { view->priv->flags = flags; - e_gdbus_book_view_complete_set_flags (object, invocation, NULL); + e_dbus_address_book_view_complete_set_flags (object, invocation); return TRUE; } static gboolean -impl_DataBookView_dispose (EGdbusBookView *object, +impl_DataBookView_dispose (EDBusAddressBookView *object, GDBusMethodInvocation *invocation, EDataBookView *view) { - e_gdbus_book_view_complete_dispose (object, invocation, NULL); + e_dbus_address_book_view_complete_dispose (object, invocation); e_book_backend_stop_view (view->priv->backend, view); view->priv->running = FALSE; @@ -308,7 +308,7 @@ impl_DataBookView_dispose (EGdbusBookView *object, } static gboolean -impl_DataBookView_set_fields_of_interest (EGdbusBookView *object, +impl_DataBookView_set_fields_of_interest (EDBusAddressBookView *object, GDBusMethodInvocation *invocation, const gchar * const *in_fields_of_interest, EDataBookView *view) @@ -348,8 +348,7 @@ impl_DataBookView_set_fields_of_interest (EGdbusBookView *object, g_strdup (field), GINT_TO_POINTER (1)); } - e_gdbus_book_view_complete_set_fields_of_interest ( - object, invocation, NULL); + e_dbus_address_book_view_complete_set_fields_of_interest (object, invocation); return TRUE; } @@ -485,7 +484,7 @@ data_book_view_dispose (GObject *object) g_mutex_unlock (&priv->pending_mutex); g_clear_object (&priv->connection); - g_clear_object (&priv->gdbus_object); + g_clear_object (&priv->dbus_object); g_clear_object (&priv->backend); g_clear_object (&priv->sexp); @@ -529,8 +528,8 @@ data_book_view_initable_init (GInitable *initable, view = E_DATA_BOOK_VIEW (initable); - return e_gdbus_book_view_register_object ( - view->priv->gdbus_object, + return g_dbus_interface_skeleton_export ( + G_DBUS_INTERFACE_SKELETON (view->priv->dbus_object), view->priv->connection, view->priv->object_path, error); @@ -613,21 +612,21 @@ e_data_book_view_init (EDataBookView *view) view->priv->flags = E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL; - view->priv->gdbus_object = e_gdbus_book_view_stub_new (); + view->priv->dbus_object = e_dbus_address_book_view_skeleton_new (); g_signal_connect ( - view->priv->gdbus_object, "handle-start", + view->priv->dbus_object, "handle-start", G_CALLBACK (impl_DataBookView_start), view); g_signal_connect ( - view->priv->gdbus_object, "handle-stop", + view->priv->dbus_object, "handle-stop", G_CALLBACK (impl_DataBookView_stop), view); g_signal_connect ( - view->priv->gdbus_object, "handle-set-flags", + view->priv->dbus_object, "handle-set-flags", G_CALLBACK (impl_DataBookView_setFlags), view); g_signal_connect ( - view->priv->gdbus_object, "handle-dispose", + view->priv->dbus_object, "handle-dispose", G_CALLBACK (impl_DataBookView_dispose), view); g_signal_connect ( - view->priv->gdbus_object, "handle-set-fields-of-interest", + view->priv->dbus_object, "handle-set-fields-of-interest", G_CALLBACK (impl_DataBookView_set_fields_of_interest), view); view->priv->fields_of_interest = NULL; @@ -1073,7 +1072,7 @@ void e_data_book_view_notify_complete (EDataBookView *view, const GError *error) { - gchar **strv_error; + gchar *error_name, *error_message; g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); @@ -1091,11 +1090,25 @@ e_data_book_view_notify_complete (EDataBookView *view, g_mutex_unlock (&view->priv->pending_mutex); - strv_error = e_gdbus_templates_encode_error (error); - e_gdbus_book_view_emit_complete ( - view->priv->gdbus_object, - (const gchar * const *) strv_error); - g_strfreev (strv_error); + if (error) { + gchar *dbus_error_name = g_dbus_error_encode_gerror (error); + + error_name = e_util_utf8_make_valid (dbus_error_name ? dbus_error_name : ""); + error_message = e_util_utf8_make_valid (error->message); + + g_free (dbus_error_name); + } else { + error_name = g_strdup (""); + error_message = g_strdup (""); + } + + e_dbus_address_book_view_emit_complete ( + view->priv->dbus_object, + error_name, + error_message); + + g_free (error_name); + g_free (error_message); } /** @@ -1115,18 +1128,18 @@ e_data_book_view_notify_progress (EDataBookView *view, guint percent, const gchar *message) { - gchar *gdbus_message = NULL; + gchar *dbus_message = NULL; g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); if (!view->priv->running) return; - e_gdbus_book_view_emit_progress ( - view->priv->gdbus_object, percent, - e_util_ensure_gdbus_string (message, &gdbus_message)); + e_dbus_address_book_view_emit_progress ( + view->priv->dbus_object, percent, + e_util_ensure_gdbus_string (message, &dbus_message)); - g_free (gdbus_message); + g_free (dbus_message); } /** diff --git a/src/addressbook/libegdbus/CMakeLists.txt b/src/addressbook/libegdbus/CMakeLists.txt deleted file mode 100644 index 472566cac..000000000 --- a/src/addressbook/libegdbus/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -set(SOURCES - e-gdbus-book-view.h - e-gdbus-book-view.c -) - -set(DEPENDENCIES - edataserver -) - -add_library(egdbus-book STATIC - ${SOURCES} -) - -add_dependencies(egdbus-book - ${DEPENDENCIES} -) - -target_compile_definitions(egdbus-book PRIVATE - -DG_LOG_DOMAIN=\"egdbus-book\" -) - -target_compile_options(egdbus-book PUBLIC - ${DATA_SERVER_CFLAGS} -) - -target_include_directories(egdbus-book PUBLIC - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/src - ${DATA_SERVER_INCLUDE_DIRS} -) - -target_link_libraries(egdbus-book - ${DEPENDENCIES} - ${DATA_SERVER_LDFLAGS} -) diff --git a/src/addressbook/libegdbus/e-gdbus-book-view.c b/src/addressbook/libegdbus/e-gdbus-book-view.c deleted file mode 100644 index 992758c42..000000000 --- a/src/addressbook/libegdbus/e-gdbus-book-view.c +++ /dev/null @@ -1,865 +0,0 @@ -/* - * e-gdbus-book-view.c - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <stdio.h> -#include <gio/gio.h> - -#include "e-gdbus-book-view.h" - -#define GDBUS_BOOK_VIEW_INTERFACE_NAME "org.gnome.evolution.dataserver.AddressBookView" - -typedef EGdbusBookViewIface EGdbusBookViewInterface; -G_DEFINE_INTERFACE (EGdbusBookView, e_gdbus_book_view, G_TYPE_OBJECT); - -enum -{ - _0_SIGNAL, - __OBJECTS_ADDED_SIGNAL, - __OBJECTS_MODIFIED_SIGNAL, - __OBJECTS_REMOVED_SIGNAL, - __PROGRESS_SIGNAL, - __COMPLETE_SIGNAL, - __START_METHOD, - __STOP_METHOD, - __SET_FLAGS_METHOD, - __DISPOSE_METHOD, - __SET_FIELDS_OF_INTEREST_METHOD, - __LAST_SIGNAL -}; - -static guint signals[__LAST_SIGNAL] = {0}; - -/* ------------------------------------------------------------------------- */ - -/* Various lookup tables */ - -static GHashTable *_method_name_to_id = NULL; -static GHashTable *_method_name_to_type = NULL; -static GHashTable *_signal_name_to_id = NULL; -static GHashTable *_signal_name_to_type = NULL; - -static guint -lookup_method_id_from_method_name (const gchar *method_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name)); -} - -static guint -lookup_method_type_from_method_name (const gchar *method_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_type, method_name)); -} - -static guint -lookup_signal_id_from_signal_name (const gchar *signal_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name)); -} - -static guint -lookup_signal_type_from_signal_name (const gchar *signal_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_type, signal_name)); -} - -/* ------------------------------------------------------------------------- */ - -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_BOOK_VIEW_INTERFACE_NAME, - objects_added) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_BOOK_VIEW_INTERFACE_NAME, - objects_modified) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_BOOK_VIEW_INTERFACE_NAME, - objects_removed) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_UINT_STRING (GDBUS_BOOK_VIEW_INTERFACE_NAME, - progress) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_BOOK_VIEW_INTERFACE_NAME, - complete) - -static void -e_gdbus_book_view_default_init (EGdbusBookViewIface *iface) -{ - /* Build lookup structures */ - _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal); - _method_name_to_type = g_hash_table_new (g_str_hash, g_str_equal); - _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal); - _signal_name_to_type = g_hash_table_new (g_str_hash, g_str_equal); - - /* GObject signals definitions for D-Bus signals: */ - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusBookViewIface, - "objects_added", - objects_added, - __OBJECTS_ADDED_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusBookViewIface, - "objects_modified", - objects_modified, - __OBJECTS_MODIFIED_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusBookViewIface, - "objects_removed", - objects_removed, - __OBJECTS_REMOVED_SIGNAL) - E_INIT_GDBUS_SIGNAL_UINT_STRING ( - EGdbusBookViewIface, - "progress", - progress, - __PROGRESS_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusBookViewIface, - "complete", - complete, - __COMPLETE_SIGNAL) - - /* GObject signals definitions for D-Bus methods: */ - E_INIT_GDBUS_METHOD_VOID ( - EGdbusBookViewIface, - "start", - start, - __START_METHOD) - E_INIT_GDBUS_METHOD_VOID ( - EGdbusBookViewIface, - "stop", - stop, - __STOP_METHOD) - E_INIT_GDBUS_METHOD_VOID ( - EGdbusBookViewIface, - "dispose", - dispose, - __DISPOSE_METHOD) - E_INIT_GDBUS_METHOD_UINT ( - EGdbusBookViewIface, - "set_flags", - set_flags, - __SET_FLAGS_METHOD) - E_INIT_GDBUS_METHOD_STRV ( - EGdbusBookViewIface, - "set_fields_of_interest", - set_fields_of_interest, - __SET_FIELDS_OF_INTEREST_METHOD) -} - -void -e_gdbus_book_view_call_start (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("start", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_book_view_call_start_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_book_view_call_start_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("start", proxy, cancellable, error); -} - -void -e_gdbus_book_view_call_stop (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("stop", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_book_view_call_stop_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_book_view_call_stop_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("stop", proxy, cancellable, error); -} - -void -e_gdbus_book_view_call_set_flags (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_uint ("set_flags", proxy, in_flags, cancellable, callback, user_data); -} - -gboolean -e_gdbus_book_view_call_set_flags_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_book_view_call_set_flags_sync (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_uint__void ("set_flags", proxy, in_flags, cancellable, error); -} - -void -e_gdbus_book_view_call_dispose (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("dispose", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_book_view_call_dispose_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_book_view_call_dispose_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("dispose", proxy, cancellable, error); -} - -void -e_gdbus_book_view_call_set_fields_of_interest (GDBusProxy *proxy, - const gchar * const *in_only_fields, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_strv ("set_fields_of_interest", proxy, in_only_fields, cancellable, callback, user_data); -} - -gboolean -e_gdbus_book_view_call_set_fields_of_interest_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_book_view_call_set_fields_of_interest_sync (GDBusProxy *proxy, - const gchar * const *in_only_fields, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_strv__void ("set_fields_of_interest", proxy, in_only_fields, cancellable, error); -} - -void -e_gdbus_book_view_emit_objects_added (EGdbusBookView *object, - const gchar * const *arg_objects) -{ - g_signal_emit (object, signals[__OBJECTS_ADDED_SIGNAL], 0, arg_objects); -} - -void -e_gdbus_book_view_emit_objects_modified (EGdbusBookView *object, - const gchar * const *arg_objects) -{ - g_signal_emit (object, signals[__OBJECTS_MODIFIED_SIGNAL], 0, arg_objects); -} - -void -e_gdbus_book_view_emit_objects_removed (EGdbusBookView *object, - const gchar * const *arg_uids) -{ - g_signal_emit (object, signals[__OBJECTS_REMOVED_SIGNAL], 0, arg_uids); -} - -void -e_gdbus_book_view_emit_progress (EGdbusBookView *object, - guint arg_percent, - const gchar *arg_message) -{ - g_signal_emit (object, signals[__PROGRESS_SIGNAL], 0, arg_percent, arg_message); -} - -void -e_gdbus_book_view_emit_complete (EGdbusBookView *object, - const gchar * const *arg_error) -{ - g_signal_emit (object, signals[__COMPLETE_SIGNAL], 0, arg_error); -} - -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (book_view, - objects_added, - objects, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (book_view, - objects_modified, - objects, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (book_view, - objects_removed, - uids, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_2 (book_view, - progress, - percent, - "u", - message, - "s") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (book_view, - complete, - error, - "as") - -E_DECLARE_GDBUS_SYNC_METHOD_0 (book_view, - start) -E_DECLARE_GDBUS_SYNC_METHOD_0 (book_view, - stop) -E_DECLARE_GDBUS_SYNC_METHOD_0 (book_view, - dispose) -E_DECLARE_GDBUS_SYNC_METHOD_1 (book_view, - set_flags, - flags, - "u") -E_DECLARE_GDBUS_SYNC_METHOD_1 (book_view, - set_fields_of_interest, - fields_of_interest, - "as") - -static const GDBusMethodInfo * const e_gdbus_book_view_method_info_pointers[] = -{ - &E_DECLARED_GDBUS_METHOD_INFO_NAME (book_view, start), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (book_view, stop), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (book_view, set_flags), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (book_view, dispose), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (book_view, set_fields_of_interest), - NULL -}; - -static const GDBusSignalInfo * const e_gdbus_book_view_signal_info_pointers[] = -{ - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (book_view, objects_added), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (book_view, objects_modified), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (book_view, objects_removed), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (book_view, progress), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (book_view, complete), - NULL -}; - -static const GDBusInterfaceInfo _e_gdbus_book_view_interface_info = -{ - -1, - (gchar *) GDBUS_BOOK_VIEW_INTERFACE_NAME, - (GDBusMethodInfo **) &e_gdbus_book_view_method_info_pointers, - (GDBusSignalInfo **) &e_gdbus_book_view_signal_info_pointers, - (GDBusPropertyInfo **) NULL -}; - -static void -handle_method_call (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - guint method_id, method_type; - - method_id = lookup_method_id_from_method_name (method_name); - method_type = lookup_method_type_from_method_name (method_name); - - g_return_if_fail (method_id != 0); - g_return_if_fail (method_type != 0); - - e_gdbus_stub_handle_method_call (user_data, invocation, parameters, method_name, signals[method_id], method_type); -} - -static GVariant * -get_property (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "This implementation does not support property `%s'", property_name); - return NULL; -} - -static gboolean -set_property (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GVariant *value, - GError **error, - gpointer user_data) -{ - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "This implementation does not support property `%s'", property_name); - return FALSE; -} - -static const GDBusInterfaceVTable e_gdbus_book_view_interface_vtable = -{ - handle_method_call, - get_property, - set_property -}; - -static gboolean -emit_notifications_in_idle (gpointer user_data) -{ - GObject *object = G_OBJECT (user_data); - GDBusConnection *connection; - const gchar *path; - GHashTable *notification_queue; - GHashTableIter iter; - const gchar *property_name; - GVariant *value; - GVariantBuilder *builder; - GVariantBuilder *invalidated_builder; - GHashTable *pvc; - gboolean has_changes; - - notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue"); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - pvc = g_object_get_data (object, "gdbus-codegen-pvc"); - g_return_val_if_fail (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL, FALSE); - - builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); - invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); - g_hash_table_iter_init (&iter, notification_queue); - has_changes = FALSE; - while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value)) { - GVariant *cached_value; - cached_value = g_hash_table_lookup (pvc, property_name); - if (cached_value == NULL || !g_variant_equal (cached_value, value)) { - g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value)); - g_variant_builder_add (builder, "{sv}", property_name, value); - has_changes = TRUE; - } - } - - if (has_changes) { - g_dbus_connection_emit_signal ( - connection, - NULL, - path, - "org.freedesktop.DBus.Properties", - "PropertiesChanged", - g_variant_new ( - "(sa{sv}as)", - GDBUS_BOOK_VIEW_INTERFACE_NAME, - builder, - invalidated_builder), - NULL); - } else { - g_variant_builder_unref (builder); - g_variant_builder_unref (invalidated_builder); - } - - g_hash_table_remove_all (notification_queue); - g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0)); - return FALSE; -} - -/** - * e_gdbus_book_view_drain_notify: - * @object: A #EGdbusBookView that is exported. - * - * If @object has queued notifications, empty the queue forcing - * the <literal>PropertiesChanged</literal> signal to be emitted. - * See <xref linkend="EGdbusBookView.description"/> for more background information. - */ -void -e_gdbus_book_view_drain_notify (EGdbusBookView *object) -{ - gint idle_id; - idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id")); - if (idle_id > 0) { - emit_notifications_in_idle (object); - g_source_remove (idle_id); - } -} - -static void -on_object_unregistered (GObject *object) -{ - gint idle_id; - idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id")); - if (idle_id > 0) { - g_source_remove (idle_id); - } - g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL); - g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL); -} - -/** - * e_gdbus_book_view_register_object: - * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusBookView interface. - * @connection: A #GDBusConnection. - * @object_path: The object to register the object at. - * @error: Return location for error or %NULL. - * - * Registers @object at @object_path on @connection. - * - * See <xref linkend="EGdbusBookView.description"/> - * for how properties, methods and signals are handled. - * - * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object(). - */ -guint -e_gdbus_book_view_register_object (EGdbusBookView *object, - GDBusConnection *connection, - const gchar *object_path, - GError **error) -{ - GHashTable *pvc; - - pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref); - - g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free); - g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection); - g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref); - return g_dbus_connection_register_object ( - connection, - object_path, - (GDBusInterfaceInfo *) &_e_gdbus_book_view_interface_info, - &e_gdbus_book_view_interface_vtable, - object, - (GDestroyNotify) on_object_unregistered, - error); -} - -/** - * e_gdbus_book_view_interface_info: - * - * Gets interface description for the <literal>org.gnome.evolution.dataserver.AddressBookView</literal> D-Bus interface. - * - * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated. - */ -const GDBusInterfaceInfo * -e_gdbus_book_view_interface_info (void) -{ - return &_e_gdbus_book_view_interface_info; -} - -/* ---------------------------------------------------------------------- */ - -static void proxy_iface_init (EGdbusBookViewIface *iface); - -G_DEFINE_TYPE_WITH_CODE (EGdbusBookViewProxy, e_gdbus_book_view_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (E_TYPE_GDBUS_BOOK_VIEW, proxy_iface_init)); - -static void -e_gdbus_book_view_proxy_init (EGdbusBookViewProxy *proxy) -{ - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), (GDBusInterfaceInfo *) &_e_gdbus_book_view_interface_info); -} - -static void -g_signal (GDBusProxy *proxy, - const gchar *sender_name, - const gchar *signal_name, - GVariant *parameters) -{ - guint signal_id, signal_type; - - signal_id = lookup_signal_id_from_signal_name (signal_name); - signal_type = lookup_signal_type_from_signal_name (signal_name); - - g_return_if_fail (signal_id != 0); - g_return_if_fail (signal_type != 0); - - e_gdbus_proxy_emit_signal (proxy, parameters, signals[signal_id], signal_type); -} - -static void -e_gdbus_book_view_proxy_class_init (EGdbusBookViewProxyClass *class) -{ - GDBusProxyClass *proxy_class; - - proxy_class = G_DBUS_PROXY_CLASS (class); - proxy_class->g_signal = g_signal; -} - -static void -proxy_iface_init (EGdbusBookViewIface *iface) -{ -} - -/** - * e_gdbus_book_view_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @callback: Callback function to invoke when the proxy is ready. - * @user_data: User data to pass to @callback. - * - * Like g_dbus_proxy_new() but returns a #EGdbusBookViewProxy. - * - * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_view_proxy_new_finish() to get the result. - */ -void -e_gdbus_book_view_proxy_new (GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async ( - E_TYPE_GDBUS_BOOK_VIEW_PROXY, - G_PRIORITY_DEFAULT, - cancellable, - callback, - user_data, - "g-flags", flags, - "g-name", name, - "g-connection", connection, - "g-object-path", object_path, - "g-interface-name", GDBUS_BOOK_VIEW_INTERFACE_NAME, - NULL); -} - -/** - * e_gdbus_book_view_proxy_new_finish: - * @result: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_view_proxy_new(). - * @error: Return location for error or %NULL. - * - * Finishes creating a #EGdbusBookViewProxy. - * - * Returns: A #EGdbusBookViewProxy or %NULL if @error is set. Free with g_object_unref(). - */ -EGdbusBookView * -e_gdbus_book_view_proxy_new_finish (GAsyncResult *result, - GError **error) -{ - GObject *object; - GObject *source_object; - source_object = g_async_result_get_source_object (result); - g_return_val_if_fail (source_object != NULL, NULL); - object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), result, error); - g_object_unref (source_object); - if (object != NULL) - return E_GDBUS_BOOK_VIEW (object); - else - return NULL; -} - -/** - * e_gdbus_book_view_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Like g_dbus_proxy_new_sync() but returns a #EGdbusBookViewProxy. - * - * This is a synchronous failable constructor. See e_gdbus_book_view_proxy_new() and e_gdbus_book_view_proxy_new_finish() for the asynchronous version. - * - * Returns: A #EGdbusBookViewProxy or %NULL if error is set. Free with g_object_unref(). - */ -EGdbusBookView * -e_gdbus_book_view_proxy_new_sync (GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *initable; - initable = g_initable_new ( - E_TYPE_GDBUS_BOOK_VIEW_PROXY, - cancellable, - error, - "g-flags", flags, - "g-name", name, - "g-connection", connection, - "g-object-path", object_path, - "g-interface-name", GDBUS_BOOK_VIEW_INTERFACE_NAME, - NULL); - if (initable != NULL) - return E_GDBUS_BOOK_VIEW (initable); - else - return NULL; -} - -/** - * e_gdbus_book_view_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @callback: Callback function to invoke when the proxy is ready. - * @user_data: User data to pass to @callback. - * - * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusBookViewProxy. - * - * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_view_proxy_new_for_bus_finish() to get the result. - */ -void -e_gdbus_book_view_proxy_new_for_bus (GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async ( - E_TYPE_GDBUS_BOOK_VIEW_PROXY, - G_PRIORITY_DEFAULT, - cancellable, - callback, - user_data, - "g-flags", flags, - "g-name", name, - "g-bus-type", bus_type, - "g-object-path", object_path, - "g-interface-name", GDBUS_BOOK_VIEW_INTERFACE_NAME, - NULL); -} - -/** - * e_gdbus_book_view_proxy_new_for_bus_finish: - * @result: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_view_proxy_new_for_bus(). - * @error: Return location for error or %NULL. - * - * Finishes creating a #EGdbusBookViewProxy. - * - * Returns: A #EGdbusBookViewProxy or %NULL if @error is set. Free with g_object_unref(). - */ -EGdbusBookView * -e_gdbus_book_view_proxy_new_for_bus_finish (GAsyncResult *result, - GError **error) -{ - GObject *object; - GObject *source_object; - source_object = g_async_result_get_source_object (result); - g_return_val_if_fail (source_object != NULL, NULL); - object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), result, error); - g_object_unref (source_object); - if (object != NULL) - return E_GDBUS_BOOK_VIEW (object); - else - return NULL; -} - -/** - * e_gdbus_book_view_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusBookViewProxy. - * - * This is a synchronous failable constructor. See e_gdbus_book_view_proxy_new_for_bus() and e_gdbus_book_view_proxy_new_for_bus_finish() for the asynchronous version. - * - * Returns: A #EGdbusBookViewProxy or %NULL if error is set. Free with g_object_unref(). - */ -EGdbusBookView * -e_gdbus_book_view_proxy_new_for_bus_sync (GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *initable; - initable = g_initable_new ( - E_TYPE_GDBUS_BOOK_VIEW_PROXY, - cancellable, - error, - "g-flags", flags, - "g-name", name, - "g-bus-type", bus_type, - "g-object-path", object_path, - "g-interface-name", GDBUS_BOOK_VIEW_INTERFACE_NAME, - NULL); - if (initable != NULL) - return E_GDBUS_BOOK_VIEW (initable); - else - return NULL; -} - -/* ---------------------------------------------------------------------- */ - -static void stub_iface_init (EGdbusBookViewIface *iface); - -G_DEFINE_TYPE_WITH_CODE (EGdbusBookViewStub, e_gdbus_book_view_stub, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (E_TYPE_GDBUS_BOOK_VIEW, stub_iface_init)); - -static void -e_gdbus_book_view_stub_init (EGdbusBookViewStub *stub) -{ -} - -static void -e_gdbus_book_view_stub_class_init (EGdbusBookViewStubClass *class) -{ -} - -static void -stub_iface_init (EGdbusBookViewIface *iface) -{ -} - -/** - * e_gdbus_book_view_stub_new: - * - * Creates a new stub object that can be exported via e_gdbus_book_view_register_object(). - * - * Returns: A #EGdbusBookViewStub instance. Free with g_object_unref(). - */ -EGdbusBookView * -e_gdbus_book_view_stub_new (void) -{ - return E_GDBUS_BOOK_VIEW (g_object_new (E_TYPE_GDBUS_BOOK_VIEW_STUB, NULL)); -} diff --git a/src/addressbook/libegdbus/e-gdbus-book-view.h b/src/addressbook/libegdbus/e-gdbus-book-view.h deleted file mode 100644 index 25e18d4e2..000000000 --- a/src/addressbook/libegdbus/e-gdbus-book-view.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * e-gdbus-book-view.h - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#ifndef E_GDBUS_BOOK_VIEW_H -#define E_GDBUS_BOOK_VIEW_H - -#include <gio/gio.h> - -#include <libedataserver/libedataserver.h> - -G_BEGIN_DECLS - -#define E_TYPE_GDBUS_BOOK_VIEW (e_gdbus_book_view_get_type ()) -#define E_GDBUS_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_GDBUS_BOOK_VIEW, EGdbusBookView)) -#define E_IS_GDBUS_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_GDBUS_BOOK_VIEW)) -#define E_GDBUS_BOOK_VIEW_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_TYPE_GDBUS_BOOK_VIEW, EGdbusBookViewIface)) - -/** - * EGdbusBookView: - * - * Opaque type representing a proxy or an exported object. - */ -typedef struct _EGdbusBookView EGdbusBookView; /* Dummy typedef */ -typedef struct _EGdbusBookViewIface EGdbusBookViewIface; - -GType e_gdbus_book_view_get_type (void) G_GNUC_CONST; - -/* ---------------------------------------------------------------------- */ - -typedef struct _EGdbusBookViewProxy EGdbusBookViewProxy; -typedef struct _EGdbusBookViewProxyClass EGdbusBookViewProxyClass; -typedef struct _EGdbusBookViewProxyPrivate EGdbusBookViewProxyPrivate; - -struct _EGdbusBookViewProxy -{ - GDBusProxy parent_instance; - EGdbusBookViewProxyPrivate *priv; -}; - -struct _EGdbusBookViewProxyClass -{ - GDBusProxyClass parent_class; -}; - -#define E_TYPE_GDBUS_BOOK_VIEW_PROXY (e_gdbus_book_view_proxy_get_type ()) -GType e_gdbus_book_view_proxy_get_type (void) G_GNUC_CONST; - -void e_gdbus_book_view_proxy_new (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -EGdbusBookView *e_gdbus_book_view_proxy_new_finish (GAsyncResult *result, GError **error); -EGdbusBookView *e_gdbus_book_view_proxy_new_sync (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); - -void e_gdbus_book_view_proxy_new_for_bus (GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_finish (GAsyncResult *result, GError **error); -EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_sync (GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); - -/* ---------------------------------------------------------------------- */ - -typedef struct _EGdbusBookViewStub EGdbusBookViewStub; -typedef struct _EGdbusBookViewStubClass EGdbusBookViewStubClass; -typedef struct _EGdbusBookViewStubPrivate EGdbusBookViewStubPrivate; - -struct _EGdbusBookViewStub -{ - GObject parent_instance; - EGdbusBookViewStubPrivate *priv; -}; - -struct _EGdbusBookViewStubClass -{ - GObjectClass parent_class; -}; - -#define E_TYPE_GDBUS_BOOK_VIEW_STUB (e_gdbus_book_view_stub_get_type ()) -GType e_gdbus_book_view_stub_get_type (void) G_GNUC_CONST; - -EGdbusBookView *e_gdbus_book_view_stub_new (void); - -guint e_gdbus_book_view_register_object (EGdbusBookView *object, GDBusConnection *connection, const gchar *object_path, GError **error); - -void e_gdbus_book_view_drain_notify (EGdbusBookView *object); - -const GDBusInterfaceInfo *e_gdbus_book_view_interface_info (void) G_GNUC_CONST; - -struct _EGdbusBookViewIface -{ - GTypeInterface parent_iface; - - /* Signal handlers for receiving D-Bus signals: */ - void (*objects_added) (EGdbusBookView *object, const gchar * const *arg_objects); - void (*objects_modified) (EGdbusBookView *object, const gchar * const *arg_objects); - void (*objects_removed) (EGdbusBookView *object, const gchar * const *arg_uids); - - void (*progress) (EGdbusBookView *object, guint arg_percent, const gchar *arg_message); - void (*complete) (EGdbusBookView *object, const gchar * const *arg_error); - - /* Signal handlers for handling D-Bus method calls: */ - gboolean (*handle_start) (EGdbusBookView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_stop) (EGdbusBookView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_set_flags) (EGdbusBookView *object, GDBusMethodInvocation *invocation, guint in_flags); - gboolean (*handle_dispose) (EGdbusBookView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_set_fields_of_interest)(EGdbusBookView *object, GDBusMethodInvocation *invocation, const gchar * const *in_only_fields); -}; - -/* D-Bus Methods */ -void e_gdbus_book_view_call_start (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_book_view_call_start_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_book_view_call_start_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_book_view_call_stop (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_book_view_call_stop_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_book_view_call_stop_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_book_view_call_set_flags (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean e_gdbus_book_view_call_set_flags_finish (GDBusProxy *proxy, - GAsyncResult *res, - GError **error); -gboolean e_gdbus_book_view_call_set_flags_sync (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GError **error); - -void e_gdbus_book_view_call_dispose (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_book_view_call_dispose_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_book_view_call_dispose_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_book_view_call_set_fields_of_interest (GDBusProxy *proxy, const gchar * const *in_only_fileds, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_book_view_call_set_fields_of_interest_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_book_view_call_set_fields_of_interest_sync (GDBusProxy *proxy, const gchar * const *in_only_fileds, GCancellable *cancellable, GError **error); - -/* D-Bus Methods Completion Helpers */ -#define e_gdbus_book_view_complete_start e_gdbus_complete_sync_method_void -#define e_gdbus_book_view_complete_stop e_gdbus_complete_sync_method_void -#define e_gdbus_book_view_complete_set_flags e_gdbus_complete_sync_method_void -#define e_gdbus_book_view_complete_dispose e_gdbus_complete_sync_method_void -#define e_gdbus_book_view_complete_set_fields_of_interest e_gdbus_complete_sync_method_void - -/* D-Bus Signal Emission Helpers */ -void e_gdbus_book_view_emit_objects_added (EGdbusBookView *object, const gchar * const *arg_objects); -void e_gdbus_book_view_emit_objects_modified (EGdbusBookView *object, const gchar * const *arg_objects); -void e_gdbus_book_view_emit_objects_removed (EGdbusBookView *object, const gchar * const *arg_uids); - -void e_gdbus_book_view_emit_progress (EGdbusBookView *object, guint arg_percent, const gchar *arg_message); -void e_gdbus_book_view_emit_complete (EGdbusBookView *object, const gchar * const *arg_error); - -G_END_DECLS - -#endif /* E_GDBUS_BOOK_VIEW_H */ diff --git a/src/calendar/CMakeLists.txt b/src/calendar/CMakeLists.txt index b555f9e97..d02647c7d 100644 --- a/src/calendar/CMakeLists.txt +++ b/src/calendar/CMakeLists.txt @@ -1,4 +1,3 @@ add_subdirectory(backends) add_subdirectory(libecal) add_subdirectory(libedata-cal) -add_subdirectory(libegdbus) diff --git a/src/calendar/libecal/CMakeLists.txt b/src/calendar/libecal/CMakeLists.txt index addfa07a0..b1cdf8d5a 100644 --- a/src/calendar/libecal/CMakeLists.txt +++ b/src/calendar/libecal/CMakeLists.txt @@ -5,7 +5,6 @@ add_pkgconfig_file(libecal.pc.in libecal-${API_VERSION}.pc) set(DEPENDENCIES edbus-private edataserver - egdbus-cal ) set(SOURCES @@ -72,12 +71,10 @@ target_include_directories(ecal PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/calendar - ${CMAKE_BINARY_DIR}/src/calendar/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/calendar - ${CMAKE_SOURCE_DIR}/src/calendar/libegdbus + ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_CURRENT_BINARY_DIR} ${CALENDAR_INCLUDE_DIRS} ) diff --git a/src/calendar/libecal/e-cal-client-view.c b/src/calendar/libecal/e-cal-client-view.c index 8dcf3da48..70dcb50e9 100644 --- a/src/calendar/libecal/e-cal-client-view.c +++ b/src/calendar/libecal/e-cal-client-view.c @@ -38,7 +38,7 @@ #include "e-cal-client.h" #include "e-cal-client-view.h" -#include "e-gdbus-cal-view.h" +#include "e-dbus-calendar-view.h" #define E_CAL_CLIENT_VIEW_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -48,7 +48,7 @@ typedef struct _SignalClosure SignalClosure; struct _ECalClientViewPrivate { ECalClient *client; - GDBusProxy *dbus_proxy; + EDBusCalendarView *dbus_proxy; GDBusConnection *connection; gchar *object_path; gboolean running; @@ -300,7 +300,7 @@ cal_client_view_emit_complete_idle_cb (gpointer user_data) } static void -cal_client_view_objects_added_cb (EGdbusCalView *dbus_proxy, +cal_client_view_objects_added_cb (EDBusCalendarView *dbus_proxy, const gchar * const *objects, GWeakRef *client_view_weak_ref) { @@ -340,7 +340,7 @@ cal_client_view_objects_added_cb (EGdbusCalView *dbus_proxy, } static void -cal_client_view_objects_modified_cb (EGdbusCalView *dbus_proxy, +cal_client_view_objects_modified_cb (EDBusCalendarView *dbus_proxy, const gchar * const *objects, GWeakRef *client_view_weak_ref) { @@ -380,7 +380,7 @@ cal_client_view_objects_modified_cb (EGdbusCalView *dbus_proxy, } static void -cal_client_view_objects_removed_cb (EGdbusCalView *dbus_proxy, +cal_client_view_objects_removed_cb (EDBusCalendarView *dbus_proxy, const gchar * const *uids, GWeakRef *client_view_weak_ref) { @@ -420,7 +420,7 @@ cal_client_view_objects_removed_cb (EGdbusCalView *dbus_proxy, } static void -cal_client_view_progress_cb (EGdbusCalView *dbus_proxy, +cal_client_view_progress_cb (EDBusCalendarView *dbus_proxy, guint percent, const gchar *message, GWeakRef *client_view_weak_ref) @@ -462,8 +462,9 @@ cal_client_view_progress_cb (EGdbusCalView *dbus_proxy, } static void -cal_client_view_complete_cb (EGdbusCalView *dbus_proxy, - const gchar * const *arg_error, +cal_client_view_complete_cb (EDBusCalendarView *dbus_proxy, + const gchar *arg_error_name, + const gchar *arg_error_message, GWeakRef *client_view_weak_ref) { ECalClientView *client_view; @@ -482,8 +483,13 @@ cal_client_view_complete_cb (EGdbusCalView *dbus_proxy, signal_closure = g_slice_new0 (SignalClosure); g_weak_ref_init (&signal_closure->client_view, client_view); - e_gdbus_templates_decode_error ( - arg_error, &signal_closure->error); + if (arg_error_name && *arg_error_name && arg_error_message) + signal_closure->error = g_dbus_error_new_for_dbus_error (arg_error_name, arg_error_message); + else + signal_closure->error = NULL; + + if (signal_closure->error) + g_dbus_error_strip_remote_error (signal_closure->error); main_context = cal_client_view_ref_main_context (client_view); @@ -633,7 +639,7 @@ cal_client_view_dispose (GObject *object) * Also omit a callback function, so the GDBusMessage * uses G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED. */ - e_gdbus_cal_view_call_dispose (priv->dbus_proxy, NULL, NULL, NULL); + e_dbus_calendar_view_call_dispose (priv->dbus_proxy, NULL, NULL, NULL); g_object_unref (priv->dbus_proxy); priv->dbus_proxy = NULL; } @@ -665,7 +671,7 @@ cal_client_view_initable_init (GInitable *initable, { ECalClient *cal_client; ECalClientViewPrivate *priv; - EGdbusCalView *gdbus_calview; + EDBusCalendarView *dbus_calview; gulong handler_id; gchar *bus_name; @@ -684,7 +690,7 @@ cal_client_view_initable_init (GInitable *initable, bus_name = e_client_dup_bus_name (E_CLIENT (cal_client)); g_object_unref (cal_client); - gdbus_calview = e_gdbus_cal_view_proxy_new_sync ( + dbus_calview = e_dbus_calendar_view_proxy_new_sync ( priv->connection, G_DBUS_PROXY_FLAGS_NONE, bus_name, @@ -693,10 +699,10 @@ cal_client_view_initable_init (GInitable *initable, g_free (bus_name); - if (gdbus_calview == NULL) + if (dbus_calview == NULL) return FALSE; - priv->dbus_proxy = G_DBUS_PROXY (gdbus_calview); + priv->dbus_proxy = dbus_calview; handler_id = g_signal_connect_data ( priv->dbus_proxy, "objects-added", @@ -1011,7 +1017,7 @@ e_cal_client_view_start (ECalClientView *client_view, client_view->priv->running = TRUE; - e_gdbus_cal_view_call_start_sync ( + e_dbus_calendar_view_call_start_sync ( client_view->priv->dbus_proxy, NULL, &local_error); if (local_error != NULL) { @@ -1040,7 +1046,7 @@ e_cal_client_view_stop (ECalClientView *client_view, client_view->priv->running = FALSE; - e_gdbus_cal_view_call_stop_sync ( + e_dbus_calendar_view_call_stop_sync ( client_view->priv->dbus_proxy, NULL, &local_error); if (local_error != NULL) { @@ -1079,7 +1085,7 @@ e_cal_client_view_set_fields_of_interest (ECalClientView *client_view, g_return_if_fail (E_IS_CAL_CLIENT_VIEW (client_view)); strv = e_client_util_slist_to_strv (fields_of_interest); - e_gdbus_cal_view_call_set_fields_of_interest_sync ( + e_dbus_calendar_view_call_set_fields_of_interest_sync ( client_view->priv->dbus_proxy, (const gchar * const *) strv, NULL, &local_error); @@ -1110,7 +1116,7 @@ e_cal_client_view_set_flags (ECalClientView *client_view, g_return_if_fail (E_IS_CAL_CLIENT_VIEW (client_view)); - e_gdbus_cal_view_call_set_flags_sync ( + e_dbus_calendar_view_call_set_flags_sync ( client_view->priv->dbus_proxy, flags, NULL, &local_error); if (local_error != NULL) { diff --git a/src/calendar/libedata-cal/CMakeLists.txt b/src/calendar/libedata-cal/CMakeLists.txt index 15df5d213..749fdf68d 100644 --- a/src/calendar/libedata-cal/CMakeLists.txt +++ b/src/calendar/libedata-cal/CMakeLists.txt @@ -5,7 +5,6 @@ set(DEPENDENCIES ecal edbus-private edataserver - egdbus-cal ) set(SOURCES @@ -73,12 +72,10 @@ target_include_directories(edata-cal PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/calendar - ${CMAKE_BINARY_DIR}/src/calendar/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/calendar - ${CMAKE_SOURCE_DIR}/src/calendar/libegdbus + ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_CURRENT_BINARY_DIR} ${CALENDAR_INCLUDE_DIRS} ) @@ -120,12 +117,10 @@ target_include_directories(evolution-calendar-factory-subprocess PUBLIC ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/calendar - ${CMAKE_BINARY_DIR}/src/calendar/libegdbus ${CMAKE_BINARY_DIR}/src/private ${CMAKE_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_SOURCE_DIR}/src/calendar - ${CMAKE_SOURCE_DIR}/src/calendar/libegdbus + ${CMAKE_SOURCE_DIR}/src/private ${CMAKE_CURRENT_BINARY_DIR} ${CALENDAR_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} diff --git a/src/calendar/libedata-cal/e-data-cal-view.c b/src/calendar/libedata-cal/e-data-cal-view.c index 6180baaaf..f858349b4 100644 --- a/src/calendar/libedata-cal/e-data-cal-view.c +++ b/src/calendar/libedata-cal/e-data-cal-view.c @@ -39,7 +39,7 @@ #include "e-cal-backend.h" #include "e-cal-backend-sexp.h" #include "e-data-cal-view.h" -#include "e-gdbus-cal-view.h" +#include "e-dbus-calendar-view.h" #define E_DATA_CAL_VIEW_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -53,7 +53,7 @@ struct _EDataCalViewPrivate { GDBusConnection *connection; - EGdbusCalView *gdbus_object; + EDBusCalendarView *dbus_object; gchar *object_path; /* The backend we are monitoring */ @@ -187,7 +187,7 @@ calview_start_thread (gpointer data) } static gboolean -impl_DataCalView_start (EGdbusCalView *object, +impl_DataCalView_start (EDBusCalendarView *object, GDBusMethodInvocation *invocation, EDataCalView *view) { @@ -206,7 +206,7 @@ impl_DataCalView_start (EGdbusCalView *object, g_thread_unref (thread); } - e_gdbus_cal_view_complete_start (object, invocation, NULL); + e_dbus_calendar_view_complete_start (object, invocation); return TRUE; } @@ -224,7 +224,7 @@ calview_stop_thread (gpointer data) } static gboolean -impl_DataCalView_stop (EGdbusCalView *object, +impl_DataCalView_stop (EDBusCalendarView *object, GDBusMethodInvocation *invocation, EDataCalView *view) { @@ -235,30 +235,30 @@ impl_DataCalView_stop (EGdbusCalView *object, thread = g_thread_new (NULL, calview_stop_thread, g_object_ref (view)); g_thread_unref (thread); - e_gdbus_cal_view_complete_stop (object, invocation, NULL); + e_dbus_calendar_view_complete_stop (object, invocation); return TRUE; } static gboolean -impl_DataCalView_setFlags (EGdbusCalView *object, +impl_DataCalView_setFlags (EDBusCalendarView *object, GDBusMethodInvocation *invocation, ECalClientViewFlags flags, EDataCalView *view) { view->priv->flags = flags; - e_gdbus_cal_view_complete_set_flags (object, invocation, NULL); + e_dbus_calendar_view_complete_set_flags (object, invocation); return TRUE; } static gboolean -impl_DataCalView_dispose (EGdbusCalView *object, +impl_DataCalView_dispose (EDBusCalendarView *object, GDBusMethodInvocation *invocation, EDataCalView *view) { - e_gdbus_cal_view_complete_dispose (object, invocation, NULL); + e_dbus_calendar_view_complete_dispose (object, invocation); e_cal_backend_stop_view (view->priv->backend, view); view->priv->stopped = TRUE; @@ -268,7 +268,7 @@ impl_DataCalView_dispose (EGdbusCalView *object, } static gboolean -impl_DataCalView_set_fields_of_interest (EGdbusCalView *object, +impl_DataCalView_set_fields_of_interest (EDBusCalendarView *object, GDBusMethodInvocation *invocation, const gchar * const *in_fields_of_interest, EDataCalView *view) @@ -301,8 +301,7 @@ impl_DataCalView_set_fields_of_interest (EGdbusCalView *object, g_strdup (field), GINT_TO_POINTER (1)); } - e_gdbus_cal_view_complete_set_fields_of_interest ( - object, invocation, NULL); + e_dbus_calendar_view_complete_set_fields_of_interest (object, invocation); return TRUE; } @@ -438,7 +437,7 @@ data_cal_view_dispose (GObject *object) g_mutex_unlock (&priv->pending_mutex); g_clear_object (&priv->connection); - g_clear_object (&priv->gdbus_object); + g_clear_object (&priv->dbus_object); g_clear_object (&priv->backend); g_clear_object (&priv->sexp); @@ -483,8 +482,8 @@ data_cal_view_initable_init (GInitable *initable, view = E_DATA_CAL_VIEW (initable); - return e_gdbus_cal_view_register_object ( - view->priv->gdbus_object, + return g_dbus_interface_skeleton_export ( + G_DBUS_INTERFACE_SKELETON (view->priv->dbus_object), view->priv->connection, view->priv->object_path, error); @@ -567,21 +566,21 @@ e_data_cal_view_init (EDataCalView *view) view->priv->flags = E_CAL_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL; - view->priv->gdbus_object = e_gdbus_cal_view_stub_new (); + view->priv->dbus_object = e_dbus_calendar_view_skeleton_new (); g_signal_connect ( - view->priv->gdbus_object, "handle-start", + view->priv->dbus_object, "handle-start", G_CALLBACK (impl_DataCalView_start), view); g_signal_connect ( - view->priv->gdbus_object, "handle-stop", + view->priv->dbus_object, "handle-stop", G_CALLBACK (impl_DataCalView_stop), view); g_signal_connect ( - view->priv->gdbus_object, "handle-set-flags", + view->priv->dbus_object, "handle-set-flags", G_CALLBACK (impl_DataCalView_setFlags), view); g_signal_connect ( - view->priv->gdbus_object, "handle-dispose", + view->priv->dbus_object, "handle-dispose", G_CALLBACK (impl_DataCalView_dispose), view); g_signal_connect ( - view->priv->gdbus_object, "handle-set-fields-of-interest", + view->priv->dbus_object, "handle-set-fields-of-interest", G_CALLBACK (impl_DataCalView_set_fields_of_interest), view); view->priv->backend = NULL; @@ -649,8 +648,8 @@ send_pending_adds (EDataCalView *view) if (view->priv->adds->len == 0) return; - e_gdbus_cal_view_emit_objects_added ( - view->priv->gdbus_object, + e_dbus_calendar_view_emit_objects_added ( + view->priv->dbus_object, (const gchar * const *) view->priv->adds->data); reset_array (view->priv->adds); } @@ -661,8 +660,8 @@ send_pending_changes (EDataCalView *view) if (view->priv->changes->len == 0) return; - e_gdbus_cal_view_emit_objects_modified ( - view->priv->gdbus_object, + e_dbus_calendar_view_emit_objects_modified ( + view->priv->dbus_object, (const gchar * const *) view->priv->changes->data); reset_array (view->priv->changes); } @@ -674,8 +673,8 @@ send_pending_removes (EDataCalView *view) return; /* send ECalComponentIds as <uid>[\n<rid>], as encoded in notify_remove() */ - e_gdbus_cal_view_emit_objects_removed ( - view->priv->gdbus_object, + e_dbus_calendar_view_emit_objects_removed ( + view->priv->dbus_object, (const gchar * const *) view->priv->removes->data); reset_array (view->priv->removes); } @@ -1359,18 +1358,18 @@ e_data_cal_view_notify_progress (EDataCalView *view, gint percent, const gchar *message) { - gchar *gdbus_message = NULL; + gchar *dbus_message = NULL; g_return_if_fail (E_IS_DATA_CAL_VIEW (view)); if (!view->priv->started || view->priv->stopped) return; - e_gdbus_cal_view_emit_progress ( - view->priv->gdbus_object, percent, - e_util_ensure_gdbus_string (message, &gdbus_message)); + e_dbus_calendar_view_emit_progress ( + view->priv->dbus_object, percent, + e_util_ensure_gdbus_string (message, &dbus_message)); - g_free (gdbus_message); + g_free (dbus_message); } /** @@ -1387,7 +1386,7 @@ void e_data_cal_view_notify_complete (EDataCalView *view, const GError *error) { - gchar **error_strv; + gchar *error_name, *error_message; g_return_if_fail (E_IS_DATA_CAL_VIEW (view)); @@ -1402,13 +1401,25 @@ e_data_cal_view_notify_complete (EDataCalView *view, send_pending_changes (view); send_pending_removes (view); - error_strv = e_gdbus_templates_encode_error (error); + if (error) { + gchar *dbus_error_name = g_dbus_error_encode_gerror (error); - e_gdbus_cal_view_emit_complete ( - view->priv->gdbus_object, - (const gchar * const *) error_strv); + error_name = e_util_utf8_make_valid (dbus_error_name ? dbus_error_name : ""); + error_message = e_util_utf8_make_valid (error->message); - g_strfreev (error_strv); + g_free (dbus_error_name); + } else { + error_name = g_strdup (""); + error_message = g_strdup (""); + } + + e_dbus_calendar_view_emit_complete ( + view->priv->dbus_object, + error_name, + error_message); + + g_free (error_name); + g_free (error_message); g_mutex_unlock (&view->priv->pending_mutex); } diff --git a/src/calendar/libegdbus/CMakeLists.txt b/src/calendar/libegdbus/CMakeLists.txt deleted file mode 100644 index 558c60c32..000000000 --- a/src/calendar/libegdbus/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -set(SOURCES - e-gdbus-cal-view.h - e-gdbus-cal-view.c -) - -set(DEPENDENCIES - edataserver -) - -add_library(egdbus-cal STATIC - ${SOURCES} -) - -add_dependencies(egdbus-cal - ${DEPENDENCIES} -) - -target_compile_definitions(egdbus-cal PRIVATE - -DG_LOG_DOMAIN=\"egdbus-cal\" -) - -target_compile_options(egdbus-cal PUBLIC - ${DATA_SERVER_CFLAGS} -) - -target_include_directories(egdbus-cal PUBLIC - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/src - ${DATA_SERVER_INCLUDE_DIRS} -) - -target_link_libraries(egdbus-cal - ${DEPENDENCIES} - ${DATA_SERVER_LDFLAGS} -) diff --git a/src/calendar/libegdbus/e-gdbus-cal-view.c b/src/calendar/libegdbus/e-gdbus-cal-view.c deleted file mode 100644 index ce9acc3c1..000000000 --- a/src/calendar/libegdbus/e-gdbus-cal-view.c +++ /dev/null @@ -1,865 +0,0 @@ -/* - * e-gdbus-cal-view.c - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <stdio.h> -#include <gio/gio.h> - -#include "e-gdbus-cal-view.h" - -#define GDBUS_CAL_VIEW_INTERFACE_NAME "org.gnome.evolution.dataserver.CalendarView" - -typedef EGdbusCalViewIface EGdbusCalViewInterface; -G_DEFINE_INTERFACE (EGdbusCalView, e_gdbus_cal_view, G_TYPE_OBJECT); - -enum -{ - _0_SIGNAL, - __OBJECTS_ADDED_SIGNAL, - __OBJECTS_MODIFIED_SIGNAL, - __OBJECTS_REMOVED_SIGNAL, - __PROGRESS_SIGNAL, - __COMPLETE_SIGNAL, - __START_METHOD, - __STOP_METHOD, - __SET_FLAGS_METHOD, - __DISPOSE_METHOD, - __SET_FIELDS_OF_INTEREST_METHOD, - __LAST_SIGNAL -}; - -static guint signals[__LAST_SIGNAL] = {0}; - -/* ------------------------------------------------------------------------- */ - -/* Various lookup tables */ - -static GHashTable *_method_name_to_id = NULL; -static GHashTable *_method_name_to_type = NULL; -static GHashTable *_signal_name_to_id = NULL; -static GHashTable *_signal_name_to_type = NULL; - -static guint -lookup_method_id_from_method_name (const gchar *method_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name)); -} - -static guint -lookup_method_type_from_method_name (const gchar *method_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_type, method_name)); -} - -static guint -lookup_signal_id_from_signal_name (const gchar *signal_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name)); -} - -static guint -lookup_signal_type_from_signal_name (const gchar *signal_name) -{ - return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_type, signal_name)); -} - -/* ------------------------------------------------------------------------- */ - -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_CAL_VIEW_INTERFACE_NAME, - objects_added) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_CAL_VIEW_INTERFACE_NAME, - objects_modified) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_CAL_VIEW_INTERFACE_NAME, - objects_removed) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_UINT_STRING (GDBUS_CAL_VIEW_INTERFACE_NAME, - progress) -E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV (GDBUS_CAL_VIEW_INTERFACE_NAME, - complete) - -static void -e_gdbus_cal_view_default_init (EGdbusCalViewIface *iface) -{ - /* Build lookup structures */ - _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal); - _method_name_to_type = g_hash_table_new (g_str_hash, g_str_equal); - _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal); - _signal_name_to_type = g_hash_table_new (g_str_hash, g_str_equal); - - /* GObject signals definitions for D-Bus signals: */ - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusCalViewIface, - "objects_added", - objects_added, - __OBJECTS_ADDED_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusCalViewIface, - "objects_modified", - objects_modified, - __OBJECTS_MODIFIED_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusCalViewIface, - "objects_removed", - objects_removed, - __OBJECTS_REMOVED_SIGNAL) - E_INIT_GDBUS_SIGNAL_UINT_STRING ( - EGdbusCalViewIface, - "progress", - progress, - __PROGRESS_SIGNAL) - E_INIT_GDBUS_SIGNAL_STRV ( - EGdbusCalViewIface, - "complete", - complete, - __COMPLETE_SIGNAL) - - /* GObject signals definitions for D-Bus methods: */ - E_INIT_GDBUS_METHOD_VOID ( - EGdbusCalViewIface, - "start", - start, - __START_METHOD) - E_INIT_GDBUS_METHOD_VOID ( - EGdbusCalViewIface, - "stop", - stop, - __STOP_METHOD) - E_INIT_GDBUS_METHOD_UINT ( - EGdbusCalViewIface, - "set_flags", - set_flags, - __SET_FLAGS_METHOD) - E_INIT_GDBUS_METHOD_VOID ( - EGdbusCalViewIface, - "dispose", - dispose, - __DISPOSE_METHOD) - E_INIT_GDBUS_METHOD_STRV ( - EGdbusCalViewIface, - "set_fields_of_interest", - set_fields_of_interest, - __SET_FIELDS_OF_INTEREST_METHOD) -} - -void -e_gdbus_cal_view_call_start (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("start", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_cal_view_call_start_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_cal_view_call_start_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("start", proxy, cancellable, error); -} - -void -e_gdbus_cal_view_call_stop (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("stop", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_cal_view_call_stop_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_cal_view_call_stop_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("stop", proxy, cancellable, error); -} - -void -e_gdbus_cal_view_call_set_flags (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_uint ("set_flags", proxy, in_flags, cancellable, callback, user_data); -} - -gboolean -e_gdbus_cal_view_call_set_flags_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_cal_view_call_set_flags_sync (GDBusProxy *proxy, - guint in_flags, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_uint__void ("set_flags", proxy, in_flags, cancellable, error); -} - -void -e_gdbus_cal_view_call_dispose (GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_void ("dispose", proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_cal_view_call_dispose_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_cal_view_call_dispose_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_void__void ("dispose", proxy, cancellable, error); -} - -void -e_gdbus_cal_view_call_set_fields_of_interest (GDBusProxy *proxy, - const gchar * const *in_only_fields, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_method_call_strv ("set_fields_of_interest", proxy, in_only_fields, cancellable, callback, user_data); -} - -gboolean -e_gdbus_cal_view_call_set_fields_of_interest_finish (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return e_gdbus_proxy_method_call_finish_void (proxy, result, error); -} - -gboolean -e_gdbus_cal_view_call_set_fields_of_interest_sync (GDBusProxy *proxy, - const gchar * const *in_only_fields, - GCancellable *cancellable, - GError **error) -{ - return e_gdbus_proxy_method_call_sync_strv__void ("set_fields_of_interest", proxy, in_only_fields, cancellable, error); -} - -void -e_gdbus_cal_view_emit_objects_added (EGdbusCalView *object, - const gchar * const *arg_objects) -{ - g_signal_emit (object, signals[__OBJECTS_ADDED_SIGNAL], 0, arg_objects); -} - -void -e_gdbus_cal_view_emit_objects_modified (EGdbusCalView *object, - const gchar * const *arg_objects) -{ - g_signal_emit (object, signals[__OBJECTS_MODIFIED_SIGNAL], 0, arg_objects); -} - -void -e_gdbus_cal_view_emit_objects_removed (EGdbusCalView *object, - const gchar * const *arg_uids) -{ - g_signal_emit (object, signals[__OBJECTS_REMOVED_SIGNAL], 0, arg_uids); -} - -void -e_gdbus_cal_view_emit_progress (EGdbusCalView *object, - guint arg_percent, - const gchar *arg_message) -{ - g_signal_emit (object, signals[__PROGRESS_SIGNAL], 0, arg_percent, arg_message); -} - -void -e_gdbus_cal_view_emit_complete (EGdbusCalView *object, - const gchar * const *arg_error) -{ - g_signal_emit (object, signals[__COMPLETE_SIGNAL], 0, arg_error); -} - -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (cal_view, - objects_added, - objects, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (cal_view, - objects_modified, - objects, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (cal_view, - objects_removed, - uids, - "as") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_2 (cal_view, - progress, - percent, - "u", - message, - "s") -E_DECLARE_GDBUS_NOTIFY_SIGNAL_1 (cal_view, - complete, - error, - "as") - -E_DECLARE_GDBUS_SYNC_METHOD_0 (cal_view, - start) -E_DECLARE_GDBUS_SYNC_METHOD_0 (cal_view, - stop) -E_DECLARE_GDBUS_SYNC_METHOD_0 (cal_view, - dispose) -E_DECLARE_GDBUS_SYNC_METHOD_1 (cal_view, - set_flags, - flags, - "u") -E_DECLARE_GDBUS_SYNC_METHOD_1 (cal_view, - set_fields_of_interest, - fields_of_interest, - "as") - -static const GDBusMethodInfo * const e_gdbus_cal_view_method_info_pointers[] = -{ - &E_DECLARED_GDBUS_METHOD_INFO_NAME (cal_view, start), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (cal_view, stop), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (cal_view, set_flags), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (cal_view, dispose), - &E_DECLARED_GDBUS_METHOD_INFO_NAME (cal_view, set_fields_of_interest), - NULL -}; - -static const GDBusSignalInfo * const e_gdbus_cal_view_signal_info_pointers[] = -{ - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (cal_view, objects_added), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (cal_view, objects_modified), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (cal_view, objects_removed), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (cal_view, progress), - &E_DECLARED_GDBUS_SIGNAL_INFO_NAME (cal_view, complete), - NULL -}; - -static const GDBusInterfaceInfo _e_gdbus_cal_view_interface_info = -{ - -1, - (gchar *) GDBUS_CAL_VIEW_INTERFACE_NAME, - (GDBusMethodInfo **) &e_gdbus_cal_view_method_info_pointers, - (GDBusSignalInfo **) &e_gdbus_cal_view_signal_info_pointers, - (GDBusPropertyInfo **) NULL -}; - -static void -handle_method_call (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - guint method_id, method_type; - - method_id = lookup_method_id_from_method_name (method_name); - method_type = lookup_method_type_from_method_name (method_name); - - g_return_if_fail (method_id != 0); - g_return_if_fail (method_type != 0); - - e_gdbus_stub_handle_method_call (user_data, invocation, parameters, method_name, signals[method_id], method_type); -} - -static GVariant * -get_property (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GError **error, - gpointer user_data) -{ - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "This implementation does not support property `%s'", property_name); - return NULL; -} - -static gboolean -set_property (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GVariant *value, - GError **error, - gpointer user_data) -{ - g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "This implementation does not support property `%s'", property_name); - return FALSE; -} - -static const GDBusInterfaceVTable e_gdbus_cal_view_interface_vtable = -{ - handle_method_call, - get_property, - set_property -}; - -static gboolean -emit_notifications_in_idle (gpointer user_data) -{ - GObject *object = G_OBJECT (user_data); - GDBusConnection *connection; - const gchar *path; - GHashTable *notification_queue; - GHashTableIter iter; - const gchar *property_name; - GVariant *value; - GVariantBuilder *builder; - GVariantBuilder *invalidated_builder; - GHashTable *pvc; - gboolean has_changes; - - notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue"); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - pvc = g_object_get_data (object, "gdbus-codegen-pvc"); - g_return_val_if_fail (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL, FALSE); - - builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); - invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); - g_hash_table_iter_init (&iter, notification_queue); - has_changes = FALSE; - while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value)) { - GVariant *cached_value; - cached_value = g_hash_table_lookup (pvc, property_name); - if (cached_value == NULL || !g_variant_equal (cached_value, value)) { - g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value)); - g_variant_builder_add (builder, "{sv}", property_name, value); - has_changes = TRUE; - } - } - - if (has_changes) { - g_dbus_connection_emit_signal ( - connection, - NULL, - path, - "org.freedesktop.DBus.Properties", - "PropertiesChanged", - g_variant_new ( - "(sa{sv}as)", - GDBUS_CAL_VIEW_INTERFACE_NAME, - builder, - invalidated_builder), - NULL); - } else { - g_variant_builder_unref (builder); - g_variant_builder_unref (invalidated_builder); - } - - g_hash_table_remove_all (notification_queue); - g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0)); - return FALSE; -} - -/** - * e_gdbus_cal_view_drain_notify: - * @object: A #EGdbusCalView that is exported. - * - * If @object has queued notifications, empty the queue forcing - * the <literal>PropertiesChanged</literal> signal to be emitted. - * See <xref linkend="EGdbusCalView.description"/> for more background information. - */ -void -e_gdbus_cal_view_drain_notify (EGdbusCalView *object) -{ - gint idle_id; - idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id")); - if (idle_id > 0) { - emit_notifications_in_idle (object); - g_source_remove (idle_id); - } -} - -static void -on_object_unregistered (GObject *object) -{ - gint idle_id; - idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id")); - if (idle_id > 0) { - g_source_remove (idle_id); - } - g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL); - g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL); -} - -/** - * e_gdbus_cal_view_register_object: - * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusCalView interface. - * @connection: A #GDBusConnection. - * @object_path: The object to register the object at. - * @error: Return location for error or %NULL. - * - * Registers @object at @object_path on @connection. - * - * See <xref linkend="EGdbusCalView.description"/> - * for how properties, methods and signals are handled. - * - * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object(). - */ -guint -e_gdbus_cal_view_register_object (EGdbusCalView *object, - GDBusConnection *connection, - const gchar *object_path, - GError **error) -{ - GHashTable *pvc; - - pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref); - - g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free); - g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection); - g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref); - return g_dbus_connection_register_object ( - connection, - object_path, - (GDBusInterfaceInfo *) &_e_gdbus_cal_view_interface_info, - &e_gdbus_cal_view_interface_vtable, - object, - (GDestroyNotify) on_object_unregistered, - error); -} - -/** - * e_gdbus_cal_view_interface_info: - * - * Gets interface description for the <literal>org.gnome.evolution.dataserver.CalendarView</literal> D-Bus interface. - * - * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated. - */ -const GDBusInterfaceInfo * -e_gdbus_cal_view_interface_info (void) -{ - return &_e_gdbus_cal_view_interface_info; -} - -/* ---------------------------------------------------------------------- */ - -static void proxy_iface_init (EGdbusCalViewIface *iface); - -G_DEFINE_TYPE_WITH_CODE (EGdbusCalViewProxy, e_gdbus_cal_view_proxy, G_TYPE_DBUS_PROXY, - G_IMPLEMENT_INTERFACE (E_TYPE_GDBUS_CAL_VIEW, proxy_iface_init)); - -static void -e_gdbus_cal_view_proxy_init (EGdbusCalViewProxy *proxy) -{ - g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), (GDBusInterfaceInfo *) &_e_gdbus_cal_view_interface_info); -} - -static void -g_signal (GDBusProxy *proxy, - const gchar *sender_name, - const gchar *signal_name, - GVariant *parameters) -{ - guint signal_id, signal_type; - - signal_id = lookup_signal_id_from_signal_name (signal_name); - signal_type = lookup_signal_type_from_signal_name (signal_name); - - g_return_if_fail (signal_id != 0); - g_return_if_fail (signal_type != 0); - - e_gdbus_proxy_emit_signal (proxy, parameters, signals[signal_id], signal_type); -} - -static void -e_gdbus_cal_view_proxy_class_init (EGdbusCalViewProxyClass *class) -{ - GDBusProxyClass *proxy_class; - - proxy_class = G_DBUS_PROXY_CLASS (class); - proxy_class->g_signal = g_signal; -} - -static void -proxy_iface_init (EGdbusCalViewIface *iface) -{ -} - -/** - * e_gdbus_cal_view_proxy_new: - * @connection: A #GDBusConnection. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @callback: Callback function to invoke when the proxy is ready. - * @user_data: User data to pass to @callback. - * - * Like g_dbus_proxy_new() but returns a #EGdbusCalViewProxy. - * - * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_view_proxy_new_finish() to get the result. - */ -void -e_gdbus_cal_view_proxy_new (GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async ( - E_TYPE_GDBUS_CAL_VIEW_PROXY, - G_PRIORITY_DEFAULT, - cancellable, - callback, - user_data, - "g-flags", flags, - "g-name", name, - "g-connection", connection, - "g-object-path", object_path, - "g-interface-name", GDBUS_CAL_VIEW_INTERFACE_NAME, - NULL); -} - -/** - * e_gdbus_cal_view_proxy_new_finish: - * @result: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_view_proxy_new(). - * @error: Return location for error or %NULL. - * - * Finishes creating a #EGdbusCalViewProxy. - * - * Returns: A #EGdbusCalViewProxy or %NULL if @error is set. Free with g_object_unref(). - */ -EGdbusCalView * -e_gdbus_cal_view_proxy_new_finish (GAsyncResult *result, - GError **error) -{ - GObject *object; - GObject *source_object; - source_object = g_async_result_get_source_object (result); - g_return_val_if_fail (source_object != NULL, NULL); - object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), result, error); - g_object_unref (source_object); - if (object != NULL) - return E_GDBUS_CAL_VIEW (object); - else - return NULL; -} - -/** - * e_gdbus_cal_view_proxy_new_sync: - * @connection: A #GDBusConnection. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Like g_dbus_proxy_new_sync() but returns a #EGdbusCalViewProxy. - * - * This is a synchronous failable constructor. See e_gdbus_cal_view_proxy_new() and e_gdbus_cal_view_proxy_new_finish() for the asynchronous version. - * - * Returns: A #EGdbusCalViewProxy or %NULL if error is set. Free with g_object_unref(). - */ -EGdbusCalView * -e_gdbus_cal_view_proxy_new_sync (GDBusConnection *connection, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *initable; - initable = g_initable_new ( - E_TYPE_GDBUS_CAL_VIEW_PROXY, - cancellable, - error, - "g-flags", flags, - "g-name", name, - "g-connection", connection, - "g-object-path", object_path, - "g-interface-name", GDBUS_CAL_VIEW_INTERFACE_NAME, - NULL); - if (initable != NULL) - return E_GDBUS_CAL_VIEW (initable); - else - return NULL; -} - -/** - * e_gdbus_cal_view_proxy_new_for_bus: - * @bus_type: A #GBusType. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @callback: Callback function to invoke when the proxy is ready. - * @user_data: User data to pass to @callback. - * - * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusCalViewProxy. - * - * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_view_proxy_new_for_bus_finish() to get the result. - */ -void -e_gdbus_cal_view_proxy_new_for_bus (GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - g_async_initable_new_async ( - E_TYPE_GDBUS_CAL_VIEW_PROXY, - G_PRIORITY_DEFAULT, - cancellable, - callback, - user_data, - "g-flags", flags, - "g-name", name, - "g-bus-type", bus_type, - "g-object-path", object_path, - "g-interface-name", GDBUS_CAL_VIEW_INTERFACE_NAME, - NULL); -} - -/** - * e_gdbus_cal_view_proxy_new_for_bus_finish: - * @result: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_view_proxy_new_for_bus(). - * @error: Return location for error or %NULL. - * - * Finishes creating a #EGdbusCalViewProxy. - * - * Returns: A #EGdbusCalViewProxy or %NULL if @error is set. Free with g_object_unref(). - */ -EGdbusCalView * -e_gdbus_cal_view_proxy_new_for_bus_finish (GAsyncResult *result, - GError **error) -{ - GObject *object; - GObject *source_object; - source_object = g_async_result_get_source_object (result); - g_return_val_if_fail (source_object != NULL, NULL); - object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), result, error); - g_object_unref (source_object); - if (object != NULL) - return E_GDBUS_CAL_VIEW (object); - else - return NULL; -} - -/** - * e_gdbus_cal_view_proxy_new_for_bus_sync: - * @bus_type: A #GBusType. - * @flags: Flags used when constructing the proxy. - * @name: A bus name (well-known or unique). - * @object_path: An object path. - * @cancellable: A #GCancellable or %NULL. - * @error: Return location for error or %NULL. - * - * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusCalViewProxy. - * - * This is a synchronous failable constructor. See e_gdbus_cal_view_proxy_new_for_bus() and e_gdbus_cal_view_proxy_new_for_bus_finish() for the asynchronous version. - * - * Returns: A #EGdbusCalViewProxy or %NULL if error is set. Free with g_object_unref(). - */ -EGdbusCalView * -e_gdbus_cal_view_proxy_new_for_bus_sync (GBusType bus_type, - GDBusProxyFlags flags, - const gchar *name, - const gchar *object_path, - GCancellable *cancellable, - GError **error) -{ - GInitable *initable; - initable = g_initable_new ( - E_TYPE_GDBUS_CAL_VIEW_PROXY, - cancellable, - error, - "g-flags", flags, - "g-name", name, - "g-bus-type", bus_type, - "g-object-path", object_path, - "g-interface-name", GDBUS_CAL_VIEW_INTERFACE_NAME, - NULL); - if (initable != NULL) - return E_GDBUS_CAL_VIEW (initable); - else - return NULL; -} - -/* ---------------------------------------------------------------------- */ - -static void stub_iface_init (EGdbusCalViewIface *iface); - -G_DEFINE_TYPE_WITH_CODE (EGdbusCalViewStub, e_gdbus_cal_view_stub, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (E_TYPE_GDBUS_CAL_VIEW, stub_iface_init)); - -static void -e_gdbus_cal_view_stub_init (EGdbusCalViewStub *stub) -{ -} - -static void -e_gdbus_cal_view_stub_class_init (EGdbusCalViewStubClass *class) -{ -} - -static void -stub_iface_init (EGdbusCalViewIface *iface) -{ -} - -/** - * e_gdbus_cal_view_stub_new: - * - * Creates a new stub object that can be exported via e_gdbus_cal_view_register_object(). - * - * Returns: A #EGdbusCalViewStub instance. Free with g_object_unref(). - */ -EGdbusCalView * -e_gdbus_cal_view_stub_new (void) -{ - return E_GDBUS_CAL_VIEW (g_object_new (E_TYPE_GDBUS_CAL_VIEW_STUB, NULL)); -} diff --git a/src/calendar/libegdbus/e-gdbus-cal-view.h b/src/calendar/libegdbus/e-gdbus-cal-view.h deleted file mode 100644 index 41987bd5b..000000000 --- a/src/calendar/libegdbus/e-gdbus-cal-view.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * e-gdbus-cal-view.h - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#ifndef E_GDBUS_CAL_VIEW_H -#define E_GDBUS_CAL_VIEW_H - -#include <libedataserver/libedataserver.h> - -G_BEGIN_DECLS - -#define E_TYPE_GDBUS_CAL_VIEW (e_gdbus_cal_view_get_type ()) -#define E_GDBUS_CAL_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_GDBUS_CAL_VIEW, EGdbusCalView)) -#define E_IS_GDBUS_CAL_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_GDBUS_CAL_VIEW)) -#define E_GDBUS_CAL_VIEW_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_TYPE_GDBUS_CAL_VIEW, EGdbusCalViewIface)) - -typedef struct _EGdbusCalView EGdbusCalView; /* Dummy typedef */ -typedef struct _EGdbusCalViewIface EGdbusCalViewIface; - -GType e_gdbus_cal_view_get_type (void) G_GNUC_CONST; - -/* ---------------------------------------------------------------------- */ - -typedef struct _EGdbusCalViewProxy EGdbusCalViewProxy; -typedef struct _EGdbusCalViewProxyClass EGdbusCalViewProxyClass; -typedef struct _EGdbusCalViewProxyPrivate EGdbusCalViewProxyPrivate; - -struct _EGdbusCalViewProxy -{ - GDBusProxy parent_instance; - EGdbusCalViewProxyPrivate *priv; -}; - -struct _EGdbusCalViewProxyClass -{ - GDBusProxyClass parent_class; -}; - -#define E_TYPE_GDBUS_CAL_VIEW_PROXY (e_gdbus_cal_view_proxy_get_type ()) -GType e_gdbus_cal_view_proxy_get_type (void) G_GNUC_CONST; - -void e_gdbus_cal_view_proxy_new (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -EGdbusCalView * e_gdbus_cal_view_proxy_new_finish (GAsyncResult *result, GError **error); -EGdbusCalView * e_gdbus_cal_view_proxy_new_sync (GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); - -void e_gdbus_cal_view_proxy_new_for_bus (GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -EGdbusCalView * e_gdbus_cal_view_proxy_new_for_bus_finish (GAsyncResult *result, GError **error); -EGdbusCalView * e_gdbus_cal_view_proxy_new_for_bus_sync (GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); - -/* ---------------------------------------------------------------------- */ - -typedef struct _EGdbusCalViewStub EGdbusCalViewStub; -typedef struct _EGdbusCalViewStubClass EGdbusCalViewStubClass; -typedef struct _EGdbusCalViewStubPrivate EGdbusCalViewStubPrivate; - -struct _EGdbusCalViewStub -{ - GObject parent_instance; - EGdbusCalViewStubPrivate *priv; -}; - -struct _EGdbusCalViewStubClass -{ - GObjectClass parent_class; -}; - -#define E_TYPE_GDBUS_CAL_VIEW_STUB (e_gdbus_cal_view_stub_get_type ()) -GType e_gdbus_cal_view_stub_get_type (void) G_GNUC_CONST; - -EGdbusCalView *e_gdbus_cal_view_stub_new (void); -guint e_gdbus_cal_view_register_object (EGdbusCalView *object, GDBusConnection *connection, const gchar *object_path, GError **error); -void e_gdbus_cal_view_drain_notify (EGdbusCalView *object); - -const GDBusInterfaceInfo *e_gdbus_cal_view_interface_info (void) G_GNUC_CONST; - -struct _EGdbusCalViewIface -{ - GTypeInterface parent_iface; - - /* Signal handlers for receiving D-Bus signals: */ - void (*objects_added) (EGdbusCalView *object, const gchar * const *arg_objects); - void (*objects_modified) (EGdbusCalView *object, const gchar * const *arg_objects); - void (*objects_removed) (EGdbusCalView *object, const gchar * const *arg_uids); - - void (*progress) (EGdbusCalView *object, guint arg_percent, const gchar *arg_message); - void (*complete) (EGdbusCalView *object, guint arg_status, const gchar *arg_message); - - /* Signal handlers for handling D-Bus method calls: */ - gboolean (*handle_start) (EGdbusCalView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_stop) (EGdbusCalView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_set_flags) (EGdbusCalView *object, GDBusMethodInvocation *invocation, guint in_flags); - gboolean (*handle_dispose) (EGdbusCalView *object, GDBusMethodInvocation *invocation); - gboolean (*handle_set_fields_of_interest)(EGdbusCalView *object, GDBusMethodInvocation *invocation, const gchar * const *in_only_fields); -}; - -/* D-Bus Methods */ -void e_gdbus_cal_view_call_start (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_cal_view_call_start_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_cal_view_call_start_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_cal_view_call_stop (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_cal_view_call_stop_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_cal_view_call_stop_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_cal_view_call_set_flags (GDBusProxy *proxy, guint in_flags, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_cal_view_call_set_flags_finish (GDBusProxy *proxy, GAsyncResult *res, GError **error); -gboolean e_gdbus_cal_view_call_set_flags_sync (GDBusProxy *proxy, guint in_flags, GCancellable *cancellable, GError **error); - -void e_gdbus_cal_view_call_dispose (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_cal_view_call_dispose_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_cal_view_call_dispose_sync (GDBusProxy *proxy, GCancellable *cancellable, GError **error); - -void e_gdbus_cal_view_call_set_fields_of_interest (GDBusProxy *proxy, const gchar * const *in_only_fileds, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean e_gdbus_cal_view_call_set_fields_of_interest_finish (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_cal_view_call_set_fields_of_interest_sync (GDBusProxy *proxy, const gchar * const *in_only_fileds, GCancellable *cancellable, GError **error); - -/* D-Bus Methods Completion Helpers */ -#define e_gdbus_cal_view_complete_start e_gdbus_complete_sync_method_void -#define e_gdbus_cal_view_complete_stop e_gdbus_complete_sync_method_void -#define e_gdbus_cal_view_complete_set_flags e_gdbus_complete_sync_method_void -#define e_gdbus_cal_view_complete_dispose e_gdbus_complete_sync_method_void -#define e_gdbus_cal_view_complete_set_fields_of_interest e_gdbus_complete_sync_method_void - -/* D-Bus Signal Emission Helpers */ -void e_gdbus_cal_view_emit_objects_added (EGdbusCalView *object, const gchar * const *arg_objects); -void e_gdbus_cal_view_emit_objects_modified (EGdbusCalView *object, const gchar * const *arg_objects); -void e_gdbus_cal_view_emit_objects_removed (EGdbusCalView *object, const gchar * const *arg_uids); - -void e_gdbus_cal_view_emit_progress (EGdbusCalView *object, guint arg_percent, const gchar *arg_message); -void e_gdbus_cal_view_emit_complete (EGdbusCalView *object, const gchar * const *arg_error); - -G_END_DECLS - -#endif /* E_GDBUS_CAL_VIEW_H */ diff --git a/src/libedataserver/CMakeLists.txt b/src/libedataserver/CMakeLists.txt index e82b3d7ed..4393579c8 100644 --- a/src/libedataserver/CMakeLists.txt +++ b/src/libedataserver/CMakeLists.txt @@ -58,7 +58,6 @@ set(SOURCES e-flag.c e-free-form-exp.c e-gdata-oauth2-authorizer.c - e-gdbus-templates.c e-iterator.c e-list.c e-list-iterator.c @@ -147,7 +146,6 @@ set(HEADERS e-flag.h e-free-form-exp.h e-gdata-oauth2-authorizer.h - e-gdbus-templates.h e-iterator.h e-list.h e-list-iterator.h diff --git a/src/libedataserver/e-gdbus-templates.c b/src/libedataserver/e-gdbus-templates.c deleted file mode 100644 index 5441fa0f2..000000000 --- a/src/libedataserver/e-gdbus-templates.c +++ /dev/null @@ -1,2393 +0,0 @@ -/* - * e-gdbus-templates.c - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <gio/gio.h> - -#include <stdio.h> - -#include "e-data-server-util.h" -#include "e-flag.h" -#include "e-gdbus-templates.h" - -static GThread *main_thread = NULL; - -void -e_gdbus_templates_init_main_thread (void) -{ - if (!main_thread) { - main_thread = g_thread_self (); - } else if (main_thread != g_thread_self ()) { - g_warning ("%s: Called in different main thread, stored: %p would use: %p", G_STRFUNC, main_thread, g_thread_self ()); - } -} - -gboolean -e_gdbus_signal_emission_hook_void (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, NULL, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_boolean (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 1, FALSE); - param_values++; - item = g_variant_new_boolean (g_value_get_boolean (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_string (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 1, FALSE); - param_values++; - item = g_variant_new_string (g_value_get_string (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_strv (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - const gchar * const *arg_strv; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 1, FALSE); - param_values++; - arg_strv = g_value_get_boxed (param_values); - item = g_variant_new_strv (arg_strv, -1); - g_variant_builder_add_value (builder, item); - param_values++; - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_uint (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 1, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_uint_string (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 2, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - item = g_variant_new_string (g_value_get_string (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_async_void (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - GError *arg_error; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 2, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - arg_error = g_value_get_boxed (param_values); - if (arg_error) { - gchar *dbus_error_name = g_dbus_error_encode_gerror (arg_error); - item = g_variant_new_string (dbus_error_name ? dbus_error_name : ""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (arg_error->message); - g_variant_builder_add_value (builder, item); - g_free (dbus_error_name); - } else { - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - - param_values++; - } - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_async_boolean (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - GError *arg_error; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 3, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - arg_error = g_value_get_boxed (param_values); - if (arg_error) { - gchar *dbus_error_name = g_dbus_error_encode_gerror (arg_error); - item = g_variant_new_string (dbus_error_name ? dbus_error_name : ""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (arg_error->message); - g_variant_builder_add_value (builder, item); - g_free (dbus_error_name); - - /* fake value for easier processing in e_gdbus_proxy_emit_signal() */ - item = g_variant_new_boolean (FALSE); - g_variant_builder_add_value (builder, item); - } else { - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - - param_values++; - item = g_variant_new_boolean (g_value_get_boolean (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - } - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_async_string (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - GError *arg_error; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 3, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - arg_error = g_value_get_boxed (param_values); - if (arg_error) { - gchar *dbus_error_name = g_dbus_error_encode_gerror (arg_error); - item = g_variant_new_string (dbus_error_name ? dbus_error_name : ""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (arg_error->message); - g_variant_builder_add_value (builder, item); - g_free (dbus_error_name); - - /* fake value for easier processing in e_gdbus_proxy_emit_signal() */ - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - } else { - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - - param_values++; - item = g_variant_new_string (g_value_get_string (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - } - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_async_strv (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - const GError *arg_error; - const gchar * const *arg_strv; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 3, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - arg_error = g_value_get_boxed (param_values); - if (arg_error) { - const gchar *fake_strv; - gchar *dbus_error_name = g_dbus_error_encode_gerror (arg_error); - item = g_variant_new_string (dbus_error_name ? dbus_error_name : ""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (arg_error->message); - g_variant_builder_add_value (builder, item); - g_free (dbus_error_name); - - /* fake value for easier processing in e_gdbus_proxy_emit_signal() */ - fake_strv = NULL; - item = g_variant_new_strv (&fake_strv, -1); - g_variant_builder_add_value (builder, item); - } else { - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - - param_values++; - arg_strv = g_value_get_boxed (param_values); - item = g_variant_new_strv (arg_strv, -1); - g_variant_builder_add_value (builder, item); - param_values++; - } - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -gboolean -e_gdbus_signal_emission_hook_async_uint (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - const gchar *signal_name, - const gchar *iface_name) -{ - GObject *object; - GDBusConnection *connection; - const gchar *path; - GVariant *params; - GVariant *item; - GVariantBuilder *builder; - GError *arg_error; - - if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT)) - return FALSE; - - object = g_value_get_object (¶m_values[0]); - path = g_object_get_data (object, "gdbus-codegen-path"); - connection = g_object_get_data (object, "gdbus-codegen-connection"); - if (connection == NULL || path == NULL) - return FALSE; - - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - g_return_val_if_fail (n_param_values - 1 == 3, FALSE); - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - arg_error = g_value_get_boxed (param_values); - if (arg_error) { - gchar *dbus_error_name = g_dbus_error_encode_gerror (arg_error); - item = g_variant_new_string (dbus_error_name ? dbus_error_name : ""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (arg_error->message); - g_variant_builder_add_value (builder, item); - g_free (dbus_error_name); - - /* fake value for easier processing in e_gdbus_proxy_emit_signal() */ - item = g_variant_new_uint32 (g_value_get_uint (0)); - g_variant_builder_add_value (builder, item); - } else { - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - item = g_variant_new_string (""); - g_variant_builder_add_value (builder, item); - - param_values++; - item = g_variant_new_uint32 (g_value_get_uint (param_values)); - g_variant_builder_add_value (builder, item); - param_values++; - } - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - - g_dbus_connection_emit_signal (connection, NULL, path, iface_name, signal_name, params, NULL); - - return TRUE; -} - -void -e_gdbus_proxy_emit_signal (GDBusProxy *proxy, - GVariant *parameters, - guint signal_id, - guint signal_type) -{ - gboolean arg_boolean = FALSE; - const gchar *arg_const_string = NULL; - const gchar **arg_const_strv = NULL; - guint arg_uint = 0; - - g_return_if_fail (proxy != NULL); - - if ((signal_type & E_GDBUS_TYPE_IS_ASYNC) != 0) { - /* the signal is a done signal, thus opid and error name with error message are first two parameters */ - guint arg_opid = 0; - const gchar *dbus_error_name = NULL, *dbus_error_message = NULL; - GError *arg_error = NULL; - - signal_type = signal_type & (~E_GDBUS_TYPE_IS_ASYNC); - switch (signal_type) { - case E_GDBUS_TYPE_VOID: - g_variant_get (parameters, "(u&s&s)", &arg_opid, &dbus_error_name, &dbus_error_message); - break; - case E_GDBUS_TYPE_BOOLEAN: - g_variant_get (parameters, "(u&s&sb)", &arg_opid, &dbus_error_name, &dbus_error_message, &arg_boolean); - break; - case E_GDBUS_TYPE_STRING: - g_variant_get (parameters, "(u&s&s&s)", &arg_opid, &dbus_error_name, &dbus_error_message, &arg_const_string); - break; - case E_GDBUS_TYPE_STRV: - /* array is newly allocated, but items are gvariant's */ - g_variant_get (parameters, "(u&s&s^a&s)", &arg_opid, &dbus_error_name, &dbus_error_message, &arg_const_strv); - break; - case E_GDBUS_TYPE_UINT: - g_variant_get (parameters, "(u&s&su)", &arg_opid, &dbus_error_name, &dbus_error_message, &arg_uint); - break; - default: - /* fix below too, if this is reached */ - g_warning ("%s: Unknown E_GDBUS_TYPE %x", G_STRFUNC, signal_type); - return; - } - - if (dbus_error_name && *dbus_error_name && dbus_error_message) - arg_error = g_dbus_error_new_for_dbus_error (dbus_error_name, dbus_error_message); - - switch (signal_type) { - case E_GDBUS_TYPE_VOID: - g_signal_emit (proxy, signal_id, 0, arg_opid, arg_error); - break; - case E_GDBUS_TYPE_BOOLEAN: - g_signal_emit (proxy, signal_id, 0, arg_opid, arg_error, arg_boolean); - break; - case E_GDBUS_TYPE_STRING: - g_signal_emit (proxy, signal_id, 0, arg_opid, arg_error, arg_const_string); - break; - case E_GDBUS_TYPE_STRV: - g_signal_emit (proxy, signal_id, 0, arg_opid, arg_error, arg_const_strv); - g_free (arg_const_strv); - break; - case E_GDBUS_TYPE_UINT: - g_signal_emit (proxy, signal_id, 0, arg_opid, arg_error, arg_uint); - break; - } - - if (arg_error) - g_error_free (arg_error); - } else { - switch (signal_type) { - case E_GDBUS_TYPE_VOID: - g_signal_emit (proxy, signal_id, 0); - break; - case E_GDBUS_TYPE_BOOLEAN: - g_variant_get (parameters, "(b)", &arg_boolean); - g_signal_emit (proxy, signal_id, 0, arg_boolean); - break; - case E_GDBUS_TYPE_STRING: - g_variant_get (parameters, "(&s)", &arg_const_string); - g_signal_emit (proxy, signal_id, 0, arg_const_string); - break; - case E_GDBUS_TYPE_STRV: - /* array is newly allocated, but items are gvariant's */ - g_variant_get (parameters, "(^a&s)", &arg_const_strv); - g_signal_emit (proxy, signal_id, 0, arg_const_strv); - g_free (arg_const_strv); - break; - case E_GDBUS_TYPE_UINT: - g_variant_get (parameters, "(u)", &arg_uint); - g_signal_emit (proxy, signal_id, 0, arg_uint); - break; - case E_GDBUS_TYPE_UINT | E_GDBUS_TYPE_STRING: - g_variant_get (parameters, "(u&s)", &arg_uint, &arg_const_string); - g_signal_emit (proxy, signal_id, 0, arg_uint, arg_const_string); - break; - default: - g_warning ("%s: Unknown E_GDBUS_TYPE %x", G_STRFUNC, signal_type); - break; - } - } -} - -void -e_gdbus_stub_handle_method_call (GObject *stub_object, - GDBusMethodInvocation *invocation, - GVariant *parameters, - const gchar *method_name, - guint method_id, - guint method_type) -{ - gboolean handled = FALSE; - gboolean arg_boolean = FALSE; - const gchar *arg_const_string = NULL; - const gchar ** arg_const_strv = NULL; - guint arg_uint = 0; - - g_return_if_fail (stub_object != NULL); - g_return_if_fail (method_name != NULL); - - switch (method_type & (~E_GDBUS_TYPE_IS_ASYNC)) { - case E_GDBUS_TYPE_VOID: - g_signal_emit (stub_object, method_id, 0, invocation, &handled); - break; - case E_GDBUS_TYPE_BOOLEAN: - g_variant_get (parameters, "(b)", &arg_boolean); - g_signal_emit (stub_object, method_id, 0, invocation, arg_boolean, &handled); - break; - case E_GDBUS_TYPE_STRING: - g_variant_get (parameters, "(&s)", &arg_const_string); - g_signal_emit (stub_object, method_id, 0, invocation, arg_const_string, &handled); - break; - case E_GDBUS_TYPE_STRV: - /* array is newly allocated, but items are gvariant's */ - g_variant_get (parameters, "(^a&s)", &arg_const_strv); - g_signal_emit (stub_object, method_id, 0, invocation, arg_const_strv, &handled); - g_free (arg_const_strv); - break; - case E_GDBUS_TYPE_UINT: - g_variant_get (parameters, "(u)", &arg_uint); - g_signal_emit (stub_object, method_id, 0, invocation, arg_uint, &handled); - break; - default: - g_warning ("%s: Unknown E_GDBUS_TYPE %x", G_STRFUNC, method_type); - break; - } - - if (!handled) - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_NOT_SUPPORTED, "Method `%s' is not implemented", method_name); -} - -G_DEFINE_INTERFACE (EGdbusAsyncOpKeeper, e_gdbus_async_op_keeper, G_TYPE_OBJECT) - -static void -e_gdbus_async_op_keeper_default_init (EGdbusAsyncOpKeeperInterface *iface) -{ -} - -/** - * e_gdbus_async_op_keeper_create_pending_ops: - * @object: a #EGdbusAsyncOpKeeper - * - * Create a hash table of pending async operations. This can be freed - * with g_hash_table_unref() in dispose. The interface asks for this - * pointer by calling e_gdbus_async_op_keeper_create_pending_ops(). - * - * Returns: (transfer full) (element-type gpointer gpointer): hash table of - * pending async operations; free with g_hash_table_unref() - */ -GHashTable * -e_gdbus_async_op_keeper_create_pending_ops (EGdbusAsyncOpKeeper *object) -{ - g_return_val_if_fail (object != NULL, NULL); - g_return_val_if_fail (E_IS_GDBUS_ASYNC_OP_KEEPER (object), NULL); - - return g_hash_table_new (g_direct_hash, g_direct_equal); -} - -/** - * e_gdbus_async_op_keeper_get_pending_ops: - * @object: a #EGdbusAsyncOpKeeper - * - * Get the hash table of pending async operations previously created - * by e_gdbus_async_op_keeper_create_pending_ops(). - * - * Returns: (transfer none): hash table of pending async operations - */ -GHashTable * -e_gdbus_async_op_keeper_get_pending_ops (EGdbusAsyncOpKeeper *object) -{ - EGdbusAsyncOpKeeperInterface *iface; - - g_return_val_if_fail (E_IS_GDBUS_ASYNC_OP_KEEPER (object), NULL); - - iface = E_GDBUS_ASYNC_OP_KEEPER_GET_IFACE (object); - g_return_val_if_fail (iface->get_pending_ops != NULL, NULL); - - return iface->get_pending_ops (object); -} - -/* synchronously cancels one operation - sends a request from client to the server */ -gboolean -e_gdbus_async_op_keeper_cancel_op_sync (EGdbusAsyncOpKeeper *object, - guint in_opid, - GCancellable *cancellable, - GError **error) -{ - EGdbusAsyncOpKeeperInterface *iface; - - g_return_val_if_fail (E_IS_GDBUS_ASYNC_OP_KEEPER (object), FALSE); - - iface = E_GDBUS_ASYNC_OP_KEEPER_GET_IFACE (object); - g_return_val_if_fail (iface->cancel_op_sync != NULL, FALSE); - - return iface->cancel_op_sync (object, in_opid, cancellable, error); -} - -/* Used to finish asynchronous GDBus call - this might be done in the callback - * as soon as possible; method returns to a caller operation ID which was started */ -void -e_gdbus_complete_async_method (gpointer object, - GDBusMethodInvocation *invocation, - guint opid) -{ - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", opid)); -} - -/* Used to finish synchronous GDBus call - this might be done in the callback - * as soon as possible */ -void -e_gdbus_complete_sync_method_void (gpointer object, - GDBusMethodInvocation *invocation, - const GError *error) -{ - if (error) - g_dbus_method_invocation_return_gerror (invocation, error); - else - g_dbus_method_invocation_return_value (invocation, NULL); -} - -void -e_gdbus_complete_sync_method_boolean (gpointer object, - GDBusMethodInvocation *invocation, - gboolean out_boolean, - const GError *error) -{ - if (error) - g_dbus_method_invocation_return_gerror (invocation, error); - else - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", out_boolean)); -} - -void -e_gdbus_complete_sync_method_string (gpointer object, - GDBusMethodInvocation *invocation, - const gchar *out_string, - const GError *error) -{ - if (error) - g_dbus_method_invocation_return_gerror (invocation, error); - else - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", out_string)); -} - -void -e_gdbus_complete_sync_method_strv (gpointer object, - GDBusMethodInvocation *invocation, - const gchar * const *out_strv, - const GError *error) -{ - if (error) - g_dbus_method_invocation_return_gerror (invocation, error); - else - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(^as)", out_strv)); -} - -void -e_gdbus_complete_sync_method_uint (gpointer object, - GDBusMethodInvocation *invocation, - guint out_uint, - const GError *error) -{ - if (error) - g_dbus_method_invocation_return_gerror (invocation, error); - else - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(u)", out_uint)); -} - -typedef struct _AsyncOpData -{ - gint ref_count; - EGdbusAsyncOpKeeper *proxy; - guint opid; - - GCancellable *cancellable; - gulong cancel_id; - guint cancel_idle_id; - - gpointer async_source_tag; - GAsyncReadyCallback async_callback; - gpointer async_user_data; - - guint result_type; /* any of E_GDBUS_TYPE_... except of E_GDBUS_TYPE_IS_ASYNC */ - union { - gboolean out_boolean; - gchar *out_string; - gchar ** out_strv; - guint out_uint; - } result; -} AsyncOpData; - -static void -async_op_data_free (AsyncOpData *op_data) -{ - GHashTable *pending_ops; - - g_return_if_fail (op_data != NULL); - - pending_ops = e_gdbus_async_op_keeper_get_pending_ops (op_data->proxy); - - if (op_data->cancel_idle_id) { - GError *error = NULL; - - g_source_remove (op_data->cancel_idle_id); - op_data->cancel_idle_id = 0; - - if (pending_ops) - g_hash_table_remove (pending_ops, GUINT_TO_POINTER (op_data->opid)); - - if (!e_gdbus_async_op_keeper_cancel_op_sync (op_data->proxy, op_data->opid, NULL, &error)) { - g_debug ("%s: Failed to cancel operation: %s\n", G_STRFUNC, error ? error->message : "Unknown error"); - g_clear_error (&error); - } - } else if (pending_ops) { - g_hash_table_remove (pending_ops, GUINT_TO_POINTER (op_data->opid)); - } - - if (op_data->cancellable) { - if (op_data->cancel_id) { - g_cancellable_disconnect (op_data->cancellable, op_data->cancel_id); - op_data->cancel_id = 0; - } - g_object_unref (op_data->cancellable); - op_data->cancellable = NULL; - } - - if (!g_atomic_int_dec_and_test (&op_data->ref_count)) - return; - - g_object_unref (op_data->proxy); - - switch (op_data->result_type) { - case E_GDBUS_TYPE_STRING: - if (op_data->result.out_string) - g_free (op_data->result.out_string); - break; - case E_GDBUS_TYPE_STRV: - if (op_data->result.out_strv) - g_strfreev (op_data->result.out_strv); - break; - } - - g_free (op_data); - - g_return_if_fail (pending_ops != NULL); -} - -static void -async_op_complete (AsyncOpData *op_data, - const GError *error, - gboolean in_idle) -{ - GSimpleAsyncResult *simple; - - g_return_if_fail (op_data != NULL); - - g_atomic_int_inc (&op_data->ref_count); - simple = g_simple_async_result_new (G_OBJECT (op_data->proxy), op_data->async_callback, op_data->async_user_data, op_data->async_source_tag); - g_simple_async_result_set_op_res_gpointer (simple, op_data, (GDestroyNotify) async_op_data_free); - if (error) - g_simple_async_result_set_from_error (simple, error); - - if (in_idle) - g_simple_async_result_complete_in_idle (simple); - else - g_simple_async_result_complete (simple); - - g_object_unref (simple); -} - -typedef struct _CancelData -{ - EGdbusAsyncOpKeeper *proxy; - guint opid; - AsyncOpData *op_data; -} CancelData; - -static void -cancel_data_free (gpointer ptr) -{ - CancelData *cd = ptr; - - if (!cd) - return; - - g_object_unref (cd->proxy); - g_free (cd); -} - -static gboolean -e_gdbus_op_cancelled_idle_cb (gpointer user_data) -{ - CancelData *cd = user_data; - AsyncOpData *op_data; - GHashTable *pending_ops; - GCancellable *cancellable; - GError *error = NULL; - - g_return_val_if_fail (cd != NULL, FALSE); - - pending_ops = e_gdbus_async_op_keeper_get_pending_ops (cd->proxy); - if (pending_ops && !g_hash_table_lookup (pending_ops, GUINT_TO_POINTER (cd->opid))) { - /* got served already */ - return FALSE; - } - - op_data = cd->op_data; - g_return_val_if_fail (op_data != NULL, FALSE); - - cancellable = op_data->cancellable; - op_data->cancel_idle_id = 0; - - if (!e_gdbus_async_op_keeper_cancel_op_sync (op_data->proxy, op_data->opid, NULL, &error)) { - g_debug ("%s: Failed to cancel operation: %s\n", G_STRFUNC, error ? error->message : "Unknown error"); - g_clear_error (&error); - } - - g_return_val_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error), FALSE); - - async_op_complete (op_data, error, TRUE); - g_clear_error (&error); - - return FALSE; -} - -static void -e_gdbus_op_cancelled_cb (GCancellable *cancellable, - AsyncOpData *op_data) -{ - CancelData *cd; - - g_return_if_fail (op_data != NULL); - g_return_if_fail (op_data->cancellable == cancellable); - - cd = g_new0 (CancelData, 1); - cd->proxy = g_object_ref (op_data->proxy); - cd->opid = op_data->opid; - cd->op_data = op_data; - - /* do this on idle, because this callback should be left - * as soon as possible, with no sync calls being done; - * also schedule with priority higher than gtk+ uses - * for animations (check docs for G_PRIORITY_HIGH_IDLE) */ - op_data->cancel_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT, e_gdbus_op_cancelled_idle_cb, cd, cancel_data_free); -} - -static void -e_gdbus_async_call_opid_ready_cb (GObject *source_proxy, - GAsyncResult *result, - gpointer user_data) -{ - GVariant *_result; - GError *error = NULL; - AsyncOpData *op_data = user_data; - - _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_proxy), result, &error); - - if (_result != NULL && !error) { - EGdbusAsyncOpKeeper *op_keeper = E_GDBUS_ASYNC_OP_KEEPER (source_proxy); - GHashTable *pending_ops; - gboolean add_pending = TRUE; - - g_return_if_fail (op_keeper != NULL); - - pending_ops = e_gdbus_async_op_keeper_get_pending_ops (op_keeper); - g_return_if_fail (pending_ops != NULL); - - g_variant_get (_result, "(u)", &op_data->opid); - g_variant_unref (_result); - - if (op_data->cancellable && !g_cancellable_set_error_if_cancelled (op_data->cancellable, &error)) - op_data->cancel_id = g_cancellable_connect (op_data->cancellable, G_CALLBACK (e_gdbus_op_cancelled_cb), op_data, NULL); - else - add_pending = op_data->cancellable == NULL; - - /* add to pending ops, waiting for associated 'done' signal */ - if (add_pending) - g_hash_table_insert (pending_ops, GUINT_TO_POINTER (op_data->opid), op_data); - } else if (_result) { - g_variant_unref (_result); - } - - if (error) { - async_op_complete (op_data, error, FALSE); - g_error_free (error); - } -} - -static gchar ** -copy_strv (const gchar * const *strv) -{ - GPtrArray *array; - gint ii; - - array = g_ptr_array_sized_new (g_strv_length ((gchar **) strv) + 1); - - for (ii = 0; strv[ii]; ii++) { - g_ptr_array_add (array, g_strdup (strv[ii])); - } - - /* NULL-terminated */ - g_ptr_array_add (array, NULL); - - return (gchar **) g_ptr_array_free (array, FALSE); -} - -static void -e_gdbus_proxy_async_method_done (guint e_gdbus_type, - gconstpointer out_value, - EGdbusAsyncOpKeeper *object, - guint arg_opid, - const GError *error) -{ - AsyncOpData *op_data; - GHashTable *pending_ops; - - g_return_if_fail (object != NULL); - g_return_if_fail (E_IS_GDBUS_ASYNC_OP_KEEPER (object)); - - pending_ops = e_gdbus_async_op_keeper_get_pending_ops (object); - g_return_if_fail (pending_ops != NULL); - - op_data = g_hash_table_lookup (pending_ops, GUINT_TO_POINTER (arg_opid)); - if (!op_data) { - /* it happens for cancelled operations, thus rather than track cancelled ops disable the debug warning */ - /* g_debug ("%s: Operation %d gone before got done signal for it", G_STRFUNC, arg_opid); */ - return; - } - - if (out_value) { - op_data->result_type = e_gdbus_type; - - switch (e_gdbus_type) { - case E_GDBUS_TYPE_VOID: - break; - case E_GDBUS_TYPE_BOOLEAN: - op_data->result.out_boolean = * ((const gboolean *) out_value); - break; - case E_GDBUS_TYPE_STRING: - op_data->result.out_string = g_strdup ((const gchar *) out_value); - break; - case E_GDBUS_TYPE_STRV: - op_data->result.out_strv = copy_strv ((const gchar * const *) out_value); - break; - case E_GDBUS_TYPE_UINT: - op_data->result.out_uint = * ((const guint *) out_value); - break; - default: - g_warning ("%s: Unknown E_GDBUS_TYPE %x", G_STRFUNC, e_gdbus_type); - break; - } - } - - async_op_complete (op_data, error, TRUE); -} - -void -e_gdbus_proxy_async_method_done_void (EGdbusAsyncOpKeeper *proxy, - guint arg_opid, - const GError *error) -{ - e_gdbus_proxy_async_method_done (E_GDBUS_TYPE_VOID, NULL, proxy, arg_opid, error); -} - -void -e_gdbus_proxy_async_method_done_boolean (EGdbusAsyncOpKeeper *proxy, - guint arg_opid, - const GError *error, - gboolean out_boolean) -{ - e_gdbus_proxy_async_method_done (E_GDBUS_TYPE_BOOLEAN, &out_boolean, proxy, arg_opid, error); -} - -/* takes ownership of the out parameter */ -void -e_gdbus_proxy_async_method_done_string (EGdbusAsyncOpKeeper *proxy, - guint arg_opid, - const GError *error, - const gchar *out_string) -{ - e_gdbus_proxy_async_method_done (E_GDBUS_TYPE_STRING, out_string, proxy, arg_opid, error); -} - -/* takes ownership of the out parameter */ -void -e_gdbus_proxy_async_method_done_strv (EGdbusAsyncOpKeeper *proxy, - guint arg_opid, - const GError *error, - const gchar * const *out_strv) -{ - e_gdbus_proxy_async_method_done (E_GDBUS_TYPE_STRV, out_strv, proxy, arg_opid, error); -} - -void -e_gdbus_proxy_async_method_done_uint (EGdbusAsyncOpKeeper *proxy, - guint arg_opid, - const GError *error, - guint out_uint) -{ - e_gdbus_proxy_async_method_done (E_GDBUS_TYPE_UINT, &out_uint, proxy, arg_opid, error); -} - -/* takes ownership of _params */ -static void -e_gdbus_proxy_call_with_params (GVariant *_params, - const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - AsyncOpData *op_data; - - op_data = g_new0 (AsyncOpData, 1); - op_data->proxy = g_object_ref (proxy); - op_data->opid = 0; - op_data->async_source_tag = source_tag; - op_data->async_callback = callback; - op_data->async_user_data = user_data; - op_data->cancellable = cancellable; - if (op_data->cancellable) - g_object_ref (op_data->cancellable); - - g_dbus_proxy_call (G_DBUS_PROXY (proxy), method_name, _params, G_DBUS_CALL_FLAGS_NONE, e_data_server_util_get_dbus_call_timeout (), cancellable, e_gdbus_async_call_opid_ready_cb, op_data); -} - -void -e_gdbus_proxy_call_void (const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - e_gdbus_proxy_call_with_params (NULL, method_name, source_tag, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_call_boolean (const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - gboolean in_boolean, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GVariant *_params; - - _params = g_variant_new ("(b)", in_boolean); - - e_gdbus_proxy_call_with_params (_params, method_name, source_tag, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_call_string (const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - const gchar *in_string, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GVariant *_params; - - _params = g_variant_new ("(s)", in_string); - - e_gdbus_proxy_call_with_params (_params, method_name, source_tag, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_call_strv (const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - const gchar * const *in_strv, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GVariant *_params; - - _params = g_variant_new ("(^as)", in_strv); - - e_gdbus_proxy_call_with_params (_params, method_name, source_tag, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_call_uint (const gchar *method_name, - gpointer source_tag, - EGdbusAsyncOpKeeper *proxy, - guint in_uint, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GVariant *_params; - - _params = g_variant_new ("(u)", in_uint); - - e_gdbus_proxy_call_with_params (_params, method_name, source_tag, proxy, cancellable, callback, user_data); -} - -gboolean -e_gdbus_proxy_finish_call_void (EGdbusAsyncOpKeeper *proxy, - GAsyncResult *result, - GError **error, - gpointer source_tag) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (proxy), source_tag), FALSE); - - return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error); -} - -gboolean -e_gdbus_proxy_finish_call_boolean (EGdbusAsyncOpKeeper *proxy, - GAsyncResult *result, - gboolean *out_boolean, - GError **error, - gpointer source_tag) -{ - AsyncOpData *op_data; - - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (proxy), source_tag), FALSE); - g_return_val_if_fail (out_boolean != NULL, FALSE); - - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error)) - return FALSE; - - op_data = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result)); - g_return_val_if_fail (op_data != NULL, FALSE); - g_return_val_if_fail (op_data->result_type == E_GDBUS_TYPE_BOOLEAN, FALSE); - - *out_boolean = op_data->result.out_boolean; - - return TRUE; -} - -/* caller takes ownership and responsibility for freeing the out parameter */ -gboolean -e_gdbus_proxy_finish_call_string (EGdbusAsyncOpKeeper *proxy, - GAsyncResult *result, - gchar **out_string, - GError **error, - gpointer source_tag) -{ - AsyncOpData *op_data; - - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (proxy), source_tag), FALSE); - g_return_val_if_fail (out_string != NULL, FALSE); - - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error)) - return FALSE; - - op_data = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result)); - g_return_val_if_fail (op_data != NULL, FALSE); - g_return_val_if_fail (op_data->result_type == E_GDBUS_TYPE_STRING, FALSE); - - *out_string = op_data->result.out_string; - op_data->result.out_string = NULL; - - return TRUE; -} - -/* caller takes ownership and responsibility for freeing the out parameter */ -gboolean -e_gdbus_proxy_finish_call_strv (EGdbusAsyncOpKeeper *proxy, - GAsyncResult *result, - gchar ***out_strv, - GError **error, - gpointer source_tag) -{ - AsyncOpData *op_data; - - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (proxy), source_tag), FALSE); - g_return_val_if_fail (out_strv != NULL, FALSE); - - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error)) - return FALSE; - - op_data = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result)); - g_return_val_if_fail (op_data != NULL, FALSE); - g_return_val_if_fail (op_data->result_type == E_GDBUS_TYPE_STRV, FALSE); - - *out_strv = op_data->result.out_strv; - op_data->result.out_strv = NULL; - - return TRUE; -} - -gboolean -e_gdbus_proxy_finish_call_uint (EGdbusAsyncOpKeeper *proxy, - GAsyncResult *result, - guint *out_uint, - GError **error, - gpointer source_tag) -{ - AsyncOpData *op_data; - - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (proxy), source_tag), FALSE); - g_return_val_if_fail (out_uint != NULL, FALSE); - - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error)) - return FALSE; - - op_data = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result)); - g_return_val_if_fail (op_data != NULL, FALSE); - g_return_val_if_fail (op_data->result_type == E_GDBUS_TYPE_UINT, FALSE); - - *out_uint = op_data->result.out_uint; - - return TRUE; -} - -typedef struct _SyncOpData -{ - EFlag *flag; - GError **error; - - guint out_type; /* one of E_GDBUS_TYPE_... except of E_GDBUS_TYPE_IS_ASYNC */ - union { - gboolean *out_boolean; - gchar **out_string; - gchar ***out_strv; - guint *out_uint; - } out_arg; - - union { - EGdbusCallFinishVoid finish_void; - EGdbusCallFinishBoolean finish_boolean; - EGdbusCallFinishString finish_string; - EGdbusCallFinishStrv finish_strv; - EGdbusCallFinishUint finish_uint; - } finish_func; - - gboolean finish_result; -} SyncOpData; - -#define SYNC_DATA_HASH_KEY "EGdbusTemplates-SyncOp-Hash" -static GMutex sync_data_hash_mutex; - -static void -e_gdbus_proxy_sync_ready_cb (GObject *proxy, - GAsyncResult *result, - gpointer user_data) -{ - gint sync_opid = GPOINTER_TO_INT (user_data); - SyncOpData *sync_data = NULL; - GHashTable *sync_data_hash; - - g_mutex_lock (&sync_data_hash_mutex); - sync_data_hash = g_object_get_data (proxy, SYNC_DATA_HASH_KEY); - if (sync_data_hash) - sync_data = g_hash_table_lookup (sync_data_hash, GINT_TO_POINTER (sync_opid)); - g_mutex_unlock (&sync_data_hash_mutex); - - if (!sync_data) { - /* already finished operation; it can happen when the operation is cancelled, - * but the result is already waiting in an idle queue. - */ - return; - } - - g_return_if_fail (sync_data->flag != NULL); - - switch (sync_data->out_type) { - case E_GDBUS_TYPE_VOID: - g_return_if_fail (sync_data->finish_func.finish_void != NULL); - sync_data->finish_result = sync_data->finish_func.finish_void (G_DBUS_PROXY (proxy), result, sync_data->error); - break; - case E_GDBUS_TYPE_BOOLEAN: - g_return_if_fail (sync_data->finish_func.finish_boolean != NULL); - sync_data->finish_result = sync_data->finish_func.finish_boolean (G_DBUS_PROXY (proxy), result, sync_data->out_arg.out_boolean, sync_data->error); - break; - case E_GDBUS_TYPE_STRING: - g_return_if_fail (sync_data->finish_func.finish_string != NULL); - sync_data->finish_result = sync_data->finish_func.finish_string (G_DBUS_PROXY (proxy), result, sync_data->out_arg.out_string, sync_data->error); - break; - case E_GDBUS_TYPE_STRV: - g_return_if_fail (sync_data->finish_func.finish_strv != NULL); - sync_data->finish_result = sync_data->finish_func.finish_strv (G_DBUS_PROXY (proxy), result, sync_data->out_arg.out_strv, sync_data->error); - break; - case E_GDBUS_TYPE_UINT: - g_return_if_fail (sync_data->finish_func.finish_uint != NULL); - sync_data->finish_result = sync_data->finish_func.finish_uint (G_DBUS_PROXY (proxy), result, sync_data->out_arg.out_uint, sync_data->error); - break; - default: - g_warning ("%s: Unknown 'out' E_GDBUS_TYPE %x", G_STRFUNC, sync_data->out_type); - sync_data->finish_result = FALSE; - } - - e_flag_set (sync_data->flag); -} - -static gboolean -e_gdbus_proxy_call_sync (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error, - gpointer start_func, - gpointer finish_func, - guint in_type, - gconstpointer in_value, - guint out_type, - gpointer out_value) -{ - static volatile gint sync_op_counter = 0; - gint sync_opid; - gpointer sync_opid_ident; - SyncOpData sync_data = { 0 }; - GHashTable *sync_data_hash; - - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - - g_object_ref (proxy); - - switch (out_type) { - case E_GDBUS_TYPE_VOID: - sync_data.finish_func.finish_void = finish_func; - break; - case E_GDBUS_TYPE_BOOLEAN: - sync_data.out_arg.out_boolean = out_value; - sync_data.finish_func.finish_boolean = finish_func; - break; - case E_GDBUS_TYPE_STRING: - sync_data.out_arg.out_string = out_value; - sync_data.finish_func.finish_string = finish_func; - break; - case E_GDBUS_TYPE_STRV: - sync_data.out_arg.out_strv = out_value; - sync_data.finish_func.finish_strv = finish_func; - break; - case E_GDBUS_TYPE_UINT: - sync_data.out_arg.out_uint = out_value; - sync_data.finish_func.finish_uint = finish_func; - break; - default: - g_warning ("%s: Unknown 'out' E_GDBUS_TYPE %x", G_STRFUNC, out_type); - g_object_unref (proxy); - return FALSE; - } - - sync_data.flag = e_flag_new (); - sync_data.error = error; - sync_data.out_type = out_type; - - sync_opid = g_atomic_int_add (&sync_op_counter, 1); - - g_mutex_lock (&sync_data_hash_mutex); - sync_data_hash = g_object_get_data (G_OBJECT (proxy), SYNC_DATA_HASH_KEY); - if (!sync_data_hash) { - sync_data_hash = g_hash_table_new (g_direct_hash, g_direct_equal); - g_object_set_data_full ( - G_OBJECT (proxy), SYNC_DATA_HASH_KEY, sync_data_hash, - (GDestroyNotify) g_hash_table_destroy); - } - sync_opid_ident = GINT_TO_POINTER (sync_opid); - g_hash_table_insert (sync_data_hash, sync_opid_ident, &sync_data); - g_mutex_unlock (&sync_data_hash_mutex); - - switch (in_type) { - case E_GDBUS_TYPE_VOID: { - EGdbusCallStartVoid start = start_func; - start (proxy, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid)); - } break; - case E_GDBUS_TYPE_BOOLEAN: { - EGdbusCallStartBoolean start = start_func; - start (proxy, * ((gboolean *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid)); - } break; - case E_GDBUS_TYPE_STRING: { - EGdbusCallStartString start = start_func; - start (proxy, (const gchar *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid)); - } break; - case E_GDBUS_TYPE_STRV: { - EGdbusCallStartStrv start = start_func; - start (proxy, (const gchar * const *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid)); - } break; - case E_GDBUS_TYPE_UINT: { - EGdbusCallStartUint start = start_func; - start (proxy, * ((guint *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid)); - } break; - default: - g_warning ("%s: Unknown 'in' E_GDBUS_TYPE %x", G_STRFUNC, in_type); - e_flag_free (sync_data.flag); - g_mutex_lock (&sync_data_hash_mutex); - g_hash_table_remove (sync_data_hash, sync_opid_ident); - g_mutex_unlock (&sync_data_hash_mutex); - g_object_unref (proxy); - return FALSE; - } - - /* check if called from the main thread */ - if ((main_thread && main_thread == g_thread_self ()) || - (!main_thread && (g_main_context_is_owner (g_main_context_default ()) - || g_main_context_default () == g_main_context_get_thread_default () - || !g_main_context_get_thread_default ()))) { - /* the call to e_gdbus_templates_init_main_thread() wasn't done, but no problem, - * check if the call was done in the main thread with main loop running, - * and if so, then remember it - */ - if (!main_thread && g_main_context_is_owner (g_main_context_default ())) - e_gdbus_templates_init_main_thread (); - - /* Might not be the best thing here, but as the async operation - * is divided into two-step process, invoking the method and - * waiting for its "done" signal, then if the sync method is called - * from the main thread, then there is probably no other option. - */ - while (!e_flag_is_set (sync_data.flag)) { - g_usleep (1000); - g_main_context_iteration (NULL, FALSE); - } - } else { - /* is called in a dedicated thread */ - e_flag_wait (sync_data.flag); - } - - g_mutex_lock (&sync_data_hash_mutex); - g_hash_table_remove (sync_data_hash, sync_opid_ident); - g_mutex_unlock (&sync_data_hash_mutex); - - e_flag_free (sync_data.flag); - - g_object_unref (proxy); - - return sync_data.finish_result; -} - -gboolean -e_gdbus_proxy_call_sync_void__void (GDBusProxy *proxy, - GCancellable *cancellable, - GError **error, - EGdbusCallStartVoid start_func, - EGdbusCallFinishVoid finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_VOID, NULL); -} - -/** - * e_gdbus_proxy_call_sync_void__boolean: - * @proxy: - * @out_boolean: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_void__boolean (GDBusProxy *proxy, - gboolean *out_boolean, - GCancellable *cancellable, - GError **error, - EGdbusCallStartVoid start_func, - EGdbusCallFinishBoolean finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (out_boolean != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_BOOLEAN, out_boolean); -} - -/** - * e_gdbus_proxy_call_sync_void__string: - * @proxy: - * @out_string: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_void__string (GDBusProxy *proxy, - gchar **out_string, - GCancellable *cancellable, - GError **error, - EGdbusCallStartVoid start_func, - EGdbusCallFinishString finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (out_string != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_STRING, out_string); -} - -/** - * e_gdbus_proxy_call_sync_void__strv: - * @proxy: - * @out_strv: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_void__strv (GDBusProxy *proxy, - gchar ***out_strv, - GCancellable *cancellable, - GError **error, - EGdbusCallStartVoid start_func, - EGdbusCallFinishStrv finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (out_strv != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_STRV, out_strv); -} - -/** - * e_gdbus_proxy_call_sync_void__uint: - * @proxy: - * @out_uint: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_void__uint (GDBusProxy *proxy, - guint *out_uint, - GCancellable *cancellable, - GError **error, - EGdbusCallStartVoid start_func, - EGdbusCallFinishUint finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (out_uint != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_UINT, out_uint); -} - -gboolean -e_gdbus_proxy_call_sync_boolean__void (GDBusProxy *proxy, - gboolean in_boolean, - GCancellable *cancellable, - GError **error, - EGdbusCallStartBoolean start_func, - EGdbusCallFinishVoid finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_BOOLEAN, &in_boolean, E_GDBUS_TYPE_VOID, NULL); -} - -/** - * e_gdbus_proxy_call_sync_string__void: - * @proxy: - * @in_string: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_string__void (GDBusProxy *proxy, - const gchar *in_string, - GCancellable *cancellable, - GError **error, - EGdbusCallStartString start_func, - EGdbusCallFinishVoid finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_string != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRING, in_string, E_GDBUS_TYPE_VOID, NULL); -} - -gboolean -e_gdbus_proxy_call_sync_strv__void (GDBusProxy *proxy, - const gchar * const *in_strv, - GCancellable *cancellable, - GError **error, - EGdbusCallStartStrv start_func, - EGdbusCallFinishVoid finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_strv != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRV, in_strv, E_GDBUS_TYPE_VOID, NULL); -} - -/** - * e_gdbus_proxy_call_sync_uint__void: - * @proxy: - * @in_uint: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_uint__void (GDBusProxy *proxy, - guint in_uint, - GCancellable *cancellable, - GError **error, - EGdbusCallStartUint start_func, - EGdbusCallFinishVoid finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_UINT, &in_uint, E_GDBUS_TYPE_VOID, NULL); -} - -gboolean -e_gdbus_proxy_call_sync_string__string (GDBusProxy *proxy, - const gchar *in_string, - gchar **out_string, - GCancellable *cancellable, - GError **error, - EGdbusCallStartString start_func, - EGdbusCallFinishString finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_string != NULL, FALSE); - g_return_val_if_fail (out_string != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRING, in_string, E_GDBUS_TYPE_STRING, out_string); -} - -/** - * e_gdbus_proxy_call_sync_string__strv: - * @proxy: - * @in_string: - * @out_strv: (out): - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_string__strv (GDBusProxy *proxy, - const gchar *in_string, - gchar ***out_strv, - GCancellable *cancellable, - GError **error, - EGdbusCallStartString start_func, - EGdbusCallFinishStrv finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_string != NULL, FALSE); - g_return_val_if_fail (out_strv != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRING, in_string, E_GDBUS_TYPE_STRV, out_strv); -} - -gboolean -e_gdbus_proxy_call_sync_strv__string (GDBusProxy *proxy, - const gchar * const *in_strv, - gchar **out_string, - GCancellable *cancellable, - GError **error, - EGdbusCallStartStrv start_func, - EGdbusCallFinishString finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_strv != NULL, FALSE); - g_return_val_if_fail (out_string != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRV, in_strv, E_GDBUS_TYPE_STRING, out_string); -} - -/** - * e_gdbus_proxy_call_sync_strv__strv: - * @proxy: - * @in_strv: - * @out_strv: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_call_sync_strv__strv (GDBusProxy *proxy, - const gchar * const *in_strv, - gchar ***out_strv, - GCancellable *cancellable, - GError **error, - EGdbusCallStartStrv start_func, - EGdbusCallFinishStrv finish_func) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (start_func != NULL, FALSE); - g_return_val_if_fail (finish_func != NULL, FALSE); - g_return_val_if_fail (in_strv != NULL, FALSE); - g_return_val_if_fail (out_strv != NULL, FALSE); - - return e_gdbus_proxy_call_sync (proxy, cancellable, error, start_func, finish_func, E_GDBUS_TYPE_STRV, in_strv, E_GDBUS_TYPE_STRV, out_strv); -} - -static void -proxy_method_call (const gchar *method_name, - guint param_type, - gconstpointer param_value, - GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GVariant *params = NULL; - GVariant *item; - GVariantBuilder *builder = NULL; - - g_return_if_fail (method_name != NULL); - g_return_if_fail (proxy != NULL); - g_return_if_fail (G_IS_DBUS_PROXY (proxy)); - if (param_type != E_GDBUS_TYPE_VOID) - g_return_if_fail (param_value != NULL); - - switch (param_type) { - case E_GDBUS_TYPE_VOID: - break; - case E_GDBUS_TYPE_BOOLEAN: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_boolean (* ((const gboolean *) param_value)); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_STRING: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_string ((const gchar *) param_value); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_STRV: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_strv ((const gchar * const *) param_value, -1); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_UINT: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_uint32 (* ((const guint *) param_value)); - g_variant_builder_add_value (builder, item); - break; - default: - g_warning ("%s: Unknown 'param' E_GDBUS_TYPE %x", G_STRFUNC, param_type); - return; - } - - if (builder != NULL) { - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - } - - g_dbus_proxy_call (G_DBUS_PROXY (proxy), method_name, params, G_DBUS_CALL_FLAGS_NONE, e_data_server_util_get_dbus_call_timeout (), cancellable, callback, user_data); -} - -void -e_gdbus_proxy_method_call_void (const gchar *method_name, - GDBusProxy *proxy, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - proxy_method_call (method_name, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_method_call_boolean (const gchar *method_name, - GDBusProxy *proxy, - gboolean in_boolean, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - proxy_method_call (method_name, E_GDBUS_TYPE_BOOLEAN, &in_boolean, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_method_call_string (const gchar *method_name, - GDBusProxy *proxy, - const gchar *in_string, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - proxy_method_call (method_name, E_GDBUS_TYPE_STRING, in_string, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_method_call_strv (const gchar *method_name, - GDBusProxy *proxy, - const gchar * const *in_strv, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - proxy_method_call (method_name, E_GDBUS_TYPE_STRV, in_strv, proxy, cancellable, callback, user_data); -} - -void -e_gdbus_proxy_method_call_uint (const gchar *method_name, - GDBusProxy *proxy, - guint in_uint, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - proxy_method_call (method_name, E_GDBUS_TYPE_VOID, &in_uint, proxy, cancellable, callback, user_data); -} - -static gboolean -process_result (const gchar *caller_func_name, - guint out_type, - gpointer out_value, - GVariant *_result) -{ - if (out_type != E_GDBUS_TYPE_VOID) - g_return_val_if_fail (out_value != NULL, FALSE); - - if (_result == NULL) - return FALSE; - - switch (out_type) { - case E_GDBUS_TYPE_VOID: - break; - case E_GDBUS_TYPE_BOOLEAN: - g_variant_get (_result, "(b)", (gboolean *) out_value); - break; - case E_GDBUS_TYPE_STRING: - g_variant_get (_result, "(s)", (gchar **) out_value); - break; - case E_GDBUS_TYPE_STRV: - g_variant_get (_result, "(^as)", (gchar ***) out_value); - break; - case E_GDBUS_TYPE_UINT: - g_variant_get (_result, "(u)", (guint *) out_value); - break; - default: - g_warning ("%s: Unknown 'out' E_GDBUS_TYPE %x", caller_func_name ? caller_func_name : G_STRFUNC, out_type); - break; - } - - g_variant_unref (_result); - - return TRUE; -} - -static gboolean -proxy_method_call_finish (guint out_type, - gpointer out_param, - GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (G_IS_DBUS_PROXY (proxy), FALSE); - if (out_type != E_GDBUS_TYPE_VOID) - g_return_val_if_fail (out_param != NULL, FALSE); - - return process_result (G_STRFUNC, out_type, out_param, g_dbus_proxy_call_finish (proxy, result, error)); -} - -gboolean -e_gdbus_proxy_method_call_finish_void (GDBusProxy *proxy, - GAsyncResult *result, - GError **error) -{ - return proxy_method_call_finish (E_GDBUS_TYPE_VOID, NULL, proxy, result, error); -} - -gboolean -e_gdbus_proxy_method_call_finish_boolean (GDBusProxy *proxy, - GAsyncResult *result, - gboolean *out_boolean, - GError **error) -{ - return proxy_method_call_finish (E_GDBUS_TYPE_BOOLEAN, out_boolean, proxy, result, error); -} - -gboolean -e_gdbus_proxy_method_call_finish_string (GDBusProxy *proxy, - GAsyncResult *result, - gchar **out_string, - GError **error) -{ - return proxy_method_call_finish (E_GDBUS_TYPE_STRING, out_string, proxy, result, error); -} - -gboolean -e_gdbus_proxy_method_call_finish_strv (GDBusProxy *proxy, - GAsyncResult *result, - gchar ***out_strv, - GError **error) -{ - return proxy_method_call_finish (E_GDBUS_TYPE_STRV, out_strv, proxy, result, error); -} - -gboolean -e_gdbus_proxy_method_call_finish_uint (GDBusProxy *proxy, - GAsyncResult *result, - guint *out_uint, - GError **error) -{ - return proxy_method_call_finish (E_GDBUS_TYPE_UINT, out_uint, proxy, result, error); -} - -static gboolean -proxy_method_call_sync (const gchar *method_name, - guint in_type, - gconstpointer in_value, - guint out_type, - gpointer out_value, - GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - GVariant *params = NULL; - GVariant *item; - GVariantBuilder *builder = NULL; - - g_return_val_if_fail (method_name != NULL, FALSE); - g_return_val_if_fail (proxy != NULL, FALSE); - g_return_val_if_fail (G_IS_DBUS_PROXY (proxy), FALSE); - if (in_type != E_GDBUS_TYPE_VOID) - g_return_val_if_fail (in_value != NULL, FALSE); - if (out_type != E_GDBUS_TYPE_VOID) - g_return_val_if_fail (out_value != NULL, FALSE); - - switch (in_type) { - case E_GDBUS_TYPE_VOID: - break; - case E_GDBUS_TYPE_BOOLEAN: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_boolean (* ((const gboolean *) in_value)); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_STRING: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_string ((const gchar *) in_value); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_STRV: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_strv ((const gchar * const *) in_value, -1); - g_variant_builder_add_value (builder, item); - break; - case E_GDBUS_TYPE_UINT: - builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE); - item = g_variant_new_uint32 (* ((const guint *) in_value)); - g_variant_builder_add_value (builder, item); - break; - default: - g_warning ("%s: Unknown 'in' E_GDBUS_TYPE %x", G_STRFUNC, in_type); - return FALSE; - } - - if (builder != NULL) { - params = g_variant_builder_end (builder); - g_variant_builder_unref (builder); - } - - return process_result (G_STRFUNC, out_type, out_value, g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), method_name, params, G_DBUS_CALL_FLAGS_NONE, e_data_server_util_get_dbus_call_timeout (), cancellable, error)); -} - -/** - * e_gdbus_proxy_call_sync_void__void: - * @proxy: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_method_call_sync_void__void (const gchar *method_name, - GDBusProxy *proxy, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_VOID, NULL, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, error); -} - -/** - * e_gdbus_proxy_call_sync_boolean__void: - * @proxy: - * @in_boolean: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_method_call_sync_boolean__void (const gchar *method_name, - GDBusProxy *proxy, - gboolean in_boolean, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_BOOLEAN, &in_boolean, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, error); -} - -gboolean -e_gdbus_proxy_method_call_sync_string__void (const gchar *method_name, - GDBusProxy *proxy, - const gchar *in_string, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_STRING, in_string, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, error); -} - -/** - * e_gdbus_proxy_call_sync_strv__void: - * @proxy: - * @in_strv: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_method_call_sync_strv__void (const gchar *method_name, - GDBusProxy *proxy, - const gchar * const *in_strv, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_STRV, in_strv, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, error); -} - -gboolean -e_gdbus_proxy_method_call_sync_uint__void (const gchar *method_name, - GDBusProxy *proxy, - guint in_uint, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_UINT, &in_uint, E_GDBUS_TYPE_VOID, NULL, proxy, cancellable, error); -} - -/** - * e_gdbus_proxy_call_sync_string__string: - * @proxy: - * @in_string: - * @out_string: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_method_call_sync_string__string (const gchar *method_name, - GDBusProxy *proxy, - const gchar *in_string, - gchar **out_string, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_STRING, in_string, E_GDBUS_TYPE_STRING, out_string, proxy, cancellable, error); -} - -/** - * e_gdbus_proxy_call_sync_strv__string: - * @proxy: - * @in_strv: - * @out_string: - * @cancellable: (allow-none): - * @error: - * @start_func: (scope call): - * @finish_func: (scope call): - * - * Returns: - */ -gboolean -e_gdbus_proxy_method_call_sync_strv__string (const gchar *method_name, - GDBusProxy *proxy, - const gchar * const *in_strv, - gchar **out_string, - GCancellable *cancellable, - GError **error) -{ - return proxy_method_call_sync (method_name, E_GDBUS_TYPE_STRV, in_strv, E_GDBUS_TYPE_STRING, out_string, proxy, cancellable, error); -} - -/** - * e_gdbus_templates_encode_error: - * @in_error: (allow-none): - * - * Returns: (transfer full): a %NULL-terminated array of strings; free with - * g_strfreev() - */ -gchar ** -e_gdbus_templates_encode_error (const GError *in_error) -{ - gchar **strv; - - strv = g_new0 (gchar *, 3); - - if (!in_error) { - strv[0] = g_strdup (""); - strv[1] = g_strdup (""); - } else { - gchar *dbus_error_name = g_dbus_error_encode_gerror (in_error); - - strv[0] = e_util_utf8_make_valid (dbus_error_name ? dbus_error_name : ""); - strv[1] = e_util_utf8_make_valid (in_error->message); - - g_free (dbus_error_name); - } - - return strv; -} - -/* free *out_error with g_error_free(), if not NULL */ -gboolean -e_gdbus_templates_decode_error (const gchar * const *in_strv, - GError **out_error) -{ - const gchar *error_name, *error_message; - - g_return_val_if_fail (out_error != NULL, FALSE); - - *out_error = NULL; - - g_return_val_if_fail (in_strv != NULL, FALSE); - g_return_val_if_fail (in_strv[0] != NULL, FALSE); - g_return_val_if_fail (in_strv[1] != NULL, FALSE); - g_return_val_if_fail (in_strv[2] == NULL, FALSE); - - error_name = in_strv[0]; - error_message = in_strv[1]; - - if (error_name && *error_name && error_message) - *out_error = g_dbus_error_new_for_dbus_error (error_name, error_message); - - return TRUE; -} - -/** - * e_gdbus_templates_encode_two_strings: - * @in_str1: (allow-none): - * @in_str2: (allow-none): - * - * Returns: (transfer full): a %NULL-terminated array of strings; free with - * g_strfreev() - */ -gchar ** -e_gdbus_templates_encode_two_strings (const gchar *in_str1, - const gchar *in_str2) -{ - gchar **strv; - - strv = g_new0 (gchar *, 3); - strv[0] = e_util_utf8_make_valid (in_str1 ? in_str1 : ""); - strv[1] = e_util_utf8_make_valid (in_str2 ? in_str2 : ""); - strv[2] = NULL; - - return strv; -} - -/* free *out_str1 and *out_str2 with g_free() */ -gboolean -e_gdbus_templates_decode_two_strings (const gchar * const *in_strv, - gchar **out_str1, - gchar **out_str2) -{ - g_return_val_if_fail (in_strv != NULL, FALSE); - g_return_val_if_fail (in_strv[0] != NULL, FALSE); - g_return_val_if_fail (in_strv[1] != NULL, FALSE); - g_return_val_if_fail (in_strv[2] == NULL, FALSE); - g_return_val_if_fail (out_str1 != NULL, FALSE); - g_return_val_if_fail (out_str2 != NULL, FALSE); - - *out_str1 = g_strdup (in_strv[0]); - *out_str2 = g_strdup (in_strv[1]); - - return TRUE; -} diff --git a/src/libedataserver/e-gdbus-templates.h b/src/libedataserver/e-gdbus-templates.h deleted file mode 100644 index 1e9801c79..000000000 --- a/src/libedataserver/e-gdbus-templates.h +++ /dev/null @@ -1,764 +0,0 @@ -/* - * e-gdbus-templates.h - * - * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) - * - * This library is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#if !defined (__LIBEDATASERVER_H_INSIDE__) && !defined (LIBEDATASERVER_COMPILATION) -#error "Only <libedataserver/libedataserver.h> should be included directly." -#endif - -#ifndef EDS_DISABLE_DEPRECATED - -/* Do not generate bindings. */ -#ifndef __GI_SCANNER__ - -#ifndef E_GDBUS_TEMPLATES_H -#define E_GDBUS_TEMPLATES_H - -#include <gio/gio.h> - -G_BEGIN_DECLS - -void e_gdbus_templates_init_main_thread (void); - -#define E_TYPE_GDBUS_ASYNC_OP_KEEPER (e_gdbus_async_op_keeper_get_type ()) -#define E_GDBUS_ASYNC_OP_KEEPER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_GDBUS_ASYNC_OP_KEEPER, EGdbusAsyncOpKeeper)) -#define E_IS_GDBUS_ASYNC_OP_KEEPER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_GDBUS_ASYNC_OP_KEEPER)) -#define E_GDBUS_ASYNC_OP_KEEPER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_TYPE_GDBUS_ASYNC_OP_KEEPER, EGdbusAsyncOpKeeperInterface)) - -typedef struct _EGdbusAsyncOpKeeper EGdbusAsyncOpKeeper; /* Dummy typedef */ -typedef struct _EGdbusAsyncOpKeeperInterface EGdbusAsyncOpKeeperInterface; - -struct _EGdbusAsyncOpKeeperInterface -{ - GTypeInterface parent_iface; - - GHashTable * (* get_pending_ops) (EGdbusAsyncOpKeeper *object); - gboolean (* cancel_op_sync) (EGdbusAsyncOpKeeper *object, guint in_opid, GCancellable *cancellable, GError **error); -}; - -GType e_gdbus_async_op_keeper_get_type (void) G_GNUC_CONST; - -GHashTable * e_gdbus_async_op_keeper_create_pending_ops (EGdbusAsyncOpKeeper *object); -GHashTable * e_gdbus_async_op_keeper_get_pending_ops (EGdbusAsyncOpKeeper *object); -gboolean e_gdbus_async_op_keeper_cancel_op_sync (EGdbusAsyncOpKeeper *object, guint in_opid, GCancellable *cancellable, GError **error); - -enum { - E_GDBUS_TYPE_IS_ASYNC = 1 << 0, /* if set, then OPID and GError precedes to actual parameter */ - E_GDBUS_TYPE_VOID = 1 << 1, - E_GDBUS_TYPE_BOOLEAN = 1 << 2, - E_GDBUS_TYPE_STRING = 1 << 3, - E_GDBUS_TYPE_STRV = 1 << 4, - E_GDBUS_TYPE_UINT = 1 << 5 -}; - -/* _where is a target component name, like ' ## _where ## ' or 'cal' - * _mname is method name, like 'open' - * _mtype is method type, like 'method_in' - * _param_name is parameter name, like 'only_if_exists' - * _param_type is parameter type, as string, like "s" - * all except _param_type are identificators, not strings -*/ -#define E_DECLARE_GDBUS_ARG(_where, _mname, _mtype, _param_name, _param_type) \ - static const GDBusArgInfo e_gdbus_ ## _where ## _ ## _mtype ## _mname ## _param_name = \ - { \ - -1, \ - (gchar *) # _param_name, \ - (gchar *) _param_type, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_NOTIFY_SIGNAL_0(_where, _sname) \ - static const GDBusSignalInfo e_gdbus_ ## _where ## _signal_ ## _sname = \ - { \ - -1, \ - (gchar *) # _sname, \ - (GDBusArgInfo **) NULL, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_NOTIFY_SIGNAL_1(_where, _sname, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, _p1_name, _p1_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname[] = \ - { \ - &e_gdbus_ ## _where ## _signal ## _sname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusSignalInfo e_gdbus_ ## _where ## _signal_ ## _sname = \ - { \ - -1, \ - (gchar *) # _sname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_NOTIFY_SIGNAL_2(_where, _sname, _p1_name, _p1_type, _p2_name, _p2_type) \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, _p2_name, _p2_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname[] = \ - { \ - &e_gdbus_ ## _where ## _signal ## _sname ## _p1_name, \ - &e_gdbus_ ## _where ## _signal ## _sname ## _p2_name, \ - NULL \ - }; \ - \ - static const GDBusSignalInfo e_gdbus_ ## _where ## _signal_ ## _sname = \ - { \ - -1, \ - (gchar *) # _sname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_0(_where, _sname) \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, opid, "u") \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, dbus_error_name, "s") \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, dbus_error_message, "s") \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname[] = \ - { \ - &e_gdbus_ ## _where ## _signal ## _sname ## opid, \ - &e_gdbus_ ## _where ## _signal ## _sname ## dbus_error_name, \ - &e_gdbus_ ## _where ## _signal ## _sname ## dbus_error_message, \ - NULL \ - }; \ - \ - static const GDBusSignalInfo e_gdbus_ ## _where ## _signal_ ## _sname = \ - { \ - -1, \ - (gchar *) # _sname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_1(_where, _sname, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, opid, "u") \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, dbus_error_name, "s") \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, dbus_error_message, "s") \ - E_DECLARE_GDBUS_ARG (_where, _sname, signal, _p1_name, _p1_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname[] = \ - { \ - &e_gdbus_ ## _where ## _signal ## _sname ## opid, \ - &e_gdbus_ ## _where ## _signal ## _sname ## dbus_error_name, \ - &e_gdbus_ ## _where ## _signal ## _sname ## dbus_error_message, \ - &e_gdbus_ ## _where ## _signal ## _sname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusSignalInfo e_gdbus_ ## _where ## _signal_ ## _sname = \ - { \ - -1, \ - (gchar *) # _sname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _signal_arg_pointers_ ## _sname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_SYNC_METHOD_0(_where, _mname) \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) NULL, \ - (GDBusArgInfo **) NULL, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_SYNC_METHOD_1(_where, _mname, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_in, _p1_name, _p1_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_in ## _mname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname, \ - (GDBusArgInfo **) NULL, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_SYNC_METHOD_0_WITH_RETURN(_where, _mname, _r1_name, _r1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, _r1_name, _r1_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## _r1_name, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) NULL, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_SYNC_METHOD_1_WITH_RETURN(_where, _mname, _p1_name, _p1_type, _r1_name, _r1_type)\ - E_DECLARE_GDBUS_ARG (_where, _mname, method_in, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, _r1_name, _r1_type) \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_in ## _mname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## _r1_name, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_METHOD_0(_where, _mname) \ - E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_0 (_where, _mname ## _done) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, opid, "u") \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## opid, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) NULL, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_METHOD_1(_where, _mname, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_0 (_where, _mname ## _done) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_in, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, opid, "u") \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_in ## _mname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## opid, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_METHOD_0_WITH_RETURN(_where, _mname, _r1_name, _r1_type) \ - E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_1 (_where, _mname ## _done, _r1_name, _r1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, opid, "u") \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## opid, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) NULL, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARE_GDBUS_ASYNC_METHOD_1_WITH_RETURN(_where, _mname, _p1_name, _p1_type, _r1_name, _r1_type)\ - E_DECLARE_GDBUS_ASYNC_DONE_SIGNAL_1 (_where, _mname ## _done, _r1_name, _r1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_in, _p1_name, _p1_type) \ - E_DECLARE_GDBUS_ARG (_where, _mname, method_out, opid, "u") \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_in ## _mname ## _p1_name, \ - NULL \ - }; \ - \ - static const GDBusArgInfo * const e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname[] = \ - { \ - &e_gdbus_ ## _where ## _method_out ## _mname ## opid, \ - NULL \ - }; \ - \ - static const GDBusMethodInfo e_gdbus_ ## _where ## _method_ ## _mname = \ - { \ - -1, \ - (gchar *) # _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_in_arg_pointers_ ## _mname, \ - (GDBusArgInfo **) &e_gdbus_ ## _where ## _method_out_arg_pointers_ ## _mname, \ - (GDBusAnnotationInfo **) NULL, \ - }; - -#define E_DECLARED_GDBUS_SIGNAL_INFO_NAME(_where, _sname) e_gdbus_ ## _where ## _signal_ ## _sname -#define E_DECLARED_GDBUS_METHOD_INFO_NAME(_where, _mname) e_gdbus_ ## _where ## _method_ ## _mname - -/* this requires signal_emission_hook_cb_ ## _sig_name hook defined, - * which can be created with one of E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_... macros */ -#define E_INIT_GDBUS_SIGNAL_VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - signals[_sig_id] = g_signal_new (# _sig_name_var, \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, _sig_name_var), \ - NULL, \ - NULL, \ - NULL, \ - G_TYPE_NONE, \ - 0); \ - \ - g_signal_add_emission_hook (signals[_sig_id], 0, signal_emission_hook_cb_ ## _sig_name_var, (gpointer) _dbus_sig_name_str, NULL);\ - g_hash_table_insert (_signal_name_to_id, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (_sig_id)); \ - g_hash_table_insert (_signal_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_VOID)); - -#define E_INIT_GDBUS_SIGNAL_TMPL_TYPED(_mtype, _gtype, _iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - signals[_sig_id] = g_signal_new (# _sig_name_var, \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, _sig_name_var), \ - NULL, \ - NULL, \ - NULL, \ - G_TYPE_NONE, \ - 1, \ - G_TYPE_ ## _gtype); \ - \ - g_signal_add_emission_hook (signals[_sig_id], 0, signal_emission_hook_cb_ ## _sig_name_var, (gpointer) _dbus_sig_name_str, NULL);\ - g_hash_table_insert (_signal_name_to_id, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (_sig_id)); \ - g_hash_table_insert (_signal_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_ ## _gtype)); - -#define E_INIT_GDBUS_SIGNAL_BOOLEAN(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - E_INIT_GDBUS_SIGNAL_TMPL_TYPED (BOOLEAN, BOOLEAN, _iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) - -#define E_INIT_GDBUS_SIGNAL_STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - E_INIT_GDBUS_SIGNAL_TMPL_TYPED (STRING, STRING, _iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) - -#define E_INIT_GDBUS_SIGNAL_STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - E_INIT_GDBUS_SIGNAL_TMPL_TYPED (BOXED, STRV, _iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) - -#define E_INIT_GDBUS_SIGNAL_UINT(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - E_INIT_GDBUS_SIGNAL_TMPL_TYPED (UINT, UINT, _iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) - -#define E_INIT_GDBUS_SIGNAL_UINT_STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _sig_id) \ - signals[_sig_id] = g_signal_new (# _sig_name_var, \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, _sig_name_var), \ - NULL, \ - NULL, \ - NULL, \ - G_TYPE_NONE, \ - 2, \ - G_TYPE_UINT, G_TYPE_STRING); \ - \ - g_signal_add_emission_hook (signals[_sig_id], 0, signal_emission_hook_cb_ ## _sig_name_var, (gpointer) _dbus_sig_name_str, NULL);\ - g_hash_table_insert (_signal_name_to_id, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (_sig_id)); \ - g_hash_table_insert (_signal_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_UINT | E_GDBUS_TYPE_STRING)); - -#define E_INIT_GDBUS_METHOD_DONE_VOID(_iface_struct, _sig_name_var, _done_sig_id) \ - signals[_done_sig_id] = g_signal_new (# _sig_name_var "_done", \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, _sig_name_var ## _done), \ - NULL, \ - NULL, \ - NULL, \ - G_TYPE_NONE, \ - 2, \ - G_TYPE_UINT, G_TYPE_ERROR); \ - g_signal_add_emission_hook (signals[_done_sig_id], 0, \ - signal_emission_hook_cb_ ## _sig_name_var ## _done, (gpointer) # _sig_name_var "_done", NULL); \ - g_hash_table_insert (_signal_name_to_id, (gpointer) # _sig_name_var "_done", GUINT_TO_POINTER (_done_sig_id)); \ - g_hash_table_insert (_signal_name_to_type, (gpointer) # _sig_name_var "_done", GUINT_TO_POINTER (E_GDBUS_TYPE_IS_ASYNC | E_GDBUS_TYPE_VOID)); - -#define E_INIT_GDBUS_METHOD_DONE_ASYNC_TMPL_TYPED(_mtype, _gtype, _iface_struct, _sig_name_var, _done_sig_id) \ - signals[_done_sig_id] = g_signal_new (# _sig_name_var "_done", \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, _sig_name_var ## _done), \ - NULL, \ - NULL, \ - NULL, \ - G_TYPE_NONE, \ - 3, \ - G_TYPE_UINT, G_TYPE_ERROR, G_TYPE_ ## _gtype); \ - g_signal_add_emission_hook (signals[_done_sig_id], 0, \ - signal_emission_hook_cb_ ## _sig_name_var ## _done, (gpointer) # _sig_name_var "_done", NULL); \ - g_hash_table_insert (_signal_name_to_id, (gpointer) # _sig_name_var "_done", GUINT_TO_POINTER (_done_sig_id)); \ - g_hash_table_insert (_signal_name_to_type, (gpointer) # _sig_name_var "_done", GUINT_TO_POINTER (E_GDBUS_TYPE_IS_ASYNC | E_GDBUS_TYPE_ ## _gtype)); - -#define E_INIT_GDBUS_METHOD_DONE_BOOLEAN(_iface_struct, _sig_name_var, _done_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_ASYNC_TMPL_TYPED (BOOLEAN, BOOLEAN, _iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_DONE_STRING(_iface_struct, _sig_name_var, _done_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_ASYNC_TMPL_TYPED (STRING, STRING, _iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_DONE_STRV(_iface_struct, _sig_name_var, _done_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_ASYNC_TMPL_TYPED (BOXED, STRV, _iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_DONE_UINT(_iface_struct, _sig_name_var, _done_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_ASYNC_TMPL_TYPED (UINT, UINT, _iface_struct, _sig_name_var, _done_sig_id) - -/* do not use this directly, there is missing _method_name_to_type insertion */ -#define E_INIT_GDBUS_METHOD_CALL_TMPL_VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - signals[_method_sig_id] = g_signal_new ("handle-" # _sig_name_var, \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, handle_ ## _sig_name_var), \ - NULL, NULL, NULL, \ - G_TYPE_BOOLEAN, \ - 1, \ - G_TYPE_DBUS_METHOD_INVOCATION); \ - g_hash_table_insert (_method_name_to_id, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (_method_sig_id)); - -/* do not use this directly, there is missing _method_name_to_type insertion */ -#define E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED(_mtype, _gtype, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - signals[_method_sig_id] = g_signal_new ("handle-" # _sig_name_var, \ - G_TYPE_FROM_INTERFACE (iface), \ - G_SIGNAL_RUN_LAST, \ - G_STRUCT_OFFSET (_iface_struct, handle_ ## _sig_name_var), \ - NULL, NULL, NULL, \ - G_TYPE_BOOLEAN, \ - 2, \ - G_TYPE_DBUS_METHOD_INVOCATION, \ - G_TYPE_ ## _gtype); \ - g_hash_table_insert (_method_name_to_id, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (_method_sig_id)); \ - -#define E_INIT_GDBUS_METHOD_CALL_ASYNC_TMPL_TYPED(_mtype, _gtype, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED (_mtype, _gtype, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_ ## _gtype | E_GDBUS_TYPE_IS_ASYNC)); - -#define E_INIT_GDBUS_METHOD_VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_VOID (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_VOID)); - -#define E_INIT_GDBUS_METHOD_BOOLEAN(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED (BOOLEAN, BOOLEAN, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id)\ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_BOOLEAN)); - -#define E_INIT_GDBUS_METHOD_STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED (STRING, STRING, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_STRING)); - -#define E_INIT_GDBUS_METHOD_STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED (BOXED, STRV, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_STRV)); - -#define E_INIT_GDBUS_METHOD_UINT(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_TYPED (UINT, UINT, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_UINT)); - -#define E_INIT_GDBUS_METHOD_CALL_VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_TMPL_VOID (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - g_hash_table_insert (_method_name_to_type, (gpointer) _dbus_sig_name_str, GUINT_TO_POINTER (E_GDBUS_TYPE_VOID | E_GDBUS_TYPE_IS_ASYNC)); - -#define E_INIT_GDBUS_METHOD_CALL_BOOLEAN(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_ASYNC_TMPL_TYPED (BOOLEAN, BOOLEAN, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) - -#define E_INIT_GDBUS_METHOD_CALL_STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_ASYNC_TMPL_TYPED (STRING, STRING, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) - -#define E_INIT_GDBUS_METHOD_CALL_STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_ASYNC_TMPL_TYPED (BOXED, STRV, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) - -#define E_INIT_GDBUS_METHOD_CALL_UINT(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_ASYNC_TMPL_TYPED (UINT, UINT, _iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_VOID__VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_VOID (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_VOID (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_VOID__STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_VOID (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRING (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_VOID__STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_VOID (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRV (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_BOOLEAN__VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_BOOLEAN (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_VOID (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_UINT__VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_UINT (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_VOID (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRING__VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_STRING (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_VOID (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRV__VOID(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_STRV (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_VOID (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRING__STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id)\ - E_INIT_GDBUS_METHOD_CALL_STRING (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRING (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRING__STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_STRING (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRV (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRV__STRING(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_STRV (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRING (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_INIT_GDBUS_METHOD_ASYNC_STRV__STRV(_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id, _done_sig_id) \ - E_INIT_GDBUS_METHOD_CALL_STRV (_iface_struct, _dbus_sig_name_str, _sig_name_var, _method_sig_id) \ - E_INIT_GDBUS_METHOD_DONE_STRV (_iface_struct, _sig_name_var, _done_sig_id) - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_VOID(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_void (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_BOOLEAN(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_boolean (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRING(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_string (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_STRV(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_strv (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_UINT(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_uint (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_UINT_STRING(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_uint_string (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_VOID(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_async_void (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_BOOLEAN(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_async_boolean (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_STRING(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_async_string (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_STRV(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_async_strv (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_UINT(_iface_name, _sig_name) \ - static gboolean \ - signal_emission_hook_cb_ ## _sig_name (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) \ - { \ - return e_gdbus_signal_emission_hook_async_uint (ihint, n_param_values, param_values, user_data, _iface_name); \ - } - -#define E_DECLARE_GDBUS_METHOD_DONE_EMISSION_HOOK_ASYNC_VOID(_iface_name, _sig_name) \ - E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_VOID (_iface_name, _sig_name ## _done) - -#define E_DECLARE_GDBUS_METHOD_DONE_EMISSION_HOOK_ASYNC_BOOLEAN(_iface_name, _sig_name) \ - E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_BOOLEAN (_iface_name, _sig_name ## _done) - -#define E_DECLARE_GDBUS_METHOD_DONE_EMISSION_HOOK_ASYNC_STRING(_iface_name, _sig_name) \ - E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_STRING (_iface_name, _sig_name ## _done) - -#define E_DECLARE_GDBUS_METHOD_DONE_EMISSION_HOOK_ASYNC_STRV(_iface_name, _sig_name) \ - E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_STRV (_iface_name, _sig_name ## _done) - -#define E_DECLARE_GDBUS_METHOD_DONE_EMISSION_HOOK_ASYNC_UINT(_iface_name, _sig_name) \ - E_DECLARE_GDBUS_SIGNAL_EMISSION_HOOK_ASYNC_UINT (_iface_name, _sig_name ## _done) - -#define E_GDBUS_CONNECT_METHOD_DONE_SIGNAL_VOID(_sig_name) \ - g_signal_connect (proxy, # _sig_name "_done", G_CALLBACK (e_gdbus_proxy_async_method_done_void), NULL); - -#define E_GDBUS_CONNECT_METHOD_DONE_SIGNAL_BOOLEAN(_sig_name) \ - g_signal_connect (proxy, # _sig_name "_done", G_CALLBACK (e_gdbus_proxy_async_method_done_boolean), NULL); - -#define E_GDBUS_CONNECT_METHOD_DONE_SIGNAL_STRING(_sig_name) \ - g_signal_connect (proxy, # _sig_name "_done", G_CALLBACK (e_gdbus_proxy_async_method_done_string), NULL); - -#define E_GDBUS_CONNECT_METHOD_DONE_SIGNAL_STRV(_sig_name) \ - g_signal_connect (proxy, # _sig_name "_done", G_CALLBACK (e_gdbus_proxy_async_method_done_strv), NULL); - -#define E_GDBUS_CONNECT_METHOD_DONE_SIGNAL_UINT(_sig_name) \ - g_signal_connect (proxy, # _sig_name "_done", G_CALLBACK (e_gdbus_proxy_async_method_done_uint), NULL); - -void e_gdbus_proxy_emit_signal (GDBusProxy *proxy, GVariant *parameters, guint signal_id, guint signal_type); -void e_gdbus_stub_handle_method_call (GObject *stub_object, GDBusMethodInvocation *invocation, GVariant *parameters, const gchar *method_name, guint method_id, guint method_type); - -gboolean e_gdbus_signal_emission_hook_void (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_boolean (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_string (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_strv (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_uint (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_uint_string (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); - -gboolean e_gdbus_signal_emission_hook_async_void (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_async_boolean (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_async_string (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_async_strv (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); -gboolean e_gdbus_signal_emission_hook_async_uint (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, const gchar *signal_name, const gchar *iface_name); - -/* GDBus calls method completion functions; after the 'async' method is expected associated done signal */ -void e_gdbus_complete_async_method (gpointer object, GDBusMethodInvocation *invocation, guint opid); -void e_gdbus_complete_sync_method_void (gpointer object, GDBusMethodInvocation *invocation, const GError *error); -void e_gdbus_complete_sync_method_boolean (gpointer object, GDBusMethodInvocation *invocation, gboolean out_boolean, const GError *error); -void e_gdbus_complete_sync_method_string (gpointer object, GDBusMethodInvocation *invocation, const gchar *out_string, const GError *error); -void e_gdbus_complete_sync_method_strv (gpointer object, GDBusMethodInvocation *invocation, const gchar * const *out_strv, const GError *error); -void e_gdbus_complete_sync_method_uint (gpointer object, GDBusMethodInvocation *invocation, guint out_uint, const GError *error); - -/* callbacks on done signal handlers in the client proxy, which implements EGdbusAsyncOpKeeper interface; - * functions take ownership of out parameters and are responsible for their freeing */ -void e_gdbus_proxy_async_method_done_void (EGdbusAsyncOpKeeper *proxy, guint arg_opid, const GError *error); -void e_gdbus_proxy_async_method_done_boolean (EGdbusAsyncOpKeeper *proxy, guint arg_opid, const GError *error, gboolean out_boolean); -void e_gdbus_proxy_async_method_done_string (EGdbusAsyncOpKeeper *proxy, guint arg_opid, const GError *error, const gchar *out_string); -void e_gdbus_proxy_async_method_done_strv (EGdbusAsyncOpKeeper *proxy, guint arg_opid, const GError *error, const gchar * const *out_strv); -void e_gdbus_proxy_async_method_done_uint (EGdbusAsyncOpKeeper *proxy, guint arg_opid, const GError *error, guint out_uint); - -void e_gdbus_proxy_call_void (const gchar *method_name, gpointer source_tag, EGdbusAsyncOpKeeper *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_call_boolean (const gchar *method_name, gpointer source_tag, EGdbusAsyncOpKeeper *proxy, gboolean in_boolean, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_call_string (const gchar *method_name, gpointer source_tag, EGdbusAsyncOpKeeper *proxy, const gchar *in_string, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_call_strv (const gchar *method_name, gpointer source_tag, EGdbusAsyncOpKeeper *proxy, const gchar * const *in_strv, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_call_uint (const gchar *method_name, gpointer source_tag, EGdbusAsyncOpKeeper *proxy, guint in_uint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); - -gboolean e_gdbus_proxy_finish_call_void (EGdbusAsyncOpKeeper *proxy, GAsyncResult *result, GError **error, gpointer source_tag); -gboolean e_gdbus_proxy_finish_call_boolean (EGdbusAsyncOpKeeper *proxy, GAsyncResult *result, gboolean *out_boolean, GError **error, gpointer source_tag); -gboolean e_gdbus_proxy_finish_call_string (EGdbusAsyncOpKeeper *proxy, GAsyncResult *result, gchar **out_string, GError **error, gpointer source_tag); -gboolean e_gdbus_proxy_finish_call_strv (EGdbusAsyncOpKeeper *proxy, GAsyncResult *result, gchar ***out_strv, GError **error, gpointer source_tag); -gboolean e_gdbus_proxy_finish_call_uint (EGdbusAsyncOpKeeper *proxy, GAsyncResult *result, guint *out_uint, GError **error, gpointer source_tag); - -typedef void (* EGdbusCallStartVoid) (GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -typedef void (* EGdbusCallStartBoolean) (GDBusProxy *proxy, gboolean in_boolean, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -typedef void (* EGdbusCallStartString) (GDBusProxy *proxy, const gchar *in_string, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -typedef void (* EGdbusCallStartStrv) (GDBusProxy *proxy, const gchar * const *in_strv, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -typedef void (* EGdbusCallStartUint) (GDBusProxy *proxy, guint in_uint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); - -typedef gboolean (* EGdbusCallFinishVoid) (GDBusProxy *proxy, GAsyncResult *result, GError **error); -typedef gboolean (* EGdbusCallFinishBoolean) (GDBusProxy *proxy, GAsyncResult *result, gboolean *out_boolean, GError **error); -typedef gboolean (* EGdbusCallFinishString) (GDBusProxy *proxy, GAsyncResult *result, gchar **out_string, GError **error); -typedef gboolean (* EGdbusCallFinishStrv) (GDBusProxy *proxy, GAsyncResult *result, gchar ***out_strv, GError **error); -typedef gboolean (* EGdbusCallFinishUint) (GDBusProxy *proxy, GAsyncResult *result, guint *out_uint, GError **error); - -/* this is for methods which are dividied into invocation and done signal */ -gboolean e_gdbus_proxy_call_sync_void__void (GDBusProxy *proxy, GCancellable *cancellable, GError **error, EGdbusCallStartVoid start_func, EGdbusCallFinishVoid finish_func); -gboolean e_gdbus_proxy_call_sync_void__boolean (GDBusProxy *proxy, gboolean *out_boolean, GCancellable *cancellable, GError **error, EGdbusCallStartVoid start_func, EGdbusCallFinishBoolean finish_func); -gboolean e_gdbus_proxy_call_sync_void__string (GDBusProxy *proxy, gchar **out_string, GCancellable *cancellable, GError **error, EGdbusCallStartVoid start_func, EGdbusCallFinishString finish_func); -gboolean e_gdbus_proxy_call_sync_void__strv (GDBusProxy *proxy, gchar ***out_strv, GCancellable *cancellable, GError **error, EGdbusCallStartVoid start_func, EGdbusCallFinishStrv finish_func); -gboolean e_gdbus_proxy_call_sync_void__uint (GDBusProxy *proxy, guint *out_uint, GCancellable *cancellable, GError **error, EGdbusCallStartVoid start_func, EGdbusCallFinishUint finish_func); -gboolean e_gdbus_proxy_call_sync_boolean__void (GDBusProxy *proxy, gboolean in_boolean, GCancellable *cancellable, GError **error, EGdbusCallStartBoolean start_func, EGdbusCallFinishVoid finish_func); -gboolean e_gdbus_proxy_call_sync_string__void (GDBusProxy *proxy, const gchar *in_string, GCancellable *cancellable, GError **error, EGdbusCallStartString start_func, EGdbusCallFinishVoid finish_func); -gboolean e_gdbus_proxy_call_sync_strv__void (GDBusProxy *proxy, const gchar * const *in_strv, GCancellable *cancellable, GError **error, EGdbusCallStartStrv start_func, EGdbusCallFinishVoid finish_func); -gboolean e_gdbus_proxy_call_sync_uint__void (GDBusProxy *proxy, guint in_uint, GCancellable *cancellable, GError **error, EGdbusCallStartUint start_func, EGdbusCallFinishVoid finish_func); -gboolean e_gdbus_proxy_call_sync_string__string (GDBusProxy *proxy, const gchar *in_string, gchar **out_string, GCancellable *cancellable, GError **error, EGdbusCallStartString start_func, EGdbusCallFinishString finish_func); -gboolean e_gdbus_proxy_call_sync_string__strv (GDBusProxy *proxy, const gchar *in_string, gchar ***out_strv, GCancellable *cancellable, GError **error, EGdbusCallStartString start_func, EGdbusCallFinishStrv finish_func); -gboolean e_gdbus_proxy_call_sync_strv__string (GDBusProxy *proxy, const gchar * const *in_strv, gchar **out_string, GCancellable *cancellable, GError **error, EGdbusCallStartStrv start_func, EGdbusCallFinishString finish_func); -gboolean e_gdbus_proxy_call_sync_strv__strv (GDBusProxy *proxy, const gchar * const *in_strv, gchar ***out_strv, GCancellable *cancellable, GError **error, EGdbusCallStartStrv start_func, EGdbusCallFinishStrv finish_func); - -/* this is for "synchronous" methods, those without done signal */ -void e_gdbus_proxy_method_call_void (const gchar *method_name, GDBusProxy *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_method_call_boolean (const gchar *method_name, GDBusProxy *proxy, gboolean in_boolean, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_method_call_string (const gchar *method_name, GDBusProxy *proxy, const gchar *in_string, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_method_call_strv (const gchar *method_name, GDBusProxy *proxy, const gchar * const *in_strv, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -void e_gdbus_proxy_method_call_uint (const gchar *method_name, GDBusProxy *proxy, guint in_uint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); - -gboolean e_gdbus_proxy_method_call_finish_void (GDBusProxy *proxy, GAsyncResult *result, GError **error); -gboolean e_gdbus_proxy_method_call_finish_boolean (GDBusProxy *proxy, GAsyncResult *result, gboolean *out_boolean, GError **error); -gboolean e_gdbus_proxy_method_call_finish_string (GDBusProxy *proxy, GAsyncResult *result, gchar **out_string, GError **error); -gboolean e_gdbus_proxy_method_call_finish_strv (GDBusProxy *proxy, GAsyncResult *result, gchar ***out_strv, GError **error); -gboolean e_gdbus_proxy_method_call_finish_uint (GDBusProxy *proxy, GAsyncResult *result, guint *out_uint, GError **error); - -gboolean e_gdbus_proxy_method_call_sync_void__void (const gchar *method_name, GDBusProxy *proxy, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_boolean__void (const gchar *method_name, GDBusProxy *proxy, gboolean in_boolean, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_string__void (const gchar *method_name, GDBusProxy *proxy, const gchar *in_string, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_strv__void (const gchar *method_name, GDBusProxy *proxy, const gchar * const *in_strv, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_uint__void (const gchar *method_name, GDBusProxy *proxy, guint in_uint, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_string__string (const gchar *method_name, GDBusProxy *proxy, const gchar *in_string, gchar **out_string, GCancellable *cancellable, GError **error); -gboolean e_gdbus_proxy_method_call_sync_strv__string (const gchar *method_name, GDBusProxy *proxy, const gchar * const *in_strv, gchar **out_string, GCancellable *cancellable, GError **error); - -gchar ** e_gdbus_templates_encode_error (const GError *in_error); -gboolean e_gdbus_templates_decode_error (const gchar * const *in_strv, GError **out_error); - -gchar ** e_gdbus_templates_encode_two_strings (const gchar *in_str1, const gchar *in_str2); -gboolean e_gdbus_templates_decode_two_strings (const gchar * const *in_strv, gchar **out_str1, gchar **out_str2); - -G_END_DECLS - -#endif /* E_GDBUS_TEMPLATES_H */ - -#endif /* __GI_SCANNER__ */ - -#endif /* EDS_DISABLE_DEPRECATED */ - diff --git a/src/libedataserver/libedataserver.h b/src/libedataserver/libedataserver.h index 3f0b49279..8b19ef572 100644 --- a/src/libedataserver/libedataserver.h +++ b/src/libedataserver/libedataserver.h @@ -32,7 +32,6 @@ #include <libedataserver/e-flag.h> #include <libedataserver/e-free-form-exp.h> #include <libedataserver/e-gdata-oauth2-authorizer.h> -#include <libedataserver/e-gdbus-templates.h> #include <libedataserver/e-iterator.h> #include <libedataserver/e-list-iterator.h> #include <libedataserver/e-list.h> diff --git a/src/private/CMakeLists.txt b/src/private/CMakeLists.txt index 401acf2c6..c2de59bba 100644 --- a/src/private/CMakeLists.txt +++ b/src/private/CMakeLists.txt @@ -88,6 +88,18 @@ gdbus_codegen(org.gnome.evolution.dataserver.AddressBookCursor.xml e-dbus-address-book-cursor GENERATED_DBUS_ADDRESS_BOOK_CURSOR) +set(GENERATED_DBUS_ADDRESS_BOOK_VIEW + e-dbus-address-book-view.c + e-dbus-address-book-view.h + e-dbus-address-book-view-org.gnome.evolution.dataserver.AddressBookView.xml +) + +gdbus_codegen(org.gnome.evolution.dataserver.AddressBookView.xml + org.gnome.evolution.dataserver. + E_DBus + e-dbus-address-book-view + GENERATED_DBUS_ADDRESS_BOOK_VIEW) + set(GENERATED_DBUS_DIRECT_BOOK e-dbus-direct-book.c e-dbus-direct-book.h @@ -136,6 +148,18 @@ gdbus_codegen(org.gnome.evolution.dataserver.CalendarFactory.xml e-dbus-calendar-factory GENERATED_DBUS_CALENDAR_FACTORY) +set(GENERATED_DBUS_CALENDAR_VIEW + e-dbus-calendar-view.c + e-dbus-calendar-view.h + e-dbus-calendar-view-org.gnome.evolution.dataserver.CalendarView.xml +) + +gdbus_codegen(org.gnome.evolution.dataserver.CalendarView.xml + org.gnome.evolution.dataserver. + E_DBus + e-dbus-calendar-view + GENERATED_DBUS_CALENDAR_VIEW) + set(GENERATED_DBUS_SUBPROCESS_BACKEND e-dbus-subprocess-backend.c e-dbus-subprocess-backend.h @@ -156,10 +180,12 @@ add_library(edbus-private SHARED ${GENERATED_DBUS_AUTHENTICATOR} ${GENERATED_DBUS_ADDRESS_BOOK} ${GENERATED_DBUS_ADDRESS_BOOK_CURSOR} + ${GENERATED_DBUS_ADDRESS_BOOK_VIEW} ${GENERATED_DBUS_DIRECT_BOOK} ${GENERATED_DBUS_ADDRESS_BOOK_FACTORY} ${GENERATED_DBUS_CALENDAR} ${GENERATED_DBUS_CALENDAR_FACTORY} + ${GENERATED_DBUS_CALENDAR_VIEW} ${GENERATED_DBUS_USER_PROMPTER} ${GENERATED_DBUS_SUBPROCESS_BACKEND} ) diff --git a/src/private/org.gnome.evolution.dataserver.AddressBookView.xml b/src/private/org.gnome.evolution.dataserver.AddressBookView.xml new file mode 100644 index 000000000..bf481a464 --- /dev/null +++ b/src/private/org.gnome.evolution.dataserver.AddressBookView.xml @@ -0,0 +1,51 @@ +<!DOCTYPE node PUBLIC +"-//freedesktop//DTD D-Bus Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + +<!-- + org.gnome.evolution.dataserver.AddressBookView: + @short_description: Address book view + @since: 3.32 + + This interface allows for interaction with an address book view. +--> +<interface name="org.gnome.evolution.dataserver.AddressBookView"> + + <signal name="ObjectsAdded"> + <arg name="objects" type="as"/> + </signal> + + <signal name="ObjectsModified"> + <arg name="objects" type="as"/> + </signal> + + <signal name="ObjectsRemoved"> + <arg name="uids" type="as"/> + </signal> + + <signal name="Progress"> + <arg name="percent" type="u"/> + <arg name="message" type="s"/> + </signal> + + <signal name="Complete"> + <arg name="error_name" type="s"/> + <arg name="error_message" type="s"/> + </signal> + + <method name="Start"/> + + <method name="Stop"/> + + <method name="SetFlags"> + <arg name="flags" type="u"/> + </method> + + <method name="SetFieldsOfInterest"> + <arg name="only_fields" direction="in" type="as"/> + </method> + + <method name="Dispose"/> + +</interface> diff --git a/src/private/org.gnome.evolution.dataserver.CalendarView.xml b/src/private/org.gnome.evolution.dataserver.CalendarView.xml new file mode 100644 index 000000000..805902938 --- /dev/null +++ b/src/private/org.gnome.evolution.dataserver.CalendarView.xml @@ -0,0 +1,51 @@ +<!DOCTYPE node PUBLIC +"-//freedesktop//DTD D-Bus Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + +<!-- + org.gnome.evolution.dataserver.CalendarView: + @short_description: Calendar view + @since: 3.32 + + This interface allows for interaction with a calendar view. +--> +<interface name="org.gnome.evolution.dataserver.CalendarView"> + + <signal name="ObjectsAdded"> + <arg name="objects" type="as"/> + </signal> + + <signal name="ObjectsModified"> + <arg name="objects" type="as"/> + </signal> + + <signal name="ObjectsRemoved"> + <arg name="uids" type="as"/> + </signal> + + <signal name="Progress"> + <arg name="percent" type="u"/> + <arg name="message" type="s"/> + </signal> + + <signal name="Complete"> + <arg name="error_name" type="s"/> + <arg name="error_message" type="s"/> + </signal> + + <method name="Start"/> + + <method name="Stop"/> + + <method name="SetFlags"> + <arg name="flags" type="u"/> + </method> + + <method name="SetFieldsOfInterest"> + <arg name="only_fields" direction="in" type="as"/> + </method> + + <method name="Dispose"/> + +</interface> diff --git a/src/services/evolution-addressbook-factory/evolution-addressbook-factory.c b/src/services/evolution-addressbook-factory/evolution-addressbook-factory.c index 78dd6fc12..20639d2eb 100644 --- a/src/services/evolution-addressbook-factory/evolution-addressbook-factory.c +++ b/src/services/evolution-addressbook-factory/evolution-addressbook-factory.c @@ -82,7 +82,6 @@ main (gint argc, exit (EXIT_FAILURE); } - e_gdbus_templates_init_main_thread (); e_xml_initialize_in_main (); reload: diff --git a/src/services/evolution-alarm-notify/evolution-alarm-notify.c b/src/services/evolution-alarm-notify/evolution-alarm-notify.c index d3a46ba96..3e9e68e62 100644 --- a/src/services/evolution-alarm-notify/evolution-alarm-notify.c +++ b/src/services/evolution-alarm-notify/evolution-alarm-notify.c @@ -67,7 +67,6 @@ main (gint argc, exit (EXIT_FAILURE); } - e_gdbus_templates_init_main_thread (); e_xml_initialize_in_main (); alarm_notify = e_alarm_notify_new (NULL, &error); diff --git a/src/services/evolution-calendar-factory/evolution-calendar-factory.c b/src/services/evolution-calendar-factory/evolution-calendar-factory.c index 1c7a5bdbe..4217305bd 100644 --- a/src/services/evolution-calendar-factory/evolution-calendar-factory.c +++ b/src/services/evolution-calendar-factory/evolution-calendar-factory.c @@ -92,7 +92,6 @@ main (gint argc, icaltzutil_set_exact_vtimezones_support (0); #endif - e_gdbus_templates_init_main_thread (); e_xml_initialize_in_main (); reload: diff --git a/src/services/evolution-source-registry/evolution-source-registry.c b/src/services/evolution-source-registry/evolution-source-registry.c index 49c02c309..1c0a11382 100644 --- a/src/services/evolution-source-registry/evolution-source-registry.c +++ b/src/services/evolution-source-registry/evolution-source-registry.c @@ -177,7 +177,6 @@ main (gint argc, exit (EXIT_FAILURE); } - e_gdbus_templates_init_main_thread (); e_xml_initialize_in_main (); reload: diff --git a/src/services/evolution-user-prompter/evolution-user-prompter.c b/src/services/evolution-user-prompter/evolution-user-prompter.c index 9f52d1178..f711baa18 100644 --- a/src/services/evolution-user-prompter/evolution-user-prompter.c +++ b/src/services/evolution-user-prompter/evolution-user-prompter.c @@ -68,7 +68,6 @@ main (gint argc, exit (EXIT_FAILURE); } - e_gdbus_templates_init_main_thread (); e_xml_initialize_in_main (); reload: |