1 /* GDBus - GLib D-Bus Library 2 * 3 * Copyright (C) 2008-2010 Red Hat, Inc. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General 16 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>. 17 * 18 * Author: David Zeuthen <davidz@redhat.com> 19 */ 20 21 #ifndef __G_DBUS_PRIVATE_H__ 22 #define __G_DBUS_PRIVATE_H__ 23 24 #if !defined (GIO_COMPILATION) 25 #error "gdbusprivate.h is a private header file." 26 #endif 27 28 #include <gio/giotypes.h> 29 30 G_BEGIN_DECLS 31 32 /* ---------------------------------------------------------------------------------------------------- */ 33 34 typedef struct GDBusWorker GDBusWorker; 35 36 typedef void (*GDBusWorkerMessageReceivedCallback) (GDBusWorker *worker, 37 GDBusMessage *message, 38 gpointer user_data); 39 40 typedef GDBusMessage *(*GDBusWorkerMessageAboutToBeSentCallback) (GDBusWorker *worker, 41 GDBusMessage *message, 42 gpointer user_data); 43 44 typedef void (*GDBusWorkerDisconnectedCallback) (GDBusWorker *worker, 45 gboolean remote_peer_vanished, 46 GError *error, 47 gpointer user_data); 48 49 /* This function may be called from any thread - callbacks will be in the shared private message thread 50 * and must not block. 51 */ 52 GDBusWorker *_g_dbus_worker_new (GIOStream *stream, 53 GDBusCapabilityFlags capabilities, 54 gboolean initially_frozen, 55 GDBusWorkerMessageReceivedCallback message_received_callback, 56 GDBusWorkerMessageAboutToBeSentCallback message_about_to_be_sent_callback, 57 GDBusWorkerDisconnectedCallback disconnected_callback, 58 gpointer user_data); 59 60 /* can be called from any thread - steals blob */ 61 void _g_dbus_worker_send_message (GDBusWorker *worker, 62 GDBusMessage *message, 63 gchar *blob, 64 gsize blob_len); 65 66 /* can be called from any thread */ 67 void _g_dbus_worker_stop (GDBusWorker *worker); 68 69 /* can be called from any thread */ 70 void _g_dbus_worker_unfreeze (GDBusWorker *worker); 71 72 /* can be called from any thread (except the worker thread) */ 73 gboolean _g_dbus_worker_flush_sync (GDBusWorker *worker, 74 GCancellable *cancellable, 75 GError **error); 76 77 /* can be called from any thread */ 78 void _g_dbus_worker_close (GDBusWorker *worker, 79 GTask *task); 80 81 /* ---------------------------------------------------------------------------------------------------- */ 82 83 void _g_dbus_initialize (void); 84 gboolean _g_dbus_debug_authentication (void); 85 gboolean _g_dbus_debug_transport (void); 86 gboolean _g_dbus_debug_message (void); 87 gboolean _g_dbus_debug_payload (void); 88 gboolean _g_dbus_debug_call (void); 89 gboolean _g_dbus_debug_signal (void); 90 gboolean _g_dbus_debug_incoming (void); 91 gboolean _g_dbus_debug_return (void); 92 gboolean _g_dbus_debug_emission (void); 93 gboolean _g_dbus_debug_address (void); 94 gboolean _g_dbus_debug_proxy (void); 95 96 void _g_dbus_debug_print_lock (void); 97 void _g_dbus_debug_print_unlock (void); 98 99 gboolean _g_dbus_address_parse_entry (const gchar *address_entry, 100 gchar **out_transport_name, 101 GHashTable **out_key_value_pairs, 102 GError **error); 103 104 GVariantType * _g_dbus_compute_complete_signature (GDBusArgInfo **args); 105 106 gchar *_g_dbus_hexdump (const gchar *data, gsize len, guint indent); 107 108 /* ---------------------------------------------------------------------------------------------------- */ 109 110 #ifdef G_OS_WIN32 111 gchar *_g_dbus_win32_get_user_sid (void); 112 113 #define _GDBUS_ARG_WIN32_RUN_SESSION_BUS "_win32_run_session_bus" 114 /* The g_win32_run_session_bus is exported from libgio dll on win32, 115 * but still is NOT part of API/ABI since it is declared in private header 116 * and used only by tool built from same sources. 117 * Initially this function was introduces for usage with rundll, 118 * so the signature is kept rundll-compatible, though parameters aren't used. 119 */ 120 __declspec(dllexport) void __stdcall 121 g_win32_run_session_bus (void* hwnd, void* hinst, const char* cmdline, int cmdshow); 122 gchar *_g_dbus_win32_get_session_address_dbus_launch (GError **error); 123 #endif 124 125 gchar *_g_dbus_get_machine_id (GError **error); 126 127 gchar *_g_dbus_enum_to_string (GType enum_type, gint value); 128 129 /* ---------------------------------------------------------------------------------------------------- */ 130 131 GDBusMethodInvocation *_g_dbus_method_invocation_new (const gchar *sender, 132 const gchar *object_path, 133 const gchar *interface_name, 134 const gchar *method_name, 135 const GDBusMethodInfo *method_info, 136 const GDBusPropertyInfo *property_info, 137 GDBusConnection *connection, 138 GDBusMessage *message, 139 GVariant *parameters, 140 gpointer user_data); 141 142 /* ---------------------------------------------------------------------------------------------------- */ 143 144 gboolean _g_signal_accumulator_false_handled (GSignalInvocationHint *ihint, 145 GValue *return_accu, 146 const GValue *handler_return, 147 gpointer dummy); 148 149 gboolean _g_dbus_object_skeleton_has_authorize_method_handlers (GDBusObjectSkeleton *object); 150 151 void _g_dbus_object_proxy_add_interface (GDBusObjectProxy *proxy, 152 GDBusProxy *interface_proxy); 153 void _g_dbus_object_proxy_remove_interface (GDBusObjectProxy *proxy, 154 const gchar *interface_name); 155 156 gchar *_g_dbus_hexencode (const gchar *str, 157 gsize str_len); 158 159 /* Implemented in gdbusconnection.c */ 160 GDBusConnection *_g_bus_get_singleton_if_exists (GBusType bus_type); 161 void _g_bus_forget_singleton (GBusType bus_type); 162 163 G_END_DECLS 164 165 #endif /* __G_DBUS_PRIVATE_H__ */ 166