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