| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | /* GDBus - GLib D-Bus Library
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-05-09 13:14:55 -04:00
										 |  |  |  * Copyright (C) 2008-2010 Red Hat, Inc. | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-05-18 09:12:45 +01:00
										 |  |  |  * SPDX-License-Identifier: LGPL-2.1-or-later | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |  * 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; either | 
					
						
							| 
									
										
										
										
											2017-05-27 18:21:30 +02:00
										 |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							| 
									
										
										
										
											2014-01-23 12:58:29 +01:00
										 |  |  |  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Author: David Zeuthen <davidz@redhat.com> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-27 23:43:14 -05:00
										 |  |  | #ifndef __G_DBUS_PRIVATE_H__
 | 
					
						
							|  |  |  | #define __G_DBUS_PRIVATE_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | #include <gio/giotypes.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | G_BEGIN_DECLS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 19:18:15 +00:00
										 |  |  | /* Bus name, interface and object path of the message bus itself */ | 
					
						
							|  |  |  | #define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
 | 
					
						
							|  |  |  | #define DBUS_INTERFACE_DBUS DBUS_SERVICE_DBUS
 | 
					
						
							|  |  |  | #define DBUS_PATH_DBUS "/org/freedesktop/DBus"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 12:57:03 +01:00
										 |  |  | /* Reserved by the specification for locally-generated messages */ | 
					
						
							|  |  |  | #define DBUS_INTERFACE_LOCAL "org.freedesktop.DBus.Local"
 | 
					
						
							|  |  |  | #define DBUS_PATH_LOCAL "/org/freedesktop/DBus/Local"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 13:00:34 +01:00
										 |  |  | /* Other well-known D-Bus interfaces from the specification */ | 
					
						
							|  |  |  | #define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable"
 | 
					
						
							|  |  |  | #define DBUS_INTERFACE_OBJECT_MANAGER "org.freedesktop.DBus.ObjectManager"
 | 
					
						
							|  |  |  | #define DBUS_INTERFACE_PEER "org.freedesktop.DBus.Peer"
 | 
					
						
							|  |  |  | #define DBUS_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 13:10:15 +01:00
										 |  |  | /* Frequently-used D-Bus error names */ | 
					
						
							|  |  |  | #define DBUS_ERROR_FAILED "org.freedesktop.DBus.Error.Failed"
 | 
					
						
							|  |  |  | #define DBUS_ERROR_INVALID_ARGS "org.freedesktop.DBus.Error.InvalidArgs"
 | 
					
						
							|  |  |  | #define DBUS_ERROR_NAME_HAS_NO_OWNER "org.freedesktop.DBus.Error.NameHasNoOwner"
 | 
					
						
							|  |  |  | #define DBUS_ERROR_UNKNOWN_METHOD "org.freedesktop.DBus.Error.UnknownMethod"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 12:55:04 +01:00
										 |  |  | /* Owner flags */ | 
					
						
							|  |  |  | #define DBUS_NAME_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another service to become the primary owner if requested */
 | 
					
						
							|  |  |  | #define DBUS_NAME_FLAG_REPLACE_EXISTING  0x2 /**< Request to replace the current primary owner */
 | 
					
						
							|  |  |  | #define DBUS_NAME_FLAG_DO_NOT_QUEUE      0x4 /**< If we can not become the primary owner do not place us in the queue */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Replies to request for a name */ | 
					
						
							|  |  |  | #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER  1 /**< Service has become the primary owner of the requested name */
 | 
					
						
							|  |  |  | #define DBUS_REQUEST_NAME_REPLY_IN_QUEUE       2 /**< Service could not become the primary owner and has been placed in the queue */
 | 
					
						
							|  |  |  | #define DBUS_REQUEST_NAME_REPLY_EXISTS         3 /**< Service is already in the queue */
 | 
					
						
							|  |  |  | #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER  4 /**< Service is already the primary owner */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Replies to releasing a name */ | 
					
						
							|  |  |  | #define DBUS_RELEASE_NAME_REPLY_RELEASED        1 /**< Service was released from the given name */
 | 
					
						
							|  |  |  | #define DBUS_RELEASE_NAME_REPLY_NON_EXISTENT    2 /**< The given name does not exist on the bus */
 | 
					
						
							|  |  |  | #define DBUS_RELEASE_NAME_REPLY_NOT_OWNER       3 /**< Service is not an owner of the given name */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Replies to service starts */ | 
					
						
							|  |  |  | #define DBUS_START_REPLY_SUCCESS         1 /**< Service was auto started */
 | 
					
						
							|  |  |  | #define DBUS_START_REPLY_ALREADY_RUNNING 2 /**< Service was already running */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | /* ---------------------------------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct GDBusWorker GDBusWorker; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef void (*GDBusWorkerMessageReceivedCallback) (GDBusWorker   *worker, | 
					
						
							|  |  |  |                                                     GDBusMessage  *message, | 
					
						
							|  |  |  |                                                     gpointer       user_data); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-09 13:21:35 -04:00
										 |  |  | typedef GDBusMessage *(*GDBusWorkerMessageAboutToBeSentCallback) (GDBusWorker   *worker, | 
					
						
							|  |  |  |                                                                   GDBusMessage  *message, | 
					
						
							|  |  |  |                                                                   gpointer       user_data); | 
					
						
							| 
									
										
										
										
											2010-06-21 16:08:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | typedef void (*GDBusWorkerDisconnectedCallback)    (GDBusWorker   *worker, | 
					
						
							|  |  |  |                                                     gboolean       remote_peer_vanished, | 
					
						
							|  |  |  |                                                     GError        *error, | 
					
						
							|  |  |  |                                                     gpointer       user_data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* This function may be called from any thread - callbacks will be in the shared private message thread
 | 
					
						
							|  |  |  |  * and must not block. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | GDBusWorker *_g_dbus_worker_new          (GIOStream                          *stream, | 
					
						
							|  |  |  |                                           GDBusCapabilityFlags                capabilities, | 
					
						
							| 
									
										
										
										
											2010-06-30 11:43:42 -04:00
										 |  |  |                                           gboolean                            initially_frozen, | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |                                           GDBusWorkerMessageReceivedCallback  message_received_callback, | 
					
						
							| 
									
										
										
										
											2010-06-21 16:08:53 -04:00
										 |  |  |                                           GDBusWorkerMessageAboutToBeSentCallback message_about_to_be_sent_callback, | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  |                                           GDBusWorkerDisconnectedCallback     disconnected_callback, | 
					
						
							|  |  |  |                                           gpointer                            user_data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* can be called from any thread - steals blob */ | 
					
						
							|  |  |  | void         _g_dbus_worker_send_message (GDBusWorker    *worker, | 
					
						
							|  |  |  |                                           GDBusMessage   *message, | 
					
						
							|  |  |  |                                           gchar          *blob, | 
					
						
							|  |  |  |                                           gsize           blob_len); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* can be called from any thread */ | 
					
						
							|  |  |  | void         _g_dbus_worker_stop         (GDBusWorker    *worker); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-30 11:43:42 -04:00
										 |  |  | /* can be called from any thread */ | 
					
						
							|  |  |  | void         _g_dbus_worker_unfreeze     (GDBusWorker    *worker); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-07 15:00:23 -04:00
										 |  |  | /* can be called from any thread (except the worker thread) */ | 
					
						
							|  |  |  | gboolean     _g_dbus_worker_flush_sync   (GDBusWorker    *worker, | 
					
						
							|  |  |  |                                           GCancellable   *cancellable, | 
					
						
							|  |  |  |                                           GError        **error); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-13 17:31:27 +01:00
										 |  |  | /* can be called from any thread */ | 
					
						
							|  |  |  | void         _g_dbus_worker_close        (GDBusWorker         *worker, | 
					
						
							| 
									
										
										
										
											2012-08-02 15:46:32 -04:00
										 |  |  |                                           GTask               *task); | 
					
						
							| 
									
										
										
										
											2011-09-13 17:31:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | /* ---------------------------------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void _g_dbus_initialize (void); | 
					
						
							|  |  |  | gboolean _g_dbus_debug_authentication (void); | 
					
						
							| 
									
										
										
										
											2010-08-16 13:43:35 -04:00
										 |  |  | gboolean _g_dbus_debug_transport (void); | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | gboolean _g_dbus_debug_message (void); | 
					
						
							| 
									
										
										
										
											2010-07-01 14:37:16 -04:00
										 |  |  | gboolean _g_dbus_debug_payload (void); | 
					
						
							|  |  |  | gboolean _g_dbus_debug_call    (void); | 
					
						
							|  |  |  | gboolean _g_dbus_debug_signal  (void); | 
					
						
							|  |  |  | gboolean _g_dbus_debug_incoming (void); | 
					
						
							| 
									
										
										
										
											2010-08-04 16:59:26 -04:00
										 |  |  | gboolean _g_dbus_debug_return (void); | 
					
						
							| 
									
										
										
										
											2010-07-01 14:37:16 -04:00
										 |  |  | gboolean _g_dbus_debug_emission (void); | 
					
						
							| 
									
										
											  
											
												GDBus: Handle autolaunching on UNIX/Freedesktop OSes
Also add a 'address' G_DBUS_DEBUG option that will print out useful
debug information such as
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14542: Autolaunch enabled (using X11).
  14542: --exit-with-session automatically enabled
  14542: Connected to X11 display ':0.0'
  14542: === Parent dbus-launch continues
  14542: Waiting for babysitter's intermediate parent
  14542: Reading address from bus
  14542: Reading PID from daemon
  14542: Saving x11 address
  14542: Created window 88080385
  14542: session file: /root/.dbus/session-bus/05e508961149264c9b750a4c494aa6f7-0
  14542: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
and
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14549: Autolaunch enabled (using X11).
  14549: --exit-with-session automatically enabled
  14549: Connected to X11 display ':0.0'
  14549: dbus-daemon is already running. Returning existing parameters.
  14549: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
Note that things work exactly like libdbus, e.g. from the
dbus-launch(1) man page:
  Whenever an autolaunch occurs, the application that had to start a
  new bus will be in its own little world; it can effectively end up
  starting a whole new session if it tries to use a lot of bus
  services. This can be suboptimal or even totally broken, depending
  on the app and what it tries to do.
  [...]
  You can always avoid autolaunch by manually setting
  DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default
  address if none is set is "autolaunch:", so if any other address is
  set there will be no autolaunch. You can however include autolaunch
  in an explicit session bus address as a fallback, for example
  DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - in that case if
  the first address doesn't work, processes will autolaunch. (The bus
  address variable contains a comma-separated list of addresses to
  try.)
Signed-off-by: David Zeuthen <davidz@redhat.com>
											
										 
											2010-07-06 16:57:28 -04:00
										 |  |  | gboolean _g_dbus_debug_address (void); | 
					
						
							| 
									
										
										
										
											2019-01-25 14:30:32 +00:00
										 |  |  | gboolean _g_dbus_debug_proxy (void); | 
					
						
							| 
									
										
											  
											
												GDBus: Handle autolaunching on UNIX/Freedesktop OSes
Also add a 'address' G_DBUS_DEBUG option that will print out useful
debug information such as
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14542: Autolaunch enabled (using X11).
  14542: --exit-with-session automatically enabled
  14542: Connected to X11 display ':0.0'
  14542: === Parent dbus-launch continues
  14542: Waiting for babysitter's intermediate parent
  14542: Reading address from bus
  14542: Reading PID from daemon
  14542: Saving x11 address
  14542: Created window 88080385
  14542: session file: /root/.dbus/session-bus/05e508961149264c9b750a4c494aa6f7-0
  14542: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
and
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14549: Autolaunch enabled (using X11).
  14549: --exit-with-session automatically enabled
  14549: Connected to X11 display ':0.0'
  14549: dbus-daemon is already running. Returning existing parameters.
  14549: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
Note that things work exactly like libdbus, e.g. from the
dbus-launch(1) man page:
  Whenever an autolaunch occurs, the application that had to start a
  new bus will be in its own little world; it can effectively end up
  starting a whole new session if it tries to use a lot of bus
  services. This can be suboptimal or even totally broken, depending
  on the app and what it tries to do.
  [...]
  You can always avoid autolaunch by manually setting
  DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default
  address if none is set is "autolaunch:", so if any other address is
  set there will be no autolaunch. You can however include autolaunch
  in an explicit session bus address as a fallback, for example
  DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - in that case if
  the first address doesn't work, processes will autolaunch. (The bus
  address variable contains a comma-separated list of addresses to
  try.)
Signed-off-by: David Zeuthen <davidz@redhat.com>
											
										 
											2010-07-06 16:57:28 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 14:37:16 -04:00
										 |  |  | void     _g_dbus_debug_print_lock (void); | 
					
						
							|  |  |  | void     _g_dbus_debug_print_unlock (void); | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | gboolean _g_dbus_address_parse_entry (const gchar  *address_entry, | 
					
						
							|  |  |  |                                       gchar       **out_transport_name, | 
					
						
							|  |  |  |                                       GHashTable  **out_key_value_pairs, | 
					
						
							|  |  |  |                                       GError      **error); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-24 16:46:24 -04:00
										 |  |  | GVariantType * _g_dbus_compute_complete_signature (GDBusArgInfo **args); | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-17 17:58:25 -04:00
										 |  |  | gchar *_g_dbus_hexdump (const gchar *data, gsize len, guint indent); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | /* ---------------------------------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-20 10:51:00 -04:00
										 |  |  | #ifdef G_OS_WIN32
 | 
					
						
							|  |  |  | gchar *_g_dbus_win32_get_user_sid (void); | 
					
						
							| 
									
										
										
										
											2019-02-12 02:21:51 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 23:12:47 +03:00
										 |  |  | #define _GDBUS_ARG_WIN32_RUN_SESSION_BUS "_win32_run_session_bus"
 | 
					
						
							| 
									
										
										
										
											2019-02-12 02:21:51 +03:00
										 |  |  | /* The g_win32_run_session_bus is exported from libgio dll on win32,
 | 
					
						
							|  |  |  |  * but still is NOT part of API/ABI since it is declared in private header | 
					
						
							|  |  |  |  * and used only by tool built from same sources. | 
					
						
							|  |  |  |  * Initially this function was introduces for usage with rundll, | 
					
						
							|  |  |  |  * so the signature is kept rundll-compatible, though parameters aren't used. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | _GIO_EXTERN void __stdcall | 
					
						
							| 
									
										
										
										
											2019-02-12 02:21:51 +03:00
										 |  |  | g_win32_run_session_bus (void* hwnd, void* hinst, const char* cmdline, int cmdshow); | 
					
						
							|  |  |  | gchar *_g_dbus_win32_get_session_address_dbus_launch (GError **error); | 
					
						
							| 
									
										
										
										
											2010-05-20 10:51:00 -04:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												GDBus: Handle autolaunching on UNIX/Freedesktop OSes
Also add a 'address' G_DBUS_DEBUG option that will print out useful
debug information such as
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14542: Autolaunch enabled (using X11).
  14542: --exit-with-session automatically enabled
  14542: Connected to X11 display ':0.0'
  14542: === Parent dbus-launch continues
  14542: Waiting for babysitter's intermediate parent
  14542: Reading address from bus
  14542: Reading PID from daemon
  14542: Saving x11 address
  14542: Created window 88080385
  14542: session file: /root/.dbus/session-bus/05e508961149264c9b750a4c494aa6f7-0
  14542: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
and
  GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type `session'
  GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set
  GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set
  GDBus-debug:Address: Running `dbus-launch --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax --close-stderr' to get bus address (possibly autolaunching)
  GDBus-debug:Address: dbus-launch output:
    0000: 75 6e 69 78  3a 61 62 73  74 72 61 63  74 3d 2f 74    unix:abstract=/t
    0010: 6d 70 2f 64  62 75 73 2d  77 42 41 6f  4b 59 49 52    mp/dbus-wBAoKYIR
    0020: 7a 75 2c 67  75 69 64 3d  30 34 30 64  31 33 66 33    zu,guid=040d13f3
    0030: 30 61 30 62  35 32 63 32  30 66 36 32  63 34 31 63    0a0b52c20f62c41c
    0040: 30 30 30 30  35 30 38 64  00 d2 38 00  00 01 00 40    0000508d..8....@
    0050: 05 00 00 00  00                                       .....
  GDBus-debug:Address: dbus-launch stderr output:
  14549: Autolaunch enabled (using X11).
  14549: --exit-with-session automatically enabled
  14549: Connected to X11 display ':0.0'
  14549: dbus-daemon is already running. Returning existing parameters.
  14549: dbus-launch exiting
  GDBus-debug:Address: Returning address `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' for bus type `session'
Note that things work exactly like libdbus, e.g. from the
dbus-launch(1) man page:
  Whenever an autolaunch occurs, the application that had to start a
  new bus will be in its own little world; it can effectively end up
  starting a whole new session if it tries to use a lot of bus
  services. This can be suboptimal or even totally broken, depending
  on the app and what it tries to do.
  [...]
  You can always avoid autolaunch by manually setting
  DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default
  address if none is set is "autolaunch:", so if any other address is
  set there will be no autolaunch. You can however include autolaunch
  in an explicit session bus address as a fallback, for example
  DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - in that case if
  the first address doesn't work, processes will autolaunch. (The bus
  address variable contains a comma-separated list of addresses to
  try.)
Signed-off-by: David Zeuthen <davidz@redhat.com>
											
										 
											2010-07-06 16:57:28 -04:00
										 |  |  | gchar *_g_dbus_get_machine_id (GError **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gchar *_g_dbus_enum_to_string (GType enum_type, gint value); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-22 22:56:49 -04:00
										 |  |  | /* ---------------------------------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-17 09:28:05 -04:00
										 |  |  | GDBusMethodInvocation *_g_dbus_method_invocation_new (const gchar             *sender, | 
					
						
							|  |  |  |                                                       const gchar             *object_path, | 
					
						
							|  |  |  |                                                       const gchar             *interface_name, | 
					
						
							|  |  |  |                                                       const gchar             *method_name, | 
					
						
							|  |  |  |                                                       const GDBusMethodInfo   *method_info, | 
					
						
							|  |  |  |                                                       const GDBusPropertyInfo *property_info, | 
					
						
							|  |  |  |                                                       GDBusConnection         *connection, | 
					
						
							|  |  |  |                                                       GDBusMessage            *message, | 
					
						
							|  |  |  |                                                       GVariant                *parameters, | 
					
						
							|  |  |  |                                                       gpointer                 user_data); | 
					
						
							| 
									
										
										
										
											2010-08-22 22:56:49 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-08 15:14:47 -04:00
										 |  |  | /* ---------------------------------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gboolean _g_signal_accumulator_false_handled (GSignalInvocationHint *ihint, | 
					
						
							|  |  |  |                                               GValue                *return_accu, | 
					
						
							|  |  |  |                                               const GValue          *handler_return, | 
					
						
							|  |  |  |                                               gpointer               dummy); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-13 16:33:51 -04:00
										 |  |  | gboolean _g_dbus_object_skeleton_has_authorize_method_handlers (GDBusObjectSkeleton *object); | 
					
						
							| 
									
										
										
										
											2011-04-08 15:14:47 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | void _g_dbus_object_proxy_add_interface (GDBusObjectProxy *proxy, | 
					
						
							|  |  |  |                                          GDBusProxy       *interface_proxy); | 
					
						
							|  |  |  | void _g_dbus_object_proxy_remove_interface (GDBusObjectProxy *proxy, | 
					
						
							|  |  |  |                                             const gchar      *interface_name); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-09 09:05:22 +00:00
										 |  |  | gchar *_g_dbus_hexencode (const gchar *str, | 
					
						
							|  |  |  |                           gsize        str_len); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-06 14:51:09 +02:00
										 |  |  | /* Implemented in gdbusconnection.c */ | 
					
						
							|  |  |  | GDBusConnection *_g_bus_get_singleton_if_exists (GBusType bus_type); | 
					
						
							| 
									
										
										
										
											2018-04-04 08:35:39 +01:00
										 |  |  | void             _g_bus_forget_singleton        (GBusType bus_type); | 
					
						
							| 
									
										
										
										
											2012-04-06 14:51:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-08 15:14:47 -04:00
										 |  |  | G_END_DECLS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-06 14:13:59 -04:00
										 |  |  | #endif /* __G_DBUS_PRIVATE_H__ */
 |