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 00094 #define E_DBUS_FDO_BUS "org.freedesktop.DBus" 00095 #define E_DBUS_FDO_PATH "/org/freedesktop/DBus" 00096 #define E_DBUS_FDO_INTERFACE E_DBUS_FDO_BUS 00097 #define E_DBUS_FDO_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties" 00098 00099 #ifdef __cplusplus 00100 extern "C" { 00101 #endif 00102 00103 #define E_DBUS_VERSION_MAJOR 1 00104 #define E_DBUS_VERSION_MINOR 2 00105 00106 typedef struct _E_DBus_Version 00107 { 00108 int major; 00109 int minor; 00110 int micro; 00111 int revision; 00112 } E_DBus_Version; 00113 00114 EAPI extern E_DBus_Version *e_dbus_version; 00115 00116 EAPI extern int E_DBUS_DOMAIN_GLOBAL; 00117 EAPI extern int E_DBUS_EVENT_SIGNAL; 00118 00119 typedef struct E_DBus_Connection E_DBus_Connection; 00120 typedef struct E_DBus_Object E_DBus_Object; 00121 typedef struct E_DBus_Interface E_DBus_Interface; 00122 typedef struct E_DBus_Signal_Handler E_DBus_Signal_Handler; 00123 00124 typedef DBusMessage *(* E_DBus_Method_Cb)(E_DBus_Object *obj, DBusMessage *message); 00125 typedef void (*E_DBus_Method_Return_Cb) (void *data, DBusMessage *msg, DBusError *error); 00126 typedef void (*E_DBus_Signal_Cb) (void *data, DBusMessage *msg); 00127 00128 typedef void (*E_DBus_Object_Property_Get_Cb) (E_DBus_Object *obj, const char *property, int *type, void **value); 00129 typedef int (*E_DBus_Object_Property_Set_Cb) (E_DBus_Object *obj, const char *property, int type, void *value); 00130 00136 typedef void (*E_DBus_Callback_Func) (void *user_data, void *method_return, DBusError *error); 00137 typedef void *(*E_DBus_Unmarshal_Func) (DBusMessage *msg, DBusError *err); 00138 typedef void (*E_DBus_Free_Func) (void *data); 00139 00140 typedef struct E_DBus_Callback E_DBus_Callback; 00141 00142 00143 00147 EAPI int e_dbus_init(void); 00148 00152 EAPI int e_dbus_shutdown(void); 00153 00154 /* setting up the connection */ 00155 00156 00161 EAPI E_DBus_Connection *e_dbus_bus_get(DBusBusType type); 00162 00163 EAPI void e_dbus_connection_ref(E_DBus_Connection *conn); 00164 00165 00171 EAPI E_DBus_Connection *e_dbus_connection_setup(DBusConnection *conn); 00172 00177 EAPI void e_dbus_connection_close(E_DBus_Connection *conn); 00178 00179 /* receiving method calls */ 00180 EAPI E_DBus_Interface *e_dbus_interface_new(const char *interface); 00181 EAPI void e_dbus_interface_ref(E_DBus_Interface *iface); 00182 EAPI void e_dbus_interface_unref(E_DBus_Interface *iface); 00183 EAPI void e_dbus_object_interface_attach(E_DBus_Object *obj, E_DBus_Interface *iface); 00184 EAPI void e_dbus_object_interface_detach(E_DBus_Object *obj, E_DBus_Interface *iface); 00185 00198 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); 00199 00200 00210 EAPI int e_dbus_interface_signal_add(E_DBus_Interface *iface, const char *name, const char *signature); 00211 00212 00221 EAPI E_DBus_Object *e_dbus_object_add(E_DBus_Connection *conn, const char *object_path, void *data); 00222 00228 EAPI void e_dbus_object_free(E_DBus_Object *obj); 00229 00234 EAPI void *e_dbus_object_data_get(E_DBus_Object *obj); 00235 00240 EAPI E_DBus_Connection *e_dbus_object_conn_get(E_DBus_Object *obj); 00241 00246 EAPI const char *e_dbus_object_path_get(E_DBus_Object *obj); 00247 00252 EAPI const Eina_List *e_dbus_object_interfaces_get(E_DBus_Object *obj); 00253 00254 00260 EAPI void e_dbus_object_property_get_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Get_Cb func); 00261 00267 EAPI void e_dbus_object_property_set_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Set_Cb func); 00268 00269 00270 /* sending method calls */ 00271 00272 00273 00283 EAPI DBusPendingCall *e_dbus_message_send(E_DBus_Connection *conn, DBusMessage *msg, E_DBus_Method_Return_Cb cb_return, int timeout, void *data); 00284 00285 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); 00286 00287 00288 /* signal receiving */ 00289 00290 00302 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); 00303 00310 EAPI void e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh); 00311 00312 /* standard dbus method calls */ 00313 00314 EAPI DBusPendingCall *e_dbus_request_name(E_DBus_Connection *conn, const char *name, 00315 unsigned int flags, 00316 E_DBus_Method_Return_Cb cb_return, 00317 const void *data); 00318 EAPI DBusPendingCall *e_dbus_release_name(E_DBus_Connection *conn, const char *name, 00319 E_DBus_Method_Return_Cb cb_return, 00320 const void *data); 00321 00322 EAPI DBusPendingCall *e_dbus_get_name_owner(E_DBus_Connection *conn, const char *name, 00323 E_DBus_Method_Return_Cb cb_return, 00324 const void *data); 00325 EAPI DBusPendingCall *e_dbus_list_names(E_DBus_Connection *conn, 00326 E_DBus_Method_Return_Cb cb_return, 00327 const void *data); 00328 EAPI DBusPendingCall *e_dbus_list_activatable_names(E_DBus_Connection *conn, 00329 E_DBus_Method_Return_Cb cb_return, 00330 const void *data); 00331 EAPI DBusPendingCall *e_dbus_name_has_owner(E_DBus_Connection *conn, const char *name, 00332 E_DBus_Method_Return_Cb cb_return, 00333 const void *data); 00334 EAPI DBusPendingCall *e_dbus_start_service_by_name(E_DBus_Connection *conn, const char *name, unsigned int flags, 00335 E_DBus_Method_Return_Cb cb_return, 00336 const void *data); 00337 00338 /* standard methods calls on objects */ 00339 00349 EAPI DBusPendingCall *e_dbus_introspect(E_DBus_Connection *conn, const char *bus, 00350 const char *object_path, E_DBus_Method_Return_Cb cb_return, const void *data); 00351 00361 EAPI DBusPendingCall *e_dbus_peer_ping(E_DBus_Connection *conn, const char *destination, 00362 const char *path, E_DBus_Method_Return_Cb cb_return, 00363 const void *data); 00364 00374 EAPI DBusPendingCall *e_dbus_peer_get_machine_id(E_DBus_Connection *conn, 00375 const char *destination, const char *path, 00376 E_DBus_Method_Return_Cb cb_return, 00377 const void *data); 00378 EAPI DBusPendingCall *e_dbus_properties_get_all(E_DBus_Connection *conn, const char *destination, 00379 const char *path, const char *interface, 00380 E_DBus_Method_Return_Cb cb_return, 00381 const void *data); 00382 00394 EAPI DBusPendingCall *e_dbus_properties_get(E_DBus_Connection *conn, const char *destination, 00395 const char *path, const char *interface, 00396 const char *property, 00397 E_DBus_Method_Return_Cb cb_return, 00398 const void *data); 00399 00413 EAPI DBusPendingCall *e_dbus_properties_set(E_DBus_Connection *conn, const char *destination, 00414 const char *path, const char *interface, 00415 const char *property, int value_type, 00416 const void *value, E_DBus_Method_Return_Cb cb_return, 00417 const void *data); 00418 00419 00420 00426 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); 00427 00428 00433 EAPI void e_dbus_callback_free(E_DBus_Callback *callback); 00434 EAPI void e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error); 00435 EAPI void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err); 00436 EAPI void e_dbus_callback_return_free(E_DBus_Callback *callback, void *data); 00437 00438 #ifdef __cplusplus 00439 } 00440 #endif 00441 00446 #endif