netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=7273b75df1cd9c9a8429dadc133decdd52d6d0f8

commit 7273b75df1cd9c9a8429dadc133decdd52d6d0f8
Author: Alastair Poole <nets...@gmail.com>
Date:   Sat Oct 31 15:07:29 2020 +0000

    srv: socket fail dont bail.
    
    meh this'll do for now
---
 src/bin/evisum_server.c | 45 ++++++++++++++++++++++++++-------------------
 src/bin/main.c          |  5 +----
 2 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/src/bin/evisum_server.c b/src/bin/evisum_server.c
index 0834b48..d53d91b 100644
--- a/src/bin/evisum_server.c
+++ b/src/bin/evisum_server.c
@@ -13,6 +13,7 @@
 #include "src/bin/ui/ui_sensors.h"
 
 #define LISTEN_SOCKET_NAME "evisum_server"
+#define WANTED "bonjour monde"
 
 typedef struct _Evisum_Server {
    Ecore_Event_Handler *handler;
@@ -35,9 +36,10 @@ _evisum_server_server_client_connect_cb(void *data 
EINA_UNUSED, int type EINA_UN
 
    pid = ev->data + sizeof(int);
 
-   evisum_ui_activate(ui, *action, *pid);
+   ecore_con_client_send(ev->client, WANTED, strlen(WANTED));
+   ecore_con_client_flush(ev->client);
 
-   ecore_con_client_del(ev->client);
+   evisum_ui_activate(ui, *action, *pid);
 
    return ECORE_CALLBACK_RENEW;
 }
@@ -77,7 +79,7 @@ typedef struct _Evisum_Server_Client {
 } Evisum_Server_Client;
 
 static Eina_Bool
-_evisum_server_client_closed_cb(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
+_evisum_server_client_done_cb(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
 {
    Ecore_Con_Event_Server_Del *ev;
    Evisum_Server_Client *client = data;
@@ -86,25 +88,24 @@ _evisum_server_client_closed_cb(void *data, int type 
EINA_UNUSED, void *event EI
 
    if (client->srv != ev->server) return ECORE_CALLBACK_RENEW;
 
-   client->success = EINA_TRUE;
+   ecore_main_loop_quit();
 
    return ECORE_CALLBACK_DONE;
 }
 
 static Eina_Bool
-_evisum_server_client_check_timer_cb(void *data EINA_UNUSED)
+_evisum_server_client_data_cb(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
 {
-   Evisum_Server_Client *client;
-   static double total = 0.0;
-
-   client = data;
-   total += 0.1;
+   Ecore_Con_Server *srv;
+   Ecore_Con_Event_Server_Data *ev;
+   Evisum_Server_Client *client = data;
 
-   if (total < 1.0)
-     return ECORE_CALLBACK_RENEW;
+   ev = event;
+   srv = ev->server;
 
-   free(client);
+   if (client->srv != srv) return ECORE_CALLBACK_RENEW;
 
+   client->success = 1;
    ecore_main_loop_quit();
 
    return ECORE_CALLBACK_DONE;
@@ -134,11 +135,11 @@ Eina_Bool
 evisum_server_client_add(Evisum_Action action, int pid)
 {
    Evisum_Server_Client *client;
+   Eina_Bool ok;
+
    Ecore_Con_Server *srv = ecore_con_server_connect(ECORE_CON_LOCAL_USER, 
LISTEN_SOCKET_NAME, 0, NULL);
    if (!srv)
-     {
-        return EINA_FALSE;
-     }
+     return EINA_FALSE;
 
    client = calloc(1, sizeof(Evisum_Server_Client));
    if (!client) return EINA_FALSE;
@@ -148,9 +149,15 @@ evisum_server_client_add(Evisum_Action action, int pid)
    client->srv = srv;
 
    ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, 
_evisum_server_client_connect_cb, client);
-   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, 
_evisum_server_client_closed_cb, client);
-   ecore_timer_add(0.1, _evisum_server_client_check_timer_cb, client);
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, 
_evisum_server_client_done_cb, client);
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ERROR, 
_evisum_server_client_done_cb, client);
+   ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, 
_evisum_server_client_data_cb, client);
 
-   return EINA_TRUE;
+   ecore_main_loop_begin();
+
+   ok = client->success;
+   free(client);
+
+   return ok;
 }
 
diff --git a/src/bin/main.c b/src/bin/main.c
index cac1bd9..eb22992 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -53,10 +53,7 @@ main(int argc, char **argv)
 #endif
 
    if (evisum_server_client_add(action, pid))
-     {
-       ecore_main_loop_begin();
-       return 0;
-     }
+     return 0;
 
    ui = evisum_ui_init();
    if (!ui) return 1;

-- 


Reply via email to