diff options
author | Havoc Pennington <hp@redhat.com> | 2005-01-30 05:18:44 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2005-01-30 05:18:44 +0000 |
commit | 41f52c96d651003b3d0a266a582d401228a8368e (patch) | |
tree | 3b217cef0c0b9db03aa580cb541b7d686732055a /glib/dbus-gproxy.c | |
parent | 2922b0e88ba00b0067c23633075629108ad8a496 (diff) |
2005-01-30 Havoc Pennington <hp@redhat.com>
dbus-viewer introspected and displayed the bus driver
* dbus/dbus-object-tree.c
(object_tree_test_iteration): add tests for a handler registered on "/"
* dbus/dbus-object-tree.c
(_dbus_decompose_path): fix to handle path "/" properly
(run_decompose_tests): add tests for path decomposition
* glib/dbus-gutils.c (_dbus_gutils_split_path): fix to handle "/"
properly
* glib/dbus-gobject.c (handle_introspect): fix quotes
* test/glib/run-test.sh: support launching the bus, then running
dbus-viewer
* test/glib/test-service-glib.c (main): put in a trivial gobject
subclass and register it on the connection
* bus/driver.c (bus_driver_handle_introspect): implement
introspection of the bus driver service
* dbus/dbus-protocol.h: add #defines for the XML namespace,
identifiers, doctype decl
* bus/driver.c (bus_driver_handle_get_service_owner): handle
attempts to get owner of DBUS_SERVICE_ORG_FREEDESKTOP_DBUS by
returning the service unchanged.
(bus_driver_handle_message): remove old check for reply_serial in
method calls, now the message type deals with that
(bus_driver_handle_message): handle NULL interface
* glib/dbus-gproxy.c (dbus_g_proxy_get_bus_name): new function
* glib/dbus-gloader-expat.c (description_load_from_string): allow
-1 for len
* tools/dbus-viewer.c: add support for introspecting a service on
a bus
* glib/dbus-gproxy.c (dbus_g_pending_call_ref): add
(dbus_g_pending_call_unref): add
Diffstat (limited to 'glib/dbus-gproxy.c')
-rw-r--r-- | glib/dbus-gproxy.c | 62 |
1 files changed, 55 insertions, 7 deletions
diff --git a/glib/dbus-gproxy.c b/glib/dbus-gproxy.c index 624a95ca..39f8ba86 100644 --- a/glib/dbus-gproxy.c +++ b/glib/dbus-gproxy.c @@ -1032,12 +1032,31 @@ dbus_g_proxy_new_for_peer (DBusGConnection *connection, g_return_val_if_fail (interface_name != NULL, NULL); proxy = dbus_g_proxy_new (connection, NULL, - path_name, interface_name); + path_name, interface_name); return proxy; } /** + * Gets the bus name a proxy is bound to (may be #NULL in some cases). + * If you created the proxy with dbus_g_proxy_new_for_name(), then + * the name you passed to that will be returned. + * If you created it with dbus_g_proxy_new_for_name_owner(), then the + * unique connection name will be returned. If you created it + * with dbus_g_proxy_new_for_peer() then #NULL will be returned. + * + * @param proxy the proxy + * @returns the bus name the proxy sends messages to + */ +const char* +dbus_g_proxy_get_bus_name (DBusGProxy *proxy) +{ + g_return_val_if_fail (DBUS_IS_G_PROXY (proxy), NULL); + + return proxy->name; +} + +/** * Invokes a method on a remote interface. This function does not * block; instead it returns an opaque #DBusPendingCall object that * tracks the pending call. The method call will not be sent over the @@ -1113,23 +1132,28 @@ dbus_g_proxy_begin_call (DBusGProxy *proxy, * * Otherwise, the "out" parameters and return value of the * method are stored in the provided varargs list. - * The list should be terminated with DBUS_TYPE_INVALID. + * The list should be terminated with #DBUS_TYPE_INVALID. * * This function doesn't affect the reference count of the * #DBusPendingCall, the caller of dbus_g_proxy_begin_call() still owns * a reference. * + * @todo this should be changed to make a g_malloc() copy of the + * data returned probably; right now the data vanishes + * when you free the PendingCall which is sort of strange. + * * @param proxy a proxy for a remote interface * @param pending the pending call from dbus_g_proxy_begin_call() * @param error return location for an error * @param first_arg_type type of first "out" argument - * @returns #FALSE if an error is set */ + * @returns #FALSE if an error is set + */ gboolean dbus_g_proxy_end_call (DBusGProxy *proxy, - DBusGPendingCall *pending, - GError **error, - int first_arg_type, - ...) + DBusGPendingCall *pending, + GError **error, + int first_arg_type, + ...) { DBusMessage *message; va_list args; @@ -1223,6 +1247,30 @@ dbus_g_proxy_call_no_reply (DBusGProxy *proxy, } /** + * Increments refcount on a pending call. + * + * @param call the call + * @returns the same call + */ +DBusGPendingCall* +dbus_g_pending_call_ref (DBusGPendingCall *call) +{ + dbus_pending_call_ref (DBUS_PENDING_CALL_FROM_G_PENDING_CALL (call)); + return call; +} + +/** + * Decrements refcount on a pending call. + * + * @param call the call + */ +void +dbus_g_pending_call_unref (DBusGPendingCall *call) +{ + dbus_pending_call_unref (DBUS_PENDING_CALL_FROM_G_PENDING_CALL (call)); +} + +/** * Sends a message to the interface we're proxying for. Does not * block or wait for a reply. The message is only actually written out * when you return to the main loop or block in |