lib/dbus/E_DBus.h
Go to the documentation of this file.
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 /* ! DLL_EXPORT */ 00033 # else 00034 # define EAPI __declspec(dllimport) 00035 # endif /* ! EFL_EDBUS_BUILD */ 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 /* setting up the connection */ 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 /* receiving method calls */ 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 /* sending method calls */ 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 /* signal receiving */ 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 /* standard dbus method calls */ 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 /* standard methods calls on objects */ 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