예제 #1
0
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);
     }
}
예제 #2
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();
}
예제 #3
0
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;
}
예제 #4
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;
}