Backport changes from EFL
[platform/upstream/eldbus.git] / src / lib / eldbus_private_types.h
1 #ifndef ELDBUS_PRIVATE_TYPES_H
2 #define ELDBUS_PRIVATE_TYPES_H 1
3
4 typedef struct _Eldbus_Connection_Name
5 {
6    const char *name;
7    const char *unique_id;
8    Eina_Hash  *objects;
9    int refcount;
10    struct
11    {
12       Eina_Inlist *list; //Eldbus_Connection_Context_NOC_Cb
13       int          walking;
14       Eina_List   *to_delete;
15    } event_handlers;
16    Eldbus_Signal_Handler *name_owner_changed;
17    Eldbus_Pending *name_owner_get;
18 } Eldbus_Connection_Name;
19
20 typedef struct _Eldbus_Object_Context_Event_Cb
21 {
22    EINA_INLIST;
23    Eldbus_Object_Event_Cb cb;
24    const void           *cb_data;
25    Eina_Bool             deleted : 1;
26 } Eldbus_Object_Context_Event_Cb;
27
28 typedef struct _Eldbus_Object_Context_Event
29 {
30    Eina_Inlist *list;
31    int          walking;
32    Eina_List   *to_delete;
33 } Eldbus_Object_Context_Event;
34
35
36 typedef struct _Eldbus_Connection_Context_Event
37 {
38    Eina_Inlist *list;
39    int          walking;
40    Eina_List   *to_delete;
41 } Eldbus_Connection_Context_Event;
42
43 struct _Eldbus_Connection
44 {
45    EINA_MAGIC;
46    EINA_INLIST;
47    int                            refcount;
48    Eldbus_Connection_Type          type;
49    DBusConnection                *dbus_conn;
50    Eina_Hash                     *names; //Eldbus_Connection_Name
51    Eina_Inlist                   *data;
52    Eina_Inlist                   *cbs_free;
53    Eina_Inlist                   *signal_handlers;
54    Eina_Inlist                   *pendings;
55    Eina_Inlist                   *fd_handlers;
56    Eina_Inlist                   *timeouts;
57    Ecore_Idler                   *idler;
58    Eldbus_Connection_Context_Event event_handlers[ELDBUS_CONNECTION_EVENT_LAST];
59    Eina_Inlist                   *root_objs;//service_object
60    Eldbus_Proxy                   *fdo_proxy;
61 };
62
63 struct _Eldbus_Object
64 {
65    EINA_MAGIC;
66    EINA_INLIST;
67    int                        refcount;
68    Eldbus_Connection          *conn;
69    const char                *name;
70    const char                *path;
71    Eina_Hash                 *proxies;
72    Eina_Inlist               *pendings;
73    Eina_List                 *signal_handlers;
74    Eina_Inlist               *cbs_free;
75    Eldbus_Object_Context_Event event_handlers[ELDBUS_OBJECT_EVENT_LAST];
76    Eldbus_Signal_Handler *interfaces_added;
77    Eldbus_Signal_Handler *interfaces_removed;
78    Eldbus_Signal_Handler *properties_changed;
79    Eldbus_Proxy *properties;
80 };
81
82 struct _Eldbus_Signal_Handler
83 {
84    EINA_MAGIC;
85    EINA_INLIST;
86    int                       refcount;
87    const char               *sender;
88    const char               *path;
89    const char               *interface;
90    const char               *member;
91    Eina_Strbuf              *match;
92    Eina_Inlist              *args;
93    Eina_Inlist_Sorted_State *state_args;
94    Eldbus_Connection         *conn;
95    Eldbus_Signal_Cb           cb;
96    Eldbus_Connection_Name    *bus;
97    const void               *cb_data;
98    Eina_Inlist              *cbs_free;
99    Eina_Bool                 dangling;
100 };
101
102 struct _Eldbus_Pending
103 {
104    EINA_MAGIC;
105    EINA_INLIST;
106    Eldbus_Message_Cb  cb;
107    const void       *cb_data;
108    DBusPendingCall  *dbus_pending;
109    Eldbus_Connection *conn;
110    const char       *dest;
111    const char       *path;
112    const char       *interface;
113    const char       *method;
114    Eina_Inlist      *data;
115    Eina_Inlist      *cbs_free;
116    Eldbus_Message    *msg_sent;
117 };
118
119 struct _Eldbus_Message_Iter
120 {
121    EINA_MAGIC;
122    EINA_INLIST;
123    DBusMessageIter dbus_iterator;
124    Eina_Inlist *iterators;
125    Eina_Bool writable;
126 };
127
128 struct _Eldbus_Message
129 {
130    EINA_MAGIC;
131    int          refcount;
132    DBusMessage *dbus_msg;
133    Eldbus_Message_Iter *iterator;
134 };
135
136 typedef struct _Eldbus_Service_Object Eldbus_Service_Object;
137 struct _Eldbus_Service_Object
138 {
139    EINA_INLIST;
140    Eldbus_Connection *conn;
141    const char *path;
142    Eina_Hash *interfaces;
143    Eina_Strbuf *introspection_data;
144    Eina_Bool introspection_dirty;
145    Eina_Inlist *data;
146    Eldbus_Service_Object *parent;
147    Eina_Inlist *children;
148
149    //ObjectManager data
150    Eldbus_Service_Interface *objmanager;
151    Eina_List *iface_added;
152    Eina_List *iface_removed;
153    Ecore_Idler *idler_iface_changed;
154 };
155
156 struct _Eldbus_Service_Interface
157 {
158    EINA_MAGIC;
159    const char *name;
160    Eina_Hash *methods;
161    const Eldbus_Signal *signals;
162    Eina_Array *sign_of_signals;
163    Eldbus_Service_Object *obj;
164    Eina_Hash *properties;
165    Eldbus_Property_Set_Cb set_func;
166    Eldbus_Property_Get_Cb get_func;
167    Ecore_Idler *idler_propschanged;
168    Eina_Array *props_changed;
169    Eina_Array *prop_invalidated;
170 };
171
172 typedef struct _Signal_Argument
173 {
174    EINA_INLIST;
175    unsigned short index;
176    const char *value;
177 } Signal_Argument;
178
179 #endif