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 | |