2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
7 #include "Ecore_Data.h"
15 # define EAPI __declspec(dllexport)
17 # define EAPI __declspec(dllimport)
22 # define EAPI __attribute__ ((visibility("default")))
31 #define ECORE_DBUS_MAJOR_PROTOCOL_VERSION 0x1
37 typedef struct _Ecore_DBus_Server Ecore_DBus_Server
;
38 typedef struct _Ecore_DBus_Event_Server_Add Ecore_DBus_Event_Server_Add
;
39 typedef struct _Ecore_DBus_Event_Server_Del Ecore_DBus_Event_Server_Del
;
40 typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Server_Data
;
41 typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Signal
;
42 typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Event_Method_Call
;
43 typedef struct _Ecore_DBus_Event_Server_Data Ecore_DBus_Method_Return
;
44 typedef struct _Ecore_DBus_Message Ecore_DBus_Message
;
45 typedef struct _Ecore_DBus_Message_Arg Ecore_DBus_Message_Arg
;
46 typedef struct _Ecore_DBus_Message_Field Ecore_DBus_Message_Field
;
47 typedef struct _Ecore_DBus_Address Ecore_DBus_Address
;
49 typedef void (*Ecore_DBus_Method_Call_Cb
) (void *data
, Ecore_DBus_Event_Method_Call
*event
);
51 typedef struct _Ecore_DBus_Object Ecore_DBus_Object
;
52 typedef struct _Ecore_DBus_Object_Method Ecore_DBus_Object_Method
;
53 typedef struct _Ecore_DBus_Object_Registry Ecore_DBus_Object_Registry
;
55 struct _Ecore_DBus_Object
57 Ecore_DBus_Server
*server
;
58 char *path
; /* dbus path name */
62 struct _Ecore_DBus_Object_Method
64 Ecore_DBus_Object
*object
;
68 Ecore_DBus_Method_Call_Cb func
;
71 struct _Ecore_DBus_Object_Registry
77 typedef enum _Ecore_DBus_Message_Type
79 ECORE_DBUS_MESSAGE_TYPE_INVALID
,
80 ECORE_DBUS_MESSAGE_TYPE_METHOD_CALL
,
81 ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN
,
82 ECORE_DBUS_MESSAGE_TYPE_ERROR
,
83 ECORE_DBUS_MESSAGE_TYPE_SIGNAL
84 } Ecore_DBus_Message_Type
;
86 typedef enum _Ecore_DBus_Message_Flag
88 ECORE_DBUS_MESSAGE_FLAG_NO_REPLY_EXPECTED
,
89 ECORE_DBUS_MESSAGE_FLAG_NO_AUTO_START
90 } Ecore_DBus_Message_Flag
;
92 typedef enum _Ecore_DBus_Data_Type
94 ECORE_DBUS_DATA_TYPE_INVALID
= ((int) '\0'),
95 ECORE_DBUS_DATA_TYPE_BYTE
= ((int) 'y'),
96 ECORE_DBUS_DATA_TYPE_BOOLEAN
= ((int) 'b'), /* 0,1 */
97 ECORE_DBUS_DATA_TYPE_INT16
= ((int) 'n'),
98 ECORE_DBUS_DATA_TYPE_UINT16
= ((int) 'q'),
99 ECORE_DBUS_DATA_TYPE_INT32
= ((int) 'i'),
100 ECORE_DBUS_DATA_TYPE_UINT32
= ((int) 'u'),
101 ECORE_DBUS_DATA_TYPE_INT64
= ((int) 'x'),
102 ECORE_DBUS_DATA_TYPE_UINT64
= ((int) 't'),
103 ECORE_DBUS_DATA_TYPE_DOUBLE
= ((int) 'd'),
104 ECORE_DBUS_DATA_TYPE_STRING
= ((int) 's'),
105 ECORE_DBUS_DATA_TYPE_OBJECT_PATH
= ((int) 'o'),
106 ECORE_DBUS_DATA_TYPE_SIGNATURE
= ((int) 'g'),
107 ECORE_DBUS_DATA_TYPE_ARRAY
= ((int) 'a'),
108 ECORE_DBUS_DATA_TYPE_VARIANT
= ((int) 'v'),
109 ECORE_DBUS_DATA_TYPE_STRUCT
= ((int) 'r'),
110 ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN
= ((int) '('),
111 ECORE_DBUS_DATA_TYPE_STRUCT_END
= ((int) ')'),
112 ECORE_DBUS_DATA_TYPE_DICT_ENTRY
= ((int) 'e'),
113 ECORE_DBUS_DATA_TYPE_DICT_ENTRY_BEGIN
= ((int) '{'),
114 ECORE_DBUS_DATA_TYPE_DICT_ENTRY_END
= ((int) '}'),
115 } Ecore_DBus_Data_Type
;
117 struct _Ecore_DBus_Event_Server_Add
119 Ecore_DBus_Server
*server
;
122 struct _Ecore_DBus_Event_Server_Del
124 Ecore_DBus_Server
*server
;
127 struct _Ecore_DBus_Event_Server_Data
129 Ecore_DBus_Server
*server
;
130 Ecore_DBus_Message_Type type
;
131 Ecore_DBus_Message
*message
;
134 const char *interface
;
136 const char *error_name
;
137 unsigned int reply_serial
;
138 const char *destination
;
140 const char *signature
;
142 Ecore_DBus_Message_Arg
*args
;
145 struct _Ecore_DBus_Message_Arg
147 Ecore_DBus_Data_Type type
;
151 typedef enum _Ecore_DBus_Message_Header_Field
153 ECORE_DBUS_HEADER_FIELD_INVALID
,
154 ECORE_DBUS_HEADER_FIELD_PATH
,
155 ECORE_DBUS_HEADER_FIELD_INTERFACE
,
156 ECORE_DBUS_HEADER_FIELD_MEMBER
,
157 ECORE_DBUS_HEADER_FIELD_ERROR_NAME
,
158 ECORE_DBUS_HEADER_FIELD_REPLY_SERIAL
,
159 ECORE_DBUS_HEADER_FIELD_DESTINATION
,
160 ECORE_DBUS_HEADER_FIELD_SENDER
,
161 ECORE_DBUS_HEADER_FIELD_SIGNATURE
162 } Ecore_DBus_Message_Header_Field
;
165 struct _Ecore_DBus_Address
172 EAPI
extern int ECORE_DBUS_EVENT_SERVER_ADD
;
173 EAPI
extern int ECORE_DBUS_EVENT_SERVER_DEL
;
174 EAPI
extern int ECORE_DBUS_EVENT_METHOD_CALL
;
175 EAPI
extern int ECORE_DBUS_EVENT_SIGNAL
;
178 typedef void (*Ecore_DBus_Method_Return_Cb
)(void *data
, Ecore_DBus_Method_Return
*reply
);
179 typedef void (*Ecore_DBus_Error_Cb
)(void *data
, const char *error
);
182 EAPI
int ecore_dbus_init(void);
183 EAPI
int ecore_dbus_shutdown(void);
186 EAPI Ecore_DBus_Server
*ecore_dbus_server_system_connect(const void *data
);
187 EAPI Ecore_DBus_Server
*ecore_dbus_server_session_connect(const void *data
);
188 EAPI Ecore_DBus_Server
*ecore_dbus_server_starter_connect(const void *data
);
190 EAPI Ecore_DBus_Server
*ecore_dbus_server_connect(Ecore_Con_Type type
, const char *name
, int port
, const void *data
);
193 EAPI
void ecore_dbus_server_del(Ecore_DBus_Server
*svr
);
197 EAPI
int ecore_dbus_server_send(Ecore_DBus_Server
*svr
, const char *command
, int length
);
199 EAPI
unsigned int ecore_dbus_message_new_method_call(Ecore_DBus_Server
*svr
,
200 const char *path
, const char *interface
,
201 const char *method
, const char *destination
,
202 Ecore_DBus_Method_Return_Cb method_cb
,
203 Ecore_DBus_Error_Cb error_cb
,
205 const char *signature
, ...);
206 EAPI
unsigned int ecore_dbus_message_new_method_return(Ecore_DBus_Server
*svr
,
207 int reply_serial
, const char *destination
,
208 const char *signature
, ...);
209 EAPI
unsigned int ecore_dbus_message_new_error(Ecore_DBus_Server
*svr
,
210 const char *error_name
,
211 int reply_serial
, const char *destination
,
212 const char *error_message
);
213 EAPI
unsigned int ecore_dbus_message_new_signal(Ecore_DBus_Server
*svr
,
215 const char *interface
, const char *signal_name
,
216 const char *destination
, const void *data
,
217 const char *signature
, ...);
219 EAPI
void ecore_dbus_message_del(Ecore_DBus_Message
*msg
);
220 EAPI
void ecore_dbus_message_print(Ecore_DBus_Message
*msg
);
221 EAPI
void *ecore_dbus_message_header_field_get(Ecore_DBus_Message
*msg
, Ecore_DBus_Message_Header_Field field
);
222 EAPI
void *ecore_dbus_message_body_field_get(Ecore_DBus_Message
*msg
, unsigned int pos
);
223 EAPI
int ecore_dbus_message_serial_get(Ecore_DBus_Message
*m
);
226 EAPI
int ecore_dbus_method_hello(Ecore_DBus_Server
*svr
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
227 EAPI
int ecore_dbus_method_list_names(Ecore_DBus_Server
*svr
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
228 EAPI
int ecore_dbus_method_name_has_owner(Ecore_DBus_Server
*svr
, char *name
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
229 EAPI
int ecore_dbus_method_start_service_by_name(Ecore_DBus_Server
*svr
, char *name
, unsigned int flags
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
230 EAPI
int ecore_dbus_method_get_name_owner(Ecore_DBus_Server
*svr
, char *name
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
231 EAPI
int ecore_dbus_method_get_connection_unix_user(Ecore_DBus_Server
*svr
, char *connection
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
232 EAPI
int ecore_dbus_method_add_match(Ecore_DBus_Server
*svr
, char *match
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
233 EAPI
int ecore_dbus_method_remove_match(Ecore_DBus_Server
*svr
, char *match
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
234 EAPI
int ecore_dbus_method_request_name(Ecore_DBus_Server
*svr
, char *name
, int flags
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
235 EAPI
int ecore_dbus_method_release_name(Ecore_DBus_Server
*svr
, char *name
, Ecore_DBus_Method_Return_Cb method_cb
, Ecore_DBus_Error_Cb
, void *data
);
238 EAPI Ecore_DBus_Address
*ecore_dbus_address_new(void);
239 EAPI
void ecore_dbus_address_free(Ecore_DBus_Address
*address
);
241 EAPI Ecore_List
*ecore_dbus_address_parse(const char *address
);
242 EAPI
char *ecore_dbus_address_string(Ecore_DBus_Address
*address
);
244 EAPI
const char *ecore_dbus_address_value_get(Ecore_DBus_Address
*address
, const char *key
);
245 EAPI
void ecore_dbus_print_address_list(Ecore_List
*addresses
);
246 EAPI Ecore_DBus_Server
*ecore_dbus_address_list_connect(Ecore_List
*addrs
, const void *data
);
247 EAPI Ecore_DBus_Server
*ecore_dbus_address_connect(Ecore_DBus_Address
*addr
, const void *data
);
250 EAPI Ecore_DBus_Object
*ecore_dbus_object_add(Ecore_DBus_Server
*svr
, const char *path
);
251 EAPI
void ecore_dbus_object_free(Ecore_DBus_Object
*obj
);
253 EAPI Ecore_DBus_Object_Method
*ecore_dbus_object_method_add(Ecore_DBus_Object
*obj
, const char *interface
, const char *method_name
, Ecore_DBus_Method_Call_Cb func
, void *data
);
254 EAPI
void ecore_dbus_object_method_remove(Ecore_DBus_Object
*obj
, Ecore_DBus_Object_Method
*method
);
255 EAPI
void ecore_dbus_object_method_free(Ecore_DBus_Object_Method
*method
);