Windows stuff
[framework/uifw/edbus.git] / src / lib / dbus / E_DBus.h
1 #ifndef E_DBUS_H
2 #define E_DBUS_H
3
4 #define DBUS_API_SUBJECT_TO_CHANGE
5
6 #ifdef _WIN32
7 # ifdef interface
8 #  undef interface
9 # endif
10 #endif
11
12 #ifdef _WIN32
13 # ifdef interface
14 #  undef interface
15 # endif
16 # define DBUS_API_SUBJECT_TO_CHANGE
17 #endif
18
19 #include <dbus/dbus.h>
20 #include <Eina.h>
21
22 #ifdef EAPI
23 # undef EAPI
24 #endif
25
26 #ifdef _WIN32
27 # ifdef EFL_EDBUS_BUILD
28 #  ifdef DLL_EXPORT
29 #   define EAPI __declspec(dllexport)
30 #  else
31 #   define EAPI
32 #  endif /* ! DLL_EXPORT */
33 # else
34 #  define EAPI __declspec(dllimport)
35 # endif /* ! EFL_EDBUS_BUILD */
36 #else
37 # ifdef __GNUC__
38 #  if __GNUC__ >= 4
39 #   define EAPI __attribute__ ((visibility("default")))
40 #  else
41 #   define EAPI
42 #  endif
43 # else
44 #  define EAPI
45 # endif
46 #endif
47
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51    EAPI extern int E_DBUS_DOMAIN_GLOBAL;
52    EAPI extern int E_DBUS_EVENT_SIGNAL;
53
54    typedef struct E_DBus_Connection E_DBus_Connection;
55    typedef struct E_DBus_Object E_DBus_Object;
56    typedef struct E_DBus_Interface E_DBus_Interface;
57    typedef struct E_DBus_Signal_Handler E_DBus_Signal_Handler;
58
59    typedef DBusMessage *(* E_DBus_Method_Cb)(E_DBus_Object *obj, DBusMessage *message);
60    typedef void (*E_DBus_Method_Return_Cb) (void *data, DBusMessage *msg, DBusError *error);
61    typedef void (*E_DBus_Signal_Cb) (void *data, DBusMessage *msg);
62
63    typedef void (*E_DBus_Object_Property_Get_Cb) (E_DBus_Object *obj, const char *property, int *type, void **value);
64    typedef int  (*E_DBus_Object_Property_Set_Cb) (E_DBus_Object *obj, const char *property, int type, void *value);
65
66 /**
67  * A callback function for a DBus call
68  * @param user_data the data passed in to the method call
69  * @param event_data a struct containing the return data.
70  */
71    typedef void (*E_DBus_Callback_Func) (void *user_data, void *method_return, DBusError *error);
72    typedef void *(*E_DBus_Unmarshal_Func) (DBusMessage *msg, DBusError *err);
73    typedef void (*E_DBus_Free_Func) (void *data);
74
75    typedef struct E_DBus_Callback E_DBus_Callback;
76
77
78    EAPI int e_dbus_init(void);
79    EAPI int e_dbus_shutdown(void);
80
81 /* setting up the connection */
82
83    EAPI E_DBus_Connection *e_dbus_bus_get(DBusBusType type);
84
85    EAPI void e_dbus_connection_ref(E_DBus_Connection *conn);
86
87    EAPI E_DBus_Connection *e_dbus_connection_setup(DBusConnection *conn);
88    EAPI void e_dbus_connection_close(E_DBus_Connection *conn);
89
90 /* receiving method calls */
91    EAPI E_DBus_Interface *e_dbus_interface_new(const char *interface);
92    EAPI void e_dbus_interface_ref(E_DBus_Interface *iface);
93    EAPI void e_dbus_interface_unref(E_DBus_Interface *iface);
94    EAPI void e_dbus_object_interface_attach(E_DBus_Object *obj, E_DBus_Interface *iface);
95    EAPI void e_dbus_object_interface_detach(E_DBus_Object *obj, E_DBus_Interface *iface);
96    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);
97
98    EAPI int e_dbus_interface_signal_add(E_DBus_Interface *iface, const char *name, const char *signature);
99
100    EAPI E_DBus_Object *e_dbus_object_add(E_DBus_Connection *conn, const char *object_path, void *data);
101    EAPI void e_dbus_object_free(E_DBus_Object *obj);
102    EAPI void *e_dbus_object_data_get(E_DBus_Object *obj);
103    EAPI E_DBus_Connection *e_dbus_object_conn_get(E_DBus_Object *obj);
104    EAPI const char *e_dbus_object_path_get(E_DBus_Object *obj);
105    EAPI const Eina_List *e_dbus_object_interfaces_get(E_DBus_Object *obj);
106
107    EAPI void e_dbus_object_property_get_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Get_Cb func);
108    EAPI void e_dbus_object_property_set_cb_set(E_DBus_Object *obj, E_DBus_Object_Property_Set_Cb func);
109
110
111 /* sending method calls */
112
113
114    EAPI DBusPendingCall *e_dbus_message_send(E_DBus_Connection *conn, DBusMessage *msg, E_DBus_Method_Return_Cb cb_return, int timeout, void *data);
115
116    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);
117
118
119 /* signal receiving */
120
121    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);
122    EAPI void e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh);
123
124 /* standard dbus method calls */
125
126    EAPI DBusPendingCall *e_dbus_request_name(E_DBus_Connection *conn, const char *name,
127                                              unsigned int flags,
128                                              E_DBus_Method_Return_Cb cb_return,
129                                              const void *data);
130    EAPI DBusPendingCall *e_dbus_release_name(E_DBus_Connection *conn, const char *name,
131                                              E_DBus_Method_Return_Cb cb_return,
132                                              const void *data);
133
134    EAPI DBusPendingCall *e_dbus_get_name_owner(E_DBus_Connection *conn, const char *name,
135                                                E_DBus_Method_Return_Cb cb_return,
136                                                const void *data);
137    EAPI DBusPendingCall *e_dbus_list_names(E_DBus_Connection *conn,
138                                            E_DBus_Method_Return_Cb cb_return,
139                                            const void *data);
140    EAPI DBusPendingCall *e_dbus_list_activatable_names(E_DBus_Connection *conn,
141                                                        E_DBus_Method_Return_Cb cb_return,
142                                                        const void *data);
143    EAPI DBusPendingCall *e_dbus_name_has_owner(E_DBus_Connection *conn, const char *name,
144                                                E_DBus_Method_Return_Cb cb_return,
145                                                const void *data);
146    EAPI DBusPendingCall *e_dbus_start_service_by_name(E_DBus_Connection *conn, const char *name, unsigned int flags,
147                                                       E_DBus_Method_Return_Cb cb_return,
148                                                       const void *data);
149
150 /* standard methods calls on objects */
151    EAPI DBusPendingCall *e_dbus_peer_ping(E_DBus_Connection *conn, const char *destination,
152                                           const char *path, E_DBus_Method_Return_Cb cb_return,
153                                           const void *data);
154    EAPI DBusPendingCall *e_dbus_peer_get_machine_id(E_DBus_Connection *conn,
155                                                     const char *destination, const char *path,
156                                                     E_DBus_Method_Return_Cb cb_return,
157                                                     const void *data);
158    EAPI DBusPendingCall *e_dbus_properties_get_all(E_DBus_Connection *conn, const char *destination,
159                                                    const char *path, const char *interface,
160                                                    E_DBus_Method_Return_Cb cb_return,
161                                                    const void *data);
162    EAPI DBusPendingCall *e_dbus_properties_get(E_DBus_Connection *conn, const char *destination,
163                                                const char *path, const char *interface,
164                                                const char *property,
165                                                E_DBus_Method_Return_Cb cb_return,
166                                                const void *data);
167    EAPI DBusPendingCall *e_dbus_properties_set(E_DBus_Connection *conn, const char *destination,
168                                                const char *path, const char *interface,
169                                                const char *property, int value_type,
170                                                const void *value, E_DBus_Method_Return_Cb cb_return,
171                                                const void *data);
172
173
174    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);
175
176    EAPI void e_dbus_callback_free(E_DBus_Callback *callback);
177    EAPI void e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error);
178    EAPI void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err);
179    EAPI void e_dbus_callback_return_free(E_DBus_Callback *callback, void *data);
180
181 #ifdef __cplusplus
182 }
183 #endif
184
185 #endif