Tizen 2.1 base
[framework/uifw/ecore.git] / src / examples / ecore_con_server_example.c
1 #include <stdio.h>
2 #include <Ecore.h>
3 #include <Ecore_Con.h>
4
5 /* Ecore_Con server example
6  * 2010 Mike Blumenkrantz
7  */
8
9 /* comment if not using gnutls */
10 static void
11 tls_log_func(int level, const char *str)
12 {
13    fprintf(stderr, "|<%d>| %s", level, str);
14 }
15
16 Eina_Bool
17 _add(void *data, int type, Ecore_Con_Event_Client_Add *ev)
18 {
19    printf("Client with ip %s connected!\n", ecore_con_client_ip_get(ev->client));
20    ecore_con_client_send(ev->client, "hello!", 6);
21 //   ecore_con_client_flush(ev->client);
22    ecore_con_client_timeout_set(ev->client, 5);
23
24    return ECORE_CALLBACK_RENEW;
25 }
26
27 Eina_Bool
28 _del(void *data, int type, Ecore_Con_Event_Client_Del *ev)
29 {
30    printf("Lost client with ip %s!\n", ecore_con_client_ip_get(ev->client));
31    ecore_main_loop_quit();
32    return ECORE_CALLBACK_RENEW;
33 }
34
35 Eina_Bool
36 _data(void *data, int type, Ecore_Con_Event_Client_Data *ev)
37 {
38    char fmt[128];
39
40    snprintf(fmt, sizeof(fmt),
41             "Received %i bytes from client:\n"
42             ">>>>>\n"
43             "%%.%is\n"
44             ">>>>>\n",
45             ev->size, ev->size);
46
47    printf(fmt, ev->data);
48    return ECORE_CALLBACK_RENEW;
49 }
50
51 int
52 main()
53 {
54    Ecore_Con_Server *svr;
55    eina_init();
56    ecore_init();
57    ecore_con_init();
58
59 /* comment if not using gnutls */
60    gnutls_global_set_log_level(9);
61    gnutls_global_set_log_function(tls_log_func);
62
63 /* to use a PEM certificate with TLS and SSL3, uncomment the lines below */
64    if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_USE_SSL3 | ECORE_CON_LOAD_CERT, "127.0.0.1", 8080, NULL)))
65 /* to use simple tcp with ssl/tls, use this line */
66 //   if (!ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_SSL3, "127.0.0.1", 8080, NULL))
67      exit(1);
68
69    ecore_con_ssl_server_cert_add(svr, "server.pem");
70    ecore_con_ssl_server_privkey_add(svr, "server.pem");
71 /* set event handler for client connect */
72    ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL);
73 /* set event handler for client disconnect */
74    ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL);
75 /* set event handler for receiving client data */
76    ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL);
77
78 /* start server */
79    ecore_main_loop_begin();
80 }
81