d32a5fb4f47e2f2f92ffdf44565e60d3f7b6571a
[framework/uifw/edbus.git] / src / lib / dbus / e_dbus_util.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include "e_dbus_private.h"
6
7 EAPI E_DBus_Callback *
8 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)
9 {
10   E_DBus_Callback *cb;
11
12   if (!cb_func) return NULL;
13
14   cb = calloc(1, sizeof(E_DBus_Callback));
15   if (!cb) return NULL;
16   cb->cb_func = cb_func;
17   cb->unmarshal_func = unmarshal_func;
18   cb->free_func = free_func;
19   cb->user_data = user_data;
20   return cb;
21 }
22
23 EAPI void
24 e_dbus_callback_free(E_DBus_Callback *callback)
25 {
26   free(callback);
27 }
28
29 EAPI void
30 e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error)
31 {
32   if (cb && cb->cb_func)
33     cb->cb_func(cb->user_data, data, error);
34 }
35
36 EAPI void *
37 e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err)
38 {
39   if (cb && cb->unmarshal_func)
40     return cb->unmarshal_func(msg, err);
41   else
42     return NULL;
43 }
44
45 EAPI void
46 e_dbus_callback_return_free(E_DBus_Callback *cb, void *data)
47 {
48   if (cb && cb->free_func)
49     cb->free_func(data);
50 }
51
52 const char *
53 e_dbus_basic_type_as_string(int type)
54 {
55   switch (type)
56   {
57     case DBUS_TYPE_BYTE:
58       return DBUS_TYPE_BYTE_AS_STRING;
59     case DBUS_TYPE_BOOLEAN:
60       return DBUS_TYPE_BOOLEAN_AS_STRING;
61     case DBUS_TYPE_INT16:
62       return DBUS_TYPE_INT16_AS_STRING;
63     case DBUS_TYPE_UINT16:
64       return DBUS_TYPE_UINT16_AS_STRING;
65     case DBUS_TYPE_INT32:
66       return DBUS_TYPE_INT32_AS_STRING;
67     case DBUS_TYPE_UINT32:
68       return DBUS_TYPE_UINT32_AS_STRING;
69     case DBUS_TYPE_INT64:
70       return DBUS_TYPE_INT64_AS_STRING;
71     case DBUS_TYPE_UINT64:
72       return DBUS_TYPE_UINT64_AS_STRING;
73     case DBUS_TYPE_DOUBLE:
74       return DBUS_TYPE_DOUBLE_AS_STRING;
75     case DBUS_TYPE_STRING:
76       return DBUS_TYPE_STRING_AS_STRING;
77     case DBUS_TYPE_OBJECT_PATH:
78       return DBUS_TYPE_OBJECT_PATH_AS_STRING;
79     case DBUS_TYPE_SIGNATURE:
80       return DBUS_TYPE_SIGNATURE_AS_STRING;
81     default:
82       return NULL;
83   }
84 }