2004-07-24 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / dbus / dbus-connection.h
index 12ad068..c8c66a3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2002, 2003  Red Hat Inc.
  *
- * Licensed under the Academic Free License version 1.2
+ * Licensed under the Academic Free License version 2.0
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #include <dbus/dbus-errors.h>
 #include <dbus/dbus-memory.h>
 #include <dbus/dbus-message.h>
+#include <dbus/dbus-shared.h>
 
 DBUS_BEGIN_DECLS;
 
 typedef struct DBusWatch DBusWatch;
 typedef struct DBusTimeout DBusTimeout;
-typedef struct DBusMessageHandler DBusMessageHandler;
 typedef struct DBusPreallocatedSend DBusPreallocatedSend;
 typedef struct DBusPendingCall DBusPendingCall;
 typedef struct DBusConnection DBusConnection;
@@ -59,13 +59,6 @@ typedef enum
   DBUS_DISPATCH_NEED_MEMORY    /**< More memory is needed to continue. */
 } DBusDispatchStatus;
 
-typedef enum
-{
-  DBUS_HANDLER_RESULT_HANDLED,         /**< Message has had its effect */ 
-  DBUS_HANDLER_RESULT_NOT_YET_HANDLED, /**< Message has not had any effect */
-  DBUS_HANDLER_RESULT_NEED_MEMORY      /**< Need more memory to return another result */
-} DBusHandlerResult;
-
 typedef dbus_bool_t (* DBusAddWatchFunction)       (DBusWatch      *watch,
                                                     void           *data);
 typedef void        (* DBusWatchToggledFunction)   (DBusWatch      *watch,
@@ -89,13 +82,20 @@ typedef dbus_bool_t (* DBusAllowUnixUserFunction)  (DBusConnection *connection,
 typedef void (* DBusPendingCallNotifyFunction) (DBusPendingCall *pending,
                                                 void            *user_data);
 
+
+typedef DBusHandlerResult (* DBusHandleMessageFunction) (DBusConnection     *connection,
+                                                         DBusMessage        *message,
+                                                         void               *user_data);
+
 DBusConnection*    dbus_connection_open                         (const char                 *address,
                                                                  DBusError                  *error);
-void               dbus_connection_ref                          (DBusConnection             *connection);
+DBusConnection*    dbus_connection_ref                          (DBusConnection             *connection);
 void               dbus_connection_unref                        (DBusConnection             *connection);
 void               dbus_connection_disconnect                   (DBusConnection             *connection);
 dbus_bool_t        dbus_connection_get_is_connected             (DBusConnection             *connection);
 dbus_bool_t        dbus_connection_get_is_authenticated         (DBusConnection             *connection);
+void               dbus_connection_set_exit_on_disconnect       (DBusConnection             *connection,
+                                                                 dbus_bool_t                 exit_on_disconnect);
 void               dbus_connection_flush                        (DBusConnection             *connection);
 DBusMessage*       dbus_connection_borrow_message               (DBusConnection             *connection);
 void               dbus_connection_return_message               (DBusConnection             *connection,
@@ -138,6 +138,8 @@ void               dbus_connection_set_dispatch_status_function (DBusConnection
                                                                  DBusFreeFunction            free_data_function);
 dbus_bool_t        dbus_connection_get_unix_user                (DBusConnection             *connection,
                                                                  unsigned long              *uid);
+dbus_bool_t        dbus_connection_get_unix_process_id          (DBusConnection             *connection,
+                                                                 unsigned long              *pid);
 void               dbus_connection_set_unix_user_function       (DBusConnection             *connection,
                                                                  DBusAllowUnixUserFunction   function,
                                                                  void                       *data,
@@ -162,11 +164,16 @@ void        dbus_timeout_set_data     (DBusTimeout      *timeout,
 dbus_bool_t dbus_timeout_handle       (DBusTimeout      *timeout);
 dbus_bool_t dbus_timeout_get_enabled  (DBusTimeout      *timeout);
 
-/* Handlers */
-dbus_bool_t dbus_connection_add_filter         (DBusConnection      *connection,
-                                                DBusMessageHandler  *handler);
-void        dbus_connection_remove_filter      (DBusConnection      *connection,
-                                                DBusMessageHandler  *handler);
+/* Filters */
+
+dbus_bool_t dbus_connection_add_filter    (DBusConnection            *connection,
+                                           DBusHandleMessageFunction  function,
+                                           void                      *user_data,
+                                           DBusFreeFunction           free_data_function);
+void        dbus_connection_remove_filter (DBusConnection            *connection,
+                                           DBusHandleMessageFunction  function,
+                                           void                      *user_data);
+
 
 /* Other */
 dbus_bool_t dbus_connection_allocate_data_slot (dbus_int32_t     *slot_p);
@@ -200,30 +207,43 @@ void                  dbus_connection_send_preallocated      (DBusConnection
 /* Object tree functionality */
 
 typedef void              (* DBusObjectPathUnregisterFunction) (DBusConnection  *connection,
-                                                                const char     **path,
                                                                 void            *user_data);
 typedef DBusHandlerResult (* DBusObjectPathMessageFunction)    (DBusConnection  *connection,
                                                                 DBusMessage     *message,
                                                                 void            *user_data);
 
+/**
+ * Virtual table that must be implemented to handle a portion of the
+ * object path hierarchy.
+ */
 struct DBusObjectPathVTable
 {
-  DBusObjectPathUnregisterFunction   unregister_function;
-  DBusObjectPathMessageFunction      message_function;
+  DBusObjectPathUnregisterFunction   unregister_function; /**< Function to unregister this handler */
+  DBusObjectPathMessageFunction      message_function; /**< Function to handle messages */
   
-  void (* dbus_internal_pad1) (void *);
-  void (* dbus_internal_pad2) (void *);
-  void (* dbus_internal_pad3) (void *);
-  void (* dbus_internal_pad4) (void *);
+  void (* dbus_internal_pad1) (void *); /**< Reserved for future expansion */
+  void (* dbus_internal_pad2) (void *); /**< Reserved for future expansion */
+  void (* dbus_internal_pad3) (void *); /**< Reserved for future expansion */
+  void (* dbus_internal_pad4) (void *); /**< Reserved for future expansion */
 };
 
 dbus_bool_t dbus_connection_register_object_path   (DBusConnection              *connection,
-                                                    const char                 **path,
+                                                    const char                  *path,
                                                     const DBusObjectPathVTable  *vtable,
                                                     void                        *user_data);
-void        dbus_connection_unregister_object_path (DBusConnection              *connection,
-                                                    const char                 **path);
+dbus_bool_t dbus_connection_register_fallback      (DBusConnection              *connection,
+                                                    const char                  *path,
+                                                    const DBusObjectPathVTable  *vtable,
+                                                    void                        *user_data);
+dbus_bool_t dbus_connection_unregister_object_path (DBusConnection              *connection,
+                                                    const char                  *path);
+
+dbus_bool_t dbus_connection_list_registered        (DBusConnection              *connection,
+                                                    const char                  *parent_path,
+                                                    char                      ***child_entries);
 
+dbus_bool_t dbus_connection_get_unix_fd            (DBusConnection              *connection,
+                                                    int                         *fd);
 
 DBUS_END_DECLS;