void ipc_init(void) { char *file = NULL; Ecore_Fd_Handler *fdh; file = getenv("EXQUISITE_IPC"); if (!file || !file[0]) file = "/tmp/exquisite"; if (!method) method = getenv("EXQUISITE_IPC_METHOD"); if (!method || !method[0] || !strcmp(method, "fifo")) { unlink(file); mkfifo(file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); fd = open(file, O_RDWR); fcntl(fd, F_SETFL, O_NONBLOCK); if (fd < 0) { printf("EXQUISITE ERROR: Cannot create fifo: %s\n", file); exit(-1); } fdh = ecore_main_fd_handler_add(fd, ECORE_FD_READ, fifo_input, NULL, NULL, NULL); } else if (strstr(method, "socket")) { ecore_con_init(); if (!strcmp(method, "socket")) { sock = ecore_con_server_add(ECORE_CON_LOCAL_SYSTEM, file, 0, NULL); } else { sock = ecore_con_server_add(ECORE_CON_LOCAL_ABSTRACT, file, 0, NULL); } if (!sock) { printf("EXQUISITE ERROR: Cannot create socket %s.\n", file); exit(-1); } ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, socket_input, NULL); ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, socket_del, NULL); } else { printf("Invalid ipc method: %s\n", method); exit(0); } }
int main() { Ecore_Con_Server *svr; eina_init(); ecore_init(); ecore_con_init(); /* comment if not using gnutls */ gnutls_global_set_log_level(9); gnutls_global_set_log_function(tls_log_func); /* to use a PEM certificate with TLS and SSL3, uncomment the lines below */ 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))) /* to use simple tcp with ssl/tls, use this line */ // if (!ecore_con_server_add(ECORE_CON_REMOTE_TCP | ECORE_CON_USE_SSL3, "127.0.0.1", 8080, NULL)) exit(1); ecore_con_ssl_server_cert_add(svr, "server.pem"); ecore_con_ssl_server_privkey_add(svr, "server.pem"); /* set event handler for client connect */ ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_add, NULL); /* set event handler for client disconnect */ ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_del, NULL); /* set event handler for receiving client data */ ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_data, NULL); /* start server */ ecore_main_loop_begin(); }
int main (int argc, char *argv[]) { ecore_con_init(); printf("Server is running: waiting for connections\n"); svr = ecore_con_server_add(ECORE_CON_LOCAL_USER, "con_example", 0, NULL); ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Handler_Func)client_connect, NULL); ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Handler_Func)client_disconnect, NULL); ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Handler_Func)client_data, NULL); ecore_main_loop_begin(); ecore_con_shutdown(); return 0; }
HttpServer::HttpServer(int p): port(p), tcp_server(NULL) { /* Setup ecore con TCP server and callbacks */ tcp_server = ecore_con_server_add(ECORE_CON_REMOTE_TCP, "0.0.0.0", port, this); ecore_con_server_data_set(tcp_server, this); event_handler_client_add = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_ecore_con_handler_client_add, this); event_handler_client_del = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb)_ecore_con_handler_data_get, this); event_handler_client_write = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_WRITE, (Ecore_Event_Handler_Cb)_ecore_con_handler_data_write, this); event_handler_data_get = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, (Ecore_Event_Handler_Cb)_ecore_con_handler_client_del, this); cDebugDom("network") << "Init TCP Server"; cInfoDom("network") << "Listening on port " << port; }