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
30G_BEGIN_DECLS
31
32/* ---------------------------------------------------------------------------------------------------- */
33
34typedef struct GDBusWorker GDBusWorker;
35
36typedef void (*GDBusWorkerMessageReceivedCallback) (GDBusWorker *worker,
37 GDBusMessage *message,
38 gpointer user_data);
39
40typedef GDBusMessage *(*GDBusWorkerMessageAboutToBeSentCallback) (GDBusWorker *worker,
41 GDBusMessage *message,
42 gpointer user_data);
43
44typedef 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 */
52GDBusWorker *_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 */
61void _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 */
67void _g_dbus_worker_stop (GDBusWorker *worker);
68
69/* can be called from any thread */
70void _g_dbus_worker_unfreeze (GDBusWorker *worker);
71
72/* can be called from any thread (except the worker thread) */
73gboolean _g_dbus_worker_flush_sync (GDBusWorker *worker,
74 GCancellable *cancellable,
75 GError **error);
76
77/* can be called from any thread */
78void _g_dbus_worker_close (GDBusWorker *worker,
79 GTask *task);
80
81/* ---------------------------------------------------------------------------------------------------- */
82
83void _g_dbus_initialize (void);
84gboolean _g_dbus_debug_authentication (void);
85gboolean _g_dbus_debug_transport (void);
86gboolean _g_dbus_debug_message (void);
87gboolean _g_dbus_debug_payload (void);
88gboolean _g_dbus_debug_call (void);
89gboolean _g_dbus_debug_signal (void);
90gboolean _g_dbus_debug_incoming (void);
91gboolean _g_dbus_debug_return (void);
92gboolean _g_dbus_debug_emission (void);
93gboolean _g_dbus_debug_address (void);
94gboolean _g_dbus_debug_proxy (void);
95
96void _g_dbus_debug_print_lock (void);
97void _g_dbus_debug_print_unlock (void);
98
99gboolean _g_dbus_address_parse_entry (const gchar *address_entry,
100 gchar **out_transport_name,
101 GHashTable **out_key_value_pairs,
102 GError **error);
103
104GVariantType * _g_dbus_compute_complete_signature (GDBusArgInfo **args);
105
106gchar *_g_dbus_hexdump (const gchar *data, gsize len, guint indent);
107
108/* ---------------------------------------------------------------------------------------------------- */
109
110#ifdef G_OS_WIN32
111gchar *_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
121g_win32_run_session_bus (void* hwnd, void* hinst, const char* cmdline, int cmdshow);
122gchar *_g_dbus_win32_get_session_address_dbus_launch (GError **error);
123#endif
124
125gchar *_g_dbus_get_machine_id (GError **error);
126
127gchar *_g_dbus_enum_to_string (GType enum_type, gint value);
128
129/* ---------------------------------------------------------------------------------------------------- */
130
131GDBusMethodInvocation *_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
144gboolean _g_signal_accumulator_false_handled (GSignalInvocationHint *ihint,
145 GValue *return_accu,
146 const GValue *handler_return,
147 gpointer dummy);
148
149gboolean _g_dbus_object_skeleton_has_authorize_method_handlers (GDBusObjectSkeleton *object);
150
151void _g_dbus_object_proxy_add_interface (GDBusObjectProxy *proxy,
152 GDBusProxy *interface_proxy);
153void _g_dbus_object_proxy_remove_interface (GDBusObjectProxy *proxy,
154 const gchar *interface_name);
155
156gchar *_g_dbus_hexencode (const gchar *str,
157 gsize str_len);
158
159/* Implemented in gdbusconnection.c */
160GDBusConnection *_g_bus_get_singleton_if_exists (GBusType bus_type);
161void _g_bus_forget_singleton (GBusType bus_type);
162
163G_END_DECLS
164
165#endif /* __G_DBUS_PRIVATE_H__ */
166

source code of gtk/subprojects/glib/gio/gdbusprivate.h