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