00001 #ifndef E_DBUS_H
00002 #define E_DBUS_H
00003
00004 #define DBUS_API_SUBJECT_TO_CHANGE
00005
00006 #ifdef _WIN32
00007 # ifdef interface
00008 # undef interface
00009 # endif
00010 #endif
00011
00012 #ifdef _WIN32
00013 # ifdef interface
00014 # undef interface
00015 # endif
00016 # define DBUS_API_SUBJECT_TO_CHANGE
00017 #endif
00018
00019 #include <dbus/dbus.h>
00020 #include <Eina.h>
00021
00022 #ifdef EAPI
00023 # undef EAPI
00024 #endif
00025
00026 #ifdef _WIN32
00027 # ifdef EFL_EDBUS_BUILD
00028 # ifdef DLL_EXPORT
00029 # define EAPI __declspec(dllexport)
00030 # else
00031 # define EAPI
00032 # endif
00033 # else
00034 # define EAPI __declspec(dllimport)
00035 # endif
00036 #else
00037 # ifdef __GNUC__
00038 # if __GNUC__ >= 4
00039 # define EAPI __attribute__ ((visibility("default")))
00040 # else
00041 # define EAPI
00042 # endif
00043 # else
00044 # define EAPI
00045 # endif
00046 #endif
00047
00093 #define E_DBUS_FDO_BUS "org.freedesktop.DBus"
00094 #define E_DBUS_FDO_PATH "/org/freedesktop/DBus"
00095 #define E_DBUS_FDO_INTERFACE E_DBUS_FDO_BUS
00096 #define E_DBUS_FDO_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
00097
00098 #ifdef __cplusplus
00099 extern "C" {
00100 #endif
00101
00102 #define E_DBUS_VERSION_MAJOR 1
00103 #define E_DBUS_VERSION_MINOR 7
00104
00105 typedef struct _E_DBus_Version
00106 {
00107 int major;
00108 int minor;
00109 int micro;
00110 int revision;
00111 } E_DBus_Version;
00112
00113 EAPI extern E_DBus_Version *e_dbus_version;
00114
00115 EAPI extern int E_DBUS_DOMAIN_GLOBAL;
00116 EAPI extern int E_DBUS_EVENT_SIGNAL;
00117
00118 typedef struct E_DBus_Connection E_DBus_Connection;
00119 typedef struct E_DBus_Object E_DBus_Object;
00120 typedef struct E_DBus_Interface E_DBus_Interface;
00121 typedef struct E_DBus_Signal_Handler E_DBus_Signal_Handler;
00122
00123 typedef DBusMessage *(* E_DBus_Method_Cb)(E_DBus_Object *obj, DBusMessage *message);
00124 typedef void (*E_DBus_Method_Return_Cb) (void *data, DBusMessage *msg, DBusError *error);
00125 typedef void (*E_DBus_Signal_Cb) (void *data, DBusMessage *msg);
00126
00127 typedef void (*E_DBus_Object_Property_Get_Cb) (E_DBus_Object *obj, const char *property, int *type, void **value);
00128 typedef int (*E_DBus_Object_Property_Set_Cb) (E_DBus_Object *obj, const char *property, int type, void *value);
00129
00135 typedef void (*E_DBus_Callback_Func) (void *user_data, void *method_return, DBusError *error);
00136 typedef void *(*E_DBus_Unmarshal_Func) (DBusMessage *msg, DBusError *err);
00137 typedef void (*E_DBus_Free_Func) (void *data);
00138
00139 typedef struct E_DBus_Callback E_DBus_Callback;
00140
00141
00145 EAPI int e_dbus_init(void);
00146
00150 EAPI int e_dbus_shutdown(void);
00151
00152
00153
00158 EAPI E_DBus_Connection *e_dbus_bus_get(DBusBusType type);
00159
00160 EAPI void e_dbus_connection_ref(E_DBus_Connection *conn);
00161
00167 EAPI E_DBus_Connection *e_dbus_connection_setup(DBusConnection *conn);
00168
00173 EAPI void e_dbus_connection_close(E_DBus_Connection *conn);
00174
00175
00176 EAPI E_DBus_Interface *e_dbus_interface_new(const char *interface);
00177 EAPI void e_dbus_interface_ref(E_DBus_Interface *iface);
00178 EAPI void e_dbus_interface_unref(E_DBus_Interface *iface);
00179 EAPI void e_dbus_object_interface_attach(E_DBus_Object *obj, E_DBus_Interface *iface);
00180 EAPI void e_dbus_object_interface_detach(E_DBus_Object *obj, E_DBus_Interface *iface);
00181
00194 EAPI int e_dbus_interface_method_add(E_DBus_Interface *iface, const char *member, const char *signature, const char *reply_signature, E_DBus_Method_Cb func);
00195
00205 EAPI int e_dbus_interface_signal_add(E_DBus_Interface *iface, const char *name, const char *signature);
00206
00215 EAPI E_DBus_Object *e_dbus_object_add(E_DBus_Connection *conn, const char *object_path, void *data);
00216
00222 EAPI void e_dbus_object_free(E_DBus_Object *obj);
00223
00228 EAPI void *e_dbus_object_data_get(E_DBus_Object *obj);
00229
00234 EAPI E_DBus_Connection *e_dbus_object_conn_get(E_DBus_Object *obj);
00235
00240 EAPI const char *e_dbus_object_path_get(E_DBus_Object *obj);
00241
00246 EAPI const Eina_List *e_dbus_object_interfaces_get(E_DBus_Object *obj);
00247
00253 EAPI void e_dbus_object_property_get_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Get_Cb func);
00254
00260 EAPI void e_dbus_object_property_set_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Set_Cb func);
00261
00262
00263
00264
00274 EAPI DBusPendingCall *e_dbus_message_send(E_DBus_Connection *conn, DBusMessage *msg, E_DBus_Method_Return_Cb cb_return, int timeout, void *data);
00275
00276 EAPI DBusPendingCall *e_dbus_method_call_send(E_DBus_Connection *conn, DBusMessage *msg, E_DBus_Unmarshal_Func unmarshal_func, E_DBus_Callback_Func cb_func, E_DBus_Free_Func free_func, int timeout, void *data);
00277
00278
00279
00280
00292 EAPI E_DBus_Signal_Handler *e_dbus_signal_handler_add(E_DBus_Connection *conn, const char *sender, const char *path, const char *interface, const char *member, E_DBus_Signal_Cb cb_signal, void *data);
00293
00300 EAPI void e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh);
00301
00302
00303
00304 EAPI DBusPendingCall *e_dbus_request_name(E_DBus_Connection *conn, const char *name,
00305 unsigned int flags,
00306 E_DBus_Method_Return_Cb cb_return,
00307 const void *data);
00308 EAPI DBusPendingCall *e_dbus_release_name(E_DBus_Connection *conn, const char *name,
00309 E_DBus_Method_Return_Cb cb_return,
00310 const void *data);
00311
00312 EAPI DBusPendingCall *e_dbus_get_name_owner(E_DBus_Connection *conn, const char *name,
00313 E_DBus_Method_Return_Cb cb_return,
00314 const void *data);
00315 EAPI DBusPendingCall *e_dbus_list_names(E_DBus_Connection *conn,
00316 E_DBus_Method_Return_Cb cb_return,
00317 const void *data);
00318 EAPI DBusPendingCall *e_dbus_list_activatable_names(E_DBus_Connection *conn,
00319 E_DBus_Method_Return_Cb cb_return,
00320 const void *data);
00321 EAPI DBusPendingCall *e_dbus_name_has_owner(E_DBus_Connection *conn, const char *name,
00322 E_DBus_Method_Return_Cb cb_return,
00323 const void *data);
00324 EAPI DBusPendingCall *e_dbus_start_service_by_name(E_DBus_Connection *conn, const char *name, unsigned int flags,
00325 E_DBus_Method_Return_Cb cb_return,
00326 const void *data);
00327
00328
00329
00339 EAPI DBusPendingCall *e_dbus_introspect(E_DBus_Connection *conn, const char *bus,
00340 const char *object_path, E_DBus_Method_Return_Cb cb_return, const void *data);
00341
00351 EAPI DBusPendingCall *e_dbus_peer_ping(E_DBus_Connection *conn, const char *destination,
00352 const char *path, E_DBus_Method_Return_Cb cb_return,
00353 const void *data);
00354
00364 EAPI DBusPendingCall *e_dbus_peer_get_machine_id(E_DBus_Connection *conn,
00365 const char *destination, const char *path,
00366 E_DBus_Method_Return_Cb cb_return,
00367 const void *data);
00368 EAPI DBusPendingCall *e_dbus_properties_get_all(E_DBus_Connection *conn, const char *destination,
00369 const char *path, const char *interface,
00370 E_DBus_Method_Return_Cb cb_return,
00371 const void *data);
00372
00384 EAPI DBusPendingCall *e_dbus_properties_get(E_DBus_Connection *conn, const char *destination,
00385 const char *path, const char *interface,
00386 const char *property,
00387 E_DBus_Method_Return_Cb cb_return,
00388 const void *data);
00389
00403 EAPI DBusPendingCall *e_dbus_properties_set(E_DBus_Connection *conn, const char *destination,
00404 const char *path, const char *interface,
00405 const char *property, int value_type,
00406 const void *value, E_DBus_Method_Return_Cb cb_return,
00407 const void *data);
00408
00409
00415 EAPI E_DBus_Callback *e_dbus_callback_new(E_DBus_Callback_Func cb_func, E_DBus_Unmarshal_Func unmarshal_func, E_DBus_Free_Func free_func, void *user_data);
00416
00421 EAPI void e_dbus_callback_free(E_DBus_Callback *callback);
00422 EAPI void e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error);
00423 EAPI void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err);
00424 EAPI void e_dbus_callback_return_free(E_DBus_Callback *callback, void *data);
00425
00426 #ifdef __cplusplus
00427 }
00428 #endif
00429
00434 #endif