4 #define DBUS_API_SUBJECT_TO_CHANGE
12 #include <dbus/dbus.h>
20 # ifdef EFL_EDBUS_BUILD
22 # define EAPI __declspec(dllexport)
25 # endif /* ! DLL_EXPORT */
27 # define EAPI __declspec(dllimport)
28 # endif /* ! EFL_EDBUS_BUILD */
32 # define EAPI __attribute__ ((visibility("default")))
44 EAPI extern int E_DBUS_DOMAIN_GLOBAL;
45 EAPI extern int E_DBUS_EVENT_SIGNAL;
47 typedef struct E_DBus_Connection E_DBus_Connection;
48 typedef struct E_DBus_Object E_DBus_Object;
49 typedef struct E_DBus_Interface E_DBus_Interface;
50 typedef struct E_DBus_Signal_Handler E_DBus_Signal_Handler;
52 typedef DBusMessage *(* E_DBus_Method_Cb)(E_DBus_Object *obj, DBusMessage *message);
53 typedef void (*E_DBus_Method_Return_Cb) (void *data, DBusMessage *msg, DBusError *error);
54 typedef void (*E_DBus_Signal_Cb) (void *data, DBusMessage *msg);
56 typedef void (*E_DBus_Object_Property_Get_Cb) (E_DBus_Object *obj, const char *property, int *type, void **value);
57 typedef int (*E_DBus_Object_Property_Set_Cb) (E_DBus_Object *obj, const char *property, int type, void *value);
60 * A callback function for a DBus call
61 * @param user_data the data passed in to the method call
62 * @param event_data a struct containing the return data.
64 typedef void (*E_DBus_Callback_Func) (void *user_data, void *method_return, DBusError *error);
65 typedef void *(*E_DBus_Unmarshal_Func) (DBusMessage *msg, DBusError *err);
66 typedef void (*E_DBus_Free_Func) (void *data);
68 typedef struct E_DBus_Callback E_DBus_Callback;
71 EAPI int e_dbus_init(void);
72 EAPI int e_dbus_shutdown(void);
74 /* setting up the connection */
76 EAPI E_DBus_Connection *e_dbus_bus_get(DBusBusType type);
78 EAPI void e_dbus_connection_ref(E_DBus_Connection *conn);
80 EAPI E_DBus_Connection *e_dbus_connection_setup(DBusConnection *conn);
81 EAPI void e_dbus_connection_close(E_DBus_Connection *conn);
83 /* receiving method calls */
84 EAPI E_DBus_Interface *e_dbus_interface_new(const char *interface);
85 EAPI void e_dbus_interface_ref(E_DBus_Interface *iface);
86 EAPI void e_dbus_interface_unref(E_DBus_Interface *iface);
87 EAPI void e_dbus_object_interface_attach(E_DBus_Object *obj, E_DBus_Interface *iface);
88 EAPI void e_dbus_object_interface_detach(E_DBus_Object *obj, E_DBus_Interface *iface);
89 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);
91 EAPI int e_dbus_interface_signal_add(E_DBus_Interface *iface, const char *name, const char *signature);
93 EAPI E_DBus_Object *e_dbus_object_add(E_DBus_Connection *conn, const char *object_path, void *data);
94 EAPI void e_dbus_object_free(E_DBus_Object *obj);
95 EAPI void *e_dbus_object_data_get(E_DBus_Object *obj);
96 EAPI E_DBus_Connection *e_dbus_object_conn_get(E_DBus_Object *obj);
97 EAPI const char *e_dbus_object_path_get(E_DBus_Object *obj);
98 EAPI const Eina_List *e_dbus_object_interfaces_get(E_DBus_Object *obj);
100 EAPI void e_dbus_object_property_get_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Get_Cb func);
101 EAPI void e_dbus_object_property_set_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Set_Cb func);
104 /* sending method calls */
107 EAPI DBusPendingCall *e_dbus_message_send(E_DBus_Connection *conn, DBusMessage *msg, E_DBus_Method_Return_Cb cb_return, int timeout, void *data);
109 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);
112 /* signal receiving */
114 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);
115 EAPI void e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh);
117 /* standard dbus method calls */
119 EAPI DBusPendingCall *e_dbus_request_name(E_DBus_Connection *conn, const char *name,
121 E_DBus_Method_Return_Cb cb_return,
123 EAPI DBusPendingCall *e_dbus_release_name(E_DBus_Connection *conn, const char *name,
124 E_DBus_Method_Return_Cb cb_return,
127 EAPI DBusPendingCall *e_dbus_get_name_owner(E_DBus_Connection *conn, const char *name,
128 E_DBus_Method_Return_Cb cb_return,
130 EAPI DBusPendingCall *e_dbus_list_names(E_DBus_Connection *conn,
131 E_DBus_Method_Return_Cb cb_return,
133 EAPI DBusPendingCall *e_dbus_list_activatable_names(E_DBus_Connection *conn,
134 E_DBus_Method_Return_Cb cb_return,
136 EAPI DBusPendingCall *e_dbus_name_has_owner(E_DBus_Connection *conn, const char *name,
137 E_DBus_Method_Return_Cb cb_return,
139 EAPI DBusPendingCall *e_dbus_start_service_by_name(E_DBus_Connection *conn, const char *name, unsigned int flags,
140 E_DBus_Method_Return_Cb cb_return,
143 /* standard methods calls on objects */
144 EAPI DBusPendingCall *e_dbus_peer_ping(E_DBus_Connection *conn, const char *destination,
145 const char *path, E_DBus_Method_Return_Cb cb_return,
147 EAPI DBusPendingCall *e_dbus_peer_get_machine_id(E_DBus_Connection *conn,
148 const char *destination, const char *path,
149 E_DBus_Method_Return_Cb cb_return,
151 EAPI DBusPendingCall *e_dbus_properties_get_all(E_DBus_Connection *conn, const char *destination,
152 const char *path, const char *interface,
153 E_DBus_Method_Return_Cb cb_return,
155 EAPI DBusPendingCall *e_dbus_properties_get(E_DBus_Connection *conn, const char *destination,
156 const char *path, const char *interface,
157 const char *property,
158 E_DBus_Method_Return_Cb cb_return,
160 EAPI DBusPendingCall *e_dbus_properties_set(E_DBus_Connection *conn, const char *destination,
161 const char *path, const char *interface,
162 const char *property, int value_type,
163 const void *value, E_DBus_Method_Return_Cb cb_return,
167 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);
169 EAPI void e_dbus_callback_free(E_DBus_Callback *callback);
170 EAPI void e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error);
171 EAPI void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err);
172 EAPI void e_dbus_callback_return_free(E_DBus_Callback *callback, void *data);