2004-05-31 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / glib / dbus-glib.h
index 6abbc4f..483a6e8 100644 (file)
@@ -1,9 +1,10 @@
 /* -*- mode: C; c-file-style: "gnu" -*- */
 /* dbus-glib.h GLib integration
  *
- * Copyright (C) 2002  CodeFactory AB
+ * Copyright (C) 2002, 2003  CodeFactory AB
+ * Copyright (C) 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
 #define DBUS_GLIB_H
 
 #include <dbus/dbus.h>
-#include <glib.h>
+#include <glib-object.h>
 
-typedef void (*DBusMessageFunction) (DBusConnection *connection,
-                                     DBusMessage    *message,
-                                     gpointer        data);
+G_BEGIN_DECLS
 
-void dbus_gthread_init  (void);
+#define DBUS_INSIDE_DBUS_GLIB_H 1
 
-GSource *dbus_connection_gsource_new (DBusConnection *connection);
+GQuark dbus_g_error_quark (void);
+#define DBUS_GERROR dbus_g_error_quark ()
 
+#define DBUS_TYPE_CONNECTION (dbus_connection_get_g_type ())
+#define DBUS_TYPE_MESSAGE    (dbus_message_get_g_type ())
+GType dbus_connection_get_g_type (void) G_GNUC_CONST;
+GType dbus_message_get_g_type    (void) G_GNUC_CONST;
+
+typedef enum
+{
+  /* FIXME map all the DBUS_ERROR to DBUS_GERROR, should
+   * probably be automated in some way, perhaps
+   * via lame perl script
+   */
+  DBUS_GERROR_FAILED
+} DBusGError;
+
+void dbus_set_g_error (GError   **gerror,
+                       DBusError *derror);
+
+void            dbus_g_thread_init                (void);
+void            dbus_connection_setup_with_g_main (DBusConnection  *connection,
+                                                   GMainContext    *context);
+void            dbus_server_setup_with_g_main     (DBusServer      *server,
+                                                   GMainContext    *context);
+DBusConnection* dbus_bus_get_with_g_main          (DBusBusType      type,
+                                                   GError         **error);
+
+typedef struct DBusGObjectInfo DBusGObjectInfo;
+typedef struct DBusGMethodInfo DBusGMethodInfo;
+
+/**
+ * Object typically generated by dbus-glib-tool that
+ * stores a mapping from introspection data to a
+ * function pointer for a C method to be invoked.
+ */
+struct DBusGMethodInfo
+{
+  GCallback                 function;    /**< C method to invoke */
+  DBusHandleMessageFunction marshaller;  /**< Marshaller to go DBusMessage to C method */
+  int                       data_offset; /**< Offset into the introspection data */
+};
+
+/**
+ * Introspection data for a GObject, normally autogenerated by
+ * a tool such as dbus-glib-tool.
+ */
+struct DBusGObjectInfo
+{
+  int   format_version;         /**< Allows us to change the rest of this struct
+                                 *   by adding DBusGObjectInfo2, DBusGObjectInfo3, etc.
+                                 */
+  const DBusGMethodInfo *infos; /**< Array of method pointers */
+  const unsigned char *data;    /**< Introspection data */
+};
+
+void dbus_g_object_class_install_info  (GObjectClass          *object_class,
+                                        const DBusGObjectInfo *info);
+void dbus_connection_register_g_object (DBusConnection        *connection,
+                                        const char            *at_path,
+                                        GObject               *object);
+
+
+typedef struct DBusGProxy       DBusGProxy;
+typedef struct DBusGProxyClass  DBusGProxyClass;
+
+typedef void (* DBusGProxySignalHandler) (DBusGProxy  *proxy,
+                                          DBusMessage *signal,
+                                          void        *user_data);
+
+#define DBUS_TYPE_GPROXY              (dbus_gproxy_get_type ())
+#define DBUS_GPROXY(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), DBUS_TYPE_GPROXY, DBusGProxy))
+#define DBUS_GPROXY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), DBUS_TYPE_GPROXY, DBusGProxyClass))
+#define DBUS_IS_GPROXY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), DBUS_TYPE_GPROXY))
+#define DBUS_IS_GPROXY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUS_TYPE_GPROXY))
+#define DBUS_GPROXY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUS_TYPE_GPROXY, DBusGProxyClass))
+
+
+GType            dbus_gproxy_get_type              (void) G_GNUC_CONST;
+DBusGProxy*      dbus_gproxy_new_for_service       (DBusConnection           *connection,
+                                                    const char               *service_name,
+                                                    const char               *path_name,
+                                                    const char               *interface_name);
+DBusGProxy*      dbus_gproxy_new_for_service_owner (DBusConnection           *connection,
+                                                    const char               *service_name,
+                                                    const char               *path_name,
+                                                    const char               *interface_name,
+                                                    GError                  **error);
+DBusGProxy*      dbus_gproxy_new_for_peer          (DBusConnection           *connection,
+                                                    const char               *path_name,
+                                                    const char               *interface_name);
+void             dbus_gproxy_connect_signal        (DBusGProxy               *proxy,
+                                                    const char               *signal_name,
+                                                    DBusGProxySignalHandler   handler,
+                                                    void                     *data,
+                                                    GClosureNotify            free_data_func);
+void             dbus_gproxy_disconnect_signal     (DBusGProxy               *proxy,
+                                                    const char               *signal_name,
+                                                    DBusGProxySignalHandler   handler,
+                                                    void                     *data);
+DBusPendingCall* dbus_gproxy_begin_call            (DBusGProxy               *proxy,
+                                                    const char               *method,
+                                                    int                       first_arg_type,
+                                                    ...);
+gboolean         dbus_gproxy_end_call              (DBusGProxy               *proxy,
+                                                    DBusPendingCall          *pending,
+                                                    GError                  **error,
+                                                    int                       first_arg_type,
+                                                    ...);
+void             dbus_gproxy_call_no_reply         (DBusGProxy               *proxy,
+                                                    const char               *method,
+                                                    int                       first_arg_type,
+                                                    ...);
+void             dbus_gproxy_send                  (DBusGProxy               *proxy,
+                                                    DBusMessage              *message,
+                                                    dbus_uint32_t            *client_serial);
+
+
+#undef DBUS_INSIDE_DBUS_GLIB_H
+
+G_END_DECLS
 
 #endif /* DBUS_GLIB_H */
+
+
+