Home | History | Annotate | Download | only in gdbus
      1 /*
      2  *
      3  *  D-Bus helper library
      4  *
      5  *  Copyright (C) 2004-2011  Marcel Holtmann <marcel (at) holtmann.org>
      6  *
      7  *
      8  *  This program is free software; you can redistribute it and/or modify
      9  *  it under the terms of the GNU General Public License as published by
     10  *  the Free Software Foundation; either version 2 of the License, or
     11  *  (at your option) any later version.
     12  *
     13  *  This program is distributed in the hope that it will be useful,
     14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  *  GNU General Public License for more details.
     17  *
     18  *  You should have received a copy of the GNU General Public License
     19  *  along with this program; if not, write to the Free Software
     20  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     21  *
     22  */
     23 
     24 #ifndef __GDBUS_H
     25 #define __GDBUS_H
     26 
     27 #ifdef __cplusplus
     28 extern "C" {
     29 #endif
     30 
     31 #include <dbus/dbus.h>
     32 #include <glib.h>
     33 
     34 typedef void (* GDBusWatchFunction) (DBusConnection *connection,
     35 							void *user_data);
     36 
     37 typedef gboolean (* GDBusSignalFunction) (DBusConnection *connection,
     38 					DBusMessage *message, void *user_data);
     39 
     40 DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name,
     41 							DBusError *error);
     42 
     43 DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name,
     44 							DBusError *error);
     45 
     46 gboolean g_dbus_request_name(DBusConnection *connection, const char *name,
     47 							DBusError *error);
     48 
     49 gboolean g_dbus_set_disconnect_function(DBusConnection *connection,
     50 				GDBusWatchFunction function,
     51 				void *user_data, DBusFreeFunction destroy);
     52 
     53 typedef void (* GDBusDestroyFunction) (void *user_data);
     54 
     55 typedef DBusMessage * (* GDBusMethodFunction) (DBusConnection *connection,
     56 					DBusMessage *message, void *user_data);
     57 
     58 typedef guint32 GDBusPendingReply;
     59 
     60 typedef void (* GDBusSecurityFunction) (DBusConnection *connection,
     61 						const char *action,
     62 						gboolean interaction,
     63 						GDBusPendingReply pending);
     64 
     65 typedef enum {
     66 	G_DBUS_METHOD_FLAG_DEPRECATED = (1 << 0),
     67 	G_DBUS_METHOD_FLAG_NOREPLY    = (1 << 1),
     68 	G_DBUS_METHOD_FLAG_ASYNC      = (1 << 2),
     69 } GDBusMethodFlags;
     70 
     71 typedef enum {
     72 	G_DBUS_SIGNAL_FLAG_DEPRECATED = (1 << 0),
     73 } GDBusSignalFlags;
     74 
     75 typedef enum {
     76 	G_DBUS_PROPERTY_FLAG_DEPRECATED = (1 << 0),
     77 } GDBusPropertyFlags;
     78 
     79 typedef enum {
     80 	G_DBUS_SECURITY_FLAG_DEPRECATED        = (1 << 0),
     81 	G_DBUS_SECURITY_FLAG_BUILTIN           = (1 << 1),
     82 	G_DBUS_SECURITY_FLAG_ALLOW_INTERACTION = (1 << 2),
     83 } GDBusSecurityFlags;
     84 
     85 typedef struct {
     86 	const char *name;
     87 	const char *signature;
     88 	const char *reply;
     89 	GDBusMethodFunction function;
     90 	GDBusMethodFlags flags;
     91 	unsigned int privilege;
     92 } GDBusMethodTable;
     93 
     94 typedef struct {
     95 	const char *name;
     96 	const char *signature;
     97 	GDBusSignalFlags flags;
     98 } GDBusSignalTable;
     99 
    100 typedef struct {
    101 	const char *name;
    102 	const char *type;
    103 	GDBusPropertyFlags flags;
    104 } GDBusPropertyTable;
    105 
    106 typedef struct {
    107 	unsigned int privilege;
    108 	const char *action;
    109 	GDBusSecurityFlags flags;
    110 	GDBusSecurityFunction function;
    111 } GDBusSecurityTable;
    112 
    113 gboolean g_dbus_register_interface(DBusConnection *connection,
    114 					const char *path, const char *name,
    115 					const GDBusMethodTable *methods,
    116 					const GDBusSignalTable *signals,
    117 					const GDBusPropertyTable *properties,
    118 					void *user_data,
    119 					GDBusDestroyFunction destroy);
    120 gboolean g_dbus_unregister_interface(DBusConnection *connection,
    121 					const char *path, const char *name);
    122 
    123 gboolean g_dbus_register_security(const GDBusSecurityTable *security);
    124 gboolean g_dbus_unregister_security(const GDBusSecurityTable *security);
    125 
    126 void g_dbus_pending_success(DBusConnection *connection,
    127 					GDBusPendingReply pending);
    128 void g_dbus_pending_error(DBusConnection *connection,
    129 				GDBusPendingReply pending,
    130 				const char *name, const char *format, ...)
    131 					__attribute__((format(printf, 4, 5)));
    132 void g_dbus_pending_error_valist(DBusConnection *connection,
    133 				GDBusPendingReply pending, const char *name,
    134 					const char *format, va_list args);
    135 
    136 DBusMessage *g_dbus_create_error(DBusMessage *message, const char *name,
    137 						const char *format, ...)
    138 					__attribute__((format(printf, 3, 4)));
    139 DBusMessage *g_dbus_create_error_valist(DBusMessage *message, const char *name,
    140 					const char *format, va_list args);
    141 DBusMessage *g_dbus_create_reply(DBusMessage *message, int type, ...);
    142 DBusMessage *g_dbus_create_reply_valist(DBusMessage *message,
    143 						int type, va_list args);
    144 
    145 gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message);
    146 gboolean g_dbus_send_reply(DBusConnection *connection,
    147 				DBusMessage *message, int type, ...);
    148 gboolean g_dbus_send_reply_valist(DBusConnection *connection,
    149 				DBusMessage *message, int type, va_list args);
    150 
    151 gboolean g_dbus_emit_signal(DBusConnection *connection,
    152 				const char *path, const char *interface,
    153 				const char *name, int type, ...);
    154 gboolean g_dbus_emit_signal_valist(DBusConnection *connection,
    155 				const char *path, const char *interface,
    156 				const char *name, int type, va_list args);
    157 
    158 guint g_dbus_add_service_watch(DBusConnection *connection, const char *name,
    159 				GDBusWatchFunction connect,
    160 				GDBusWatchFunction disconnect,
    161 				void *user_data, GDBusDestroyFunction destroy);
    162 guint g_dbus_add_disconnect_watch(DBusConnection *connection, const char *name,
    163 				GDBusWatchFunction function,
    164 				void *user_data, GDBusDestroyFunction destroy);
    165 guint g_dbus_add_signal_watch(DBusConnection *connection,
    166 				const char *sender, const char *path,
    167 				const char *interface, const char *member,
    168 				GDBusSignalFunction function, void *user_data,
    169 				GDBusDestroyFunction destroy);
    170 gboolean g_dbus_remove_watch(DBusConnection *connection, guint tag);
    171 void g_dbus_remove_all_watches(DBusConnection *connection);
    172 
    173 #ifdef __cplusplus
    174 }
    175 #endif
    176 
    177 #endif /* __GDBUS_H */
    178