1 #ifndef _ECORE_CON_PRIVATE_H
2 #define _ECORE_CON_PRIVATE_H
4 #include "ecore_private.h"
7 #define ECORE_MAGIC_CON_SERVER 0x77665544
8 #define ECORE_MAGIC_CON_CLIENT 0x77556677
9 #define ECORE_MAGIC_CON_URL 0x77074255
11 #define ECORE_CON_TYPE 0x0f
12 #define ECORE_CON_SSL 0xf0
15 # include <gnutls/gnutls.h>
17 # include <openssl/ssl.h>
20 #include <curl/curl.h>
23 #define READBUFSIZ 65536
25 extern int _ecore_con_log_dom;
27 #ifdef ECORE_CON_DEFAULT_LOG_COLOR
28 #undef ECORE_LOG_DEFAULT_LOG_COLOR
30 #define ECORE_CON_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
35 #define ERR(...) EINA_LOG_DOM_ERR(_ecore_con_log_dom, __VA_ARGS__)
40 #define DBG(...) EINA_LOG_DOM_DBG(_ecore_con_log_dom, __VA_ARGS__)
45 #define INF(...) EINA_LOG_DOM_INFO(_ecore_con_log_dom, __VA_ARGS__)
50 #define WRN(...) EINA_LOG_DOM_WARN(_ecore_con_log_dom, __VA_ARGS__)
55 #define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_con_log_dom, __VA_ARGS__)
57 typedef struct _Ecore_Con_Lookup Ecore_Con_Lookup;
58 typedef struct _Ecore_Con_Info Ecore_Con_Info;
60 typedef void (*Ecore_Con_Info_Cb)(void *data, Ecore_Con_Info *infos);
62 typedef enum _Ecore_Con_State
65 ECORE_CON_DISCONNECTED,
69 typedef enum _Ecore_Con_Ssl_Error
71 ECORE_CON_SSL_ERROR_NONE = 0,
72 ECORE_CON_SSL_ERROR_NOT_SUPPORTED,
73 ECORE_CON_SSL_ERROR_INIT_FAILED,
74 ECORE_CON_SSL_ERROR_SERVER_INIT_FAILED,
75 ECORE_CON_SSL_ERROR_SSL2_NOT_SUPPORTED
76 } Ecore_Con_Ssl_Error;
78 struct _Ecore_Con_Client
82 Ecore_Con_Server *server;
84 Ecore_Fd_Handler *fd_handler;
90 struct sockaddr *client_addr;
93 gnutls_session session;
103 struct _Ecore_Con_Server
112 Ecore_Fd_Handler *fd_handler;
115 int write_buf_offset;
116 unsigned char *write_buf;
121 gnutls_session session;
122 gnutls_anon_client_credentials_t anoncred_c;
123 gnutls_anon_server_credentials_t anoncred_s;
124 gnutls_certificate_credentials_t cert;
134 char reject_excess_clients : 1;
139 struct _Ecore_Con_Url
143 struct curl_slist *headers;
144 struct curl_httppost *post;
145 Eina_List *additional_headers;
146 Eina_List *response_headers;
149 Ecore_Con_Url_Time condition;
153 Ecore_Fd_Handler *fd_handler;
160 unsigned char active : 1;
164 struct _Ecore_Con_Info
167 struct addrinfo info;
169 char service[NI_MAXSERV];
172 struct _Ecore_Con_Lookup
174 Ecore_Con_Dns_Cb done_cb;
178 /* from ecore_local.c */
179 int ecore_con_local_init(void);
180 int ecore_con_local_shutdown(void);
181 int ecore_con_local_connect(Ecore_Con_Server *svr,
182 Eina_Bool (*cb_done)(
184 Ecore_Fd_Handler *fd_handler),
187 void *data, void *ev));
188 int ecore_con_local_listen(Ecore_Con_Server *svr,
189 Eina_Bool (*cb_listen)(
191 Ecore_Fd_Handler *fd_handler),
193 /* from ecore_con_info.c */
194 int ecore_con_info_init(void);
195 int ecore_con_info_shutdown(void);
196 int ecore_con_info_tcp_connect(Ecore_Con_Server *svr,
197 Ecore_Con_Info_Cb done_cb,
199 int ecore_con_info_tcp_listen(Ecore_Con_Server *svr,
200 Ecore_Con_Info_Cb done_cb,
202 int ecore_con_info_udp_connect(Ecore_Con_Server *svr,
203 Ecore_Con_Info_Cb done_cb,
205 int ecore_con_info_udp_listen(Ecore_Con_Server *svr,
206 Ecore_Con_Info_Cb done_cb,
208 int ecore_con_info_mcast_listen(Ecore_Con_Server *svr,
209 Ecore_Con_Info_Cb done_cb,
211 /* from ecore_con_ssl.c */
212 Ecore_Con_Ssl_Error ecore_con_ssl_init(void);
213 Ecore_Con_Ssl_Error ecore_con_ssl_shutdown(void);
214 Eina_Bool ecore_con_ssl_server_cert_add(const char *cert);
215 Eina_Bool ecore_con_ssl_client_cert_add(const char *cert_file,
216 const char *crl_file,
217 const char *key_file);
218 void ecore_con_ssl_server_prepare(Ecore_Con_Server *svr);
219 Ecore_Con_Ssl_Error ecore_con_ssl_server_init(Ecore_Con_Server *svr);
220 Ecore_Con_Ssl_Error ecore_con_ssl_server_shutdown(Ecore_Con_Server *svr);
221 Ecore_Con_State ecore_con_ssl_server_try(Ecore_Con_Server *svr);
222 int ecore_con_ssl_server_read(Ecore_Con_Server *svr,
225 int ecore_con_ssl_server_write(Ecore_Con_Server *svr,
228 Ecore_Con_Ssl_Error ecore_con_ssl_client_init(Ecore_Con_Client *svr);
229 Ecore_Con_Ssl_Error ecore_con_ssl_client_shutdown(Ecore_Con_Client *svr);
230 Ecore_Con_State ecore_con_ssl_client_try(Ecore_Con_Client *svr);
231 int ecore_con_ssl_client_read(Ecore_Con_Client *svr,
234 int ecore_con_ssl_client_write(Ecore_Con_Client *svr,
238 int ecore_con_info_get(Ecore_Con_Server *svr,
239 Ecore_Con_Info_Cb done_cb,
241 struct addrinfo *hints);