svn update: 48958 (latest:48959)
[framework/uifw/ecore.git] / src / lib / ecore_con / ecore_con_private.h
1 #ifndef _ECORE_CON_PRIVATE_H
2 #define _ECORE_CON_PRIVATE_H
3
4 #include "ecore_private.h"
5 #include "Ecore_Con.h"
6
7 #define ECORE_MAGIC_CON_SERVER             0x77665544
8 #define ECORE_MAGIC_CON_CLIENT             0x77556677
9 #define ECORE_MAGIC_CON_URL                0x77074255
10
11 #define ECORE_CON_TYPE 0x0f
12 #define ECORE_CON_SSL  0xf0
13
14 #if USE_GNUTLS
15 # include <gnutls/gnutls.h>
16 #elif USE_OPENSSL
17 # include <openssl/ssl.h>
18 #endif
19 #ifdef HAVE_CURL
20 #include <curl/curl.h>
21 #endif
22
23 #define READBUFSIZ 65536
24
25 extern int  _ecore_con_log_dom ;
26
27 #ifdef ECORE_CON_DEFAULT_LOG_COLOR
28 #undef ECORE_LOG_DEFAULT_LOG_COLOR
29 #endif
30 #define ECORE_CON_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
31
32 #ifdef ERR
33 # undef ERR
34 #endif
35 #define ERR(...) EINA_LOG_DOM_ERR(_ecore_con_log_dom, __VA_ARGS__)
36
37 #ifdef DBG
38 # undef DBG
39 #endif
40 #define DBG(...) EINA_LOG_DOM_DBG(_ecore_con_log_dom, __VA_ARGS__)
41
42 #ifdef INF
43 # undef INF
44 #endif
45 #define INF(...) EINA_LOG_DOM_INFO(_ecore_con_log_dom, __VA_ARGS__)
46
47 #ifdef WRN
48 # undef WRN
49 #endif
50 #define WRN(...) EINA_LOG_DOM_WARN(_ecore_con_log_dom, __VA_ARGS__)
51
52 #ifdef CRIT
53 # undef CRIT
54 #endif
55 #define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_con_log_dom, __VA_ARGS__)
56
57 typedef enum _Ecore_Con_State
58   {
59     ECORE_CON_CONNECTED,
60     ECORE_CON_DISCONNECTED,
61     ECORE_CON_INPROGRESS
62   } Ecore_Con_State;
63
64 typedef enum _Ecore_Con_Ssl_Error
65   {
66     ECORE_CON_SSL_ERROR_NONE = 0,
67     ECORE_CON_SSL_ERROR_NOT_SUPPORTED,
68     ECORE_CON_SSL_ERROR_INIT_FAILED,
69     ECORE_CON_SSL_ERROR_SERVER_INIT_FAILED,
70     ECORE_CON_SSL_ERROR_SSL2_NOT_SUPPORTED
71   } Ecore_Con_Ssl_Error;
72
73 struct _Ecore_Con_Client
74 {
75    ECORE_MAGIC;
76    int               fd;
77    Ecore_Con_Server *server;
78    void             *data;
79    Ecore_Fd_Handler *fd_handler;
80    int               buf_size;
81    int               buf_offset;
82    unsigned char    *buf;
83    char             *ip;
84    int               event_count;
85    struct sockaddr  *client_addr;
86    int               client_addr_len;
87 #if USE_GNUTLS
88    gnutls_session    session;
89 #elif USE_OPENSSL
90    SSL_CTX          *ssl_ctx;
91    SSL              *ssl;
92    int               ssl_err;
93 #endif
94    char              dead : 1;
95    char              delete_me : 1;
96 };
97
98 struct _Ecore_Con_Server
99 {
100    ECORE_MAGIC;
101    int               fd;
102    Ecore_Con_Type    type;
103    char             *name;
104    int               port;
105    char             *path;
106    void             *data;
107    Ecore_Fd_Handler *fd_handler;
108    Eina_List        *clients;
109    int               write_buf_size;
110    int               write_buf_offset;
111    unsigned char    *write_buf;
112    int               event_count;
113    int               client_limit;
114    pid_t             ppid;
115 #if USE_GNUTLS
116    gnutls_session    session;
117    gnutls_anon_client_credentials_t anoncred_c;
118    gnutls_anon_server_credentials_t anoncred_s;
119 #elif USE_OPENSSL
120    SSL_CTX          *ssl_ctx;
121    SSL              *ssl;
122    int               ssl_err;
123 #endif
124    char             *ip;
125    char              dead : 1;
126    char              created : 1;
127    char              connecting : 1;
128    char              reject_excess_clients : 1;
129    char              delete_me : 1;
130 };
131
132 #ifdef HAVE_CURL
133 struct _Ecore_Con_Url
134 {
135    ECORE_MAGIC;
136    CURL              *curl_easy;
137    struct curl_slist *headers;
138    struct curl_httppost* post;
139    Eina_List         *additional_headers;
140    Eina_List         *response_headers;
141    char              *url;
142
143    Ecore_Con_Url_Time condition;
144    time_t             time;
145    void              *data;
146
147    Ecore_Fd_Handler  *fd_handler;
148    int                fd;
149    int                flags;
150
151    int                received;
152    int                write_fd;
153
154    unsigned char      active : 1;
155 };
156 #endif
157
158 struct _Ecore_Con_Info
159 {
160    unsigned int    size;
161    struct addrinfo info;
162    char            ip[NI_MAXHOST];
163    char            service[NI_MAXSERV];
164 };
165
166 /* from ecore_local.c */
167 int ecore_con_local_init(void);
168 int ecore_con_local_shutdown(void);
169 int ecore_con_local_connect(Ecore_Con_Server *svr, int (*cb_done)(void *data, Ecore_Fd_Handler *fd_handler), void *data, void (*cb_free)(void *data, void *ev));
170 int ecore_con_local_listen(Ecore_Con_Server *svr, int (*cb_listen)(void *data, Ecore_Fd_Handler *fd_handler), void *data);
171 /* from ecore_con_info.c */
172 int ecore_con_info_init(void);
173 int ecore_con_info_shutdown(void);
174 int ecore_con_info_tcp_connect(Ecore_Con_Server *svr, Ecore_Con_Info_Cb done_cb, void *data);
175 int ecore_con_info_tcp_listen(Ecore_Con_Server *svr, Ecore_Con_Info_Cb done_cb, void *data);
176 int ecore_con_info_udp_connect(Ecore_Con_Server *svr, Ecore_Con_Info_Cb done_cb, void *data);
177 int ecore_con_info_udp_listen(Ecore_Con_Server *svr, Ecore_Con_Info_Cb done_cb, void *data);
178 int ecore_con_info_mcast_listen(Ecore_Con_Server *svr, Ecore_Con_Info_Cb done_cb, void *data);
179 /* from ecore_con_ssl.c */
180 Ecore_Con_Ssl_Error ecore_con_ssl_init(void);
181 Ecore_Con_Ssl_Error ecore_con_ssl_shutdown(void);
182 void                ecore_con_ssl_server_prepare(Ecore_Con_Server *svr);
183 Ecore_Con_Ssl_Error ecore_con_ssl_server_init(Ecore_Con_Server *svr);
184 Ecore_Con_Ssl_Error ecore_con_ssl_server_shutdown(Ecore_Con_Server *svr);
185 Ecore_Con_State     ecore_con_ssl_server_try(Ecore_Con_Server *svr);
186 int                 ecore_con_ssl_server_read(Ecore_Con_Server *svr, unsigned char *buf, int size);
187 int                 ecore_con_ssl_server_write(Ecore_Con_Server *svr, unsigned char *buf, int size);
188 Ecore_Con_Ssl_Error ecore_con_ssl_client_init(Ecore_Con_Client *svr);
189 Ecore_Con_Ssl_Error ecore_con_ssl_client_shutdown(Ecore_Con_Client *svr);
190 Ecore_Con_State     ecore_con_ssl_client_try(Ecore_Con_Client *svr);
191 int                 ecore_con_ssl_client_read(Ecore_Con_Client *svr, unsigned char *buf, int size);
192 int                 ecore_con_ssl_client_write(Ecore_Con_Client *svr, unsigned char *buf, int size);
193
194
195 #endif