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