This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository evisum.

View the commit online.

commit 038c68d8e64329b8bad607af96cb9002fcc25056
Author: Carsten Haitzler (Rasterman) <[email protected]>
AuthorDate: Sat Mar 28 15:44:54 2026 +0000

    use ecore-ipc for evisum sevrer - does much more for you
    
    ecore-con is lower level stream only. ecore-ipc is what you want for
    real messaging back and forth if you dont have to speak an existing
    defined protocol by someone else (ie its ecore-ipc to ecore-ipc).
---
 meson.build             |  3 +-
 src/bin/evisum_server.c | 77 +++++++++++++++++++++++++++----------------------
 2 files changed, 45 insertions(+), 35 deletions(-)

diff --git a/meson.build b/meson.build
index 46dbab8..59eb602 100644
--- a/meson.build
+++ b/meson.build
@@ -11,7 +11,8 @@ host_os = host_machine.system()
 
 cc = meson.get_compiler('c')
 
-deps = dependency('elementary', version: efl_version)
+deps = [ dependency('elementary', version: efl_version),
+         dependency('ecore-ipc', version: efl_version), ]
 
 deps_os = declare_dependency(link_args : [] )
 if host_os == 'freebsd' or host_os == 'openbsd' or host_os == 'dragonfly'
diff --git a/src/bin/evisum_server.c b/src/bin/evisum_server.c
index 377d432..71dc72d 100644
--- a/src/bin/evisum_server.c
+++ b/src/bin/evisum_server.c
@@ -4,7 +4,7 @@
 
 #include <Eina.h>
 #include <Ecore.h>
-#include <Ecore_Con.h>
+#include <Ecore_Ipc.h>
 #include "evisum_server.h"
 #include "src/bin/ui/evisum_ui.h"
 #include "evisum_config.h"
@@ -14,28 +14,36 @@
 
 typedef struct _Evisum_Server {
     Ecore_Event_Handler *handler;
-    Ecore_Con_Server *srv;
+    Ecore_Ipc_Server *srv;
 } Evisum_Server;
 
+typedef struct _Evisum_Msg_Hello {
+    Evisum_Action action;
+    int           pid;
+} Evisum_Msg_Hello;
+
 static void *_evisum_server = NULL;
 
 static Eina_Bool
 _evisum_server_server_client_data_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) {
-    Ecore_Con_Event_Client_Data *ev;
-    Evisum_Action *action;
-    Evisum_Ui *ui;
-    int *pid;
+    Ecore_Ipc_Event_Client_Data *ev = event;
+    Evisum_Ui *ui = data;
 
-    ev = event;
-    action = ""
-    ui = data;
+    if ((ev->major == 0) && (ev->minor == 0) &&
+        (ev->size == sizeof(Evisum_Msg_Hello))) {
+      // if this is the hello message
+      Evisum_Msg_Hello *hello = ev->data;
 
-    pid = ev->data + sizeof(int);
+      evisum_ui_activate(ui, hello->action, hello->pid);
+      ecore_ipc_client_send(ev->client,
+                            0, 1, // <- major=0, minor=1 == response to hello
+                            0, 0, 0, // ref, ref_to, response <- not used
+                            WANTED, strlen(WANTED) + 1);
+      // yes data can just be a string, but guaranteedd to be all there on
+      // the other end. also send the nul byte at the string end to be nice
+      // so it's terminated without needing a copy
+    }
 
-    ecore_con_client_send(ev->client, WANTED, strlen(WANTED));
-    ecore_con_client_flush(ev->client);
-
-    evisum_ui_activate(ui, *action, *pid);
 
     return ECORE_CALLBACK_RENEW;
 }
@@ -46,7 +54,7 @@ evisum_server_shutdown(void) {
     if (!server) return;
 
     ecore_event_handler_del(server->handler);
-    ecore_con_server_del(server->srv);
+    ecore_ipc_server_del(server->srv);
     free(server);
 }
 
@@ -56,17 +64,17 @@ evisum_server_init(void *data) {
     Evisum_Server *server = calloc(1, sizeof(Evisum_Server));
     if (!server) return 0;
 
-    server->srv = ecore_con_server_add(ECORE_CON_LOCAL_USER, LISTEN_SOCKET_NAME, 0, NULL);
+    server->srv = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, LISTEN_SOCKET_NAME, 0, NULL);
     if (!server->srv) return 0;
 
-    server->handler = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, _evisum_server_server_client_data_cb, ui);
+    server->handler = ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA, _evisum_server_server_client_data_cb, ui);
     _evisum_server = server;
 
     return 1;
 }
 
 typedef struct _Evisum_Server_Client {
-    Ecore_Con_Server *srv;
+    Ecore_Ipc_Server *srv;
     Evisum_Action action;
     int pid;
     Eina_Bool success;
@@ -74,7 +82,7 @@ typedef struct _Evisum_Server_Client {
 
 static Eina_Bool
 _evisum_server_client_done_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) {
-    Ecore_Con_Event_Server_Del *ev;
+    Ecore_Ipc_Event_Server_Del *ev;
     Evisum_Server_Client *client = data;
 
     ev = event;
@@ -88,8 +96,8 @@ _evisum_server_client_done_cb(void *data, int type EINA_UNUSED, void *event EINA
 
 static Eina_Bool
 _evisum_server_client_data_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) {
-    Ecore_Con_Server *srv;
-    Ecore_Con_Event_Server_Data *ev;
+    Ecore_Ipc_Server *srv;
+    Ecore_Ipc_Event_Server_Data *ev;
     Evisum_Server_Client *client = data;
 
     ev = event;
@@ -105,19 +113,22 @@ _evisum_server_client_data_cb(void *data, int type EINA_UNUSED, void *event EINA
 
 static Eina_Bool
 _evisum_server_client_connect_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) {
-    Ecore_Con_Event_Server_Add *ev;
-    Ecore_Con_Server *srv;
+    Ecore_Ipc_Event_Server_Add *ev;
+    Ecore_Ipc_Server *srv;
     Evisum_Server_Client *client;
+    Evisum_Msg_Hello hello;
 
     ev = event;
     srv = ev->server;
     client = data;
 
     if (client->srv != srv) return ECORE_CALLBACK_RENEW;
-
-    ecore_con_server_send(srv, &client->action, sizeof(Evisum_Action));
-    ecore_con_server_send(srv, &client->pid, sizeof(int));
-    ecore_con_server_flush(srv);
+    hello.action = ""
+    hello.pid = client->pid;
+    ecore_ipc_server_send(srv,
+                          0, 0, // major, minor <- opcodes, 0, 0 == hello
+                          0, 0, 0, // ref, ref_to, response <- not used
+                          &hello, sizeof(hello));
 
     return ECORE_CALLBACK_DONE;
 }
@@ -125,10 +136,10 @@ _evisum_server_client_connect_cb(void *data, int type EINA_UNUSED, void *event E
 Eina_Bool
 evisum_server_client_add(Evisum_Action action, int pid) {
     Evisum_Server_Client *client;
-    Ecore_Event_Handler *handler[4];
+    Ecore_Event_Handler *handler[3];
     Eina_Bool ok;
 
-    Ecore_Con_Server *srv = ecore_con_server_connect(ECORE_CON_LOCAL_USER, LISTEN_SOCKET_NAME, 0, NULL);
+    Ecore_Ipc_Server *srv = ecore_ipc_server_connect(ECORE_IPC_LOCAL_USER, LISTEN_SOCKET_NAME, 0, NULL);
     if (!srv) return 0;
 
     client = calloc(1, sizeof(Evisum_Server_Client));
@@ -138,17 +149,15 @@ evisum_server_client_add(Evisum_Action action, int pid) {
     client->pid = pid;
     client->srv = srv;
 
-    handler[0] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, _evisum_server_client_connect_cb, client);
-    handler[1] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, _evisum_server_client_done_cb, client);
-    handler[2] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ERROR, _evisum_server_client_done_cb, client);
-    handler[3] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, _evisum_server_client_data_cb, client);
+    handler[0] = ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_ADD, _evisum_server_client_connect_cb, client);
+    handler[1] = ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DEL, _evisum_server_client_done_cb, client);
+    handler[2] = ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DATA, _evisum_server_client_data_cb, client);
 
     ecore_main_loop_begin();
 
     ecore_event_handler_del(handler[0]);
     ecore_event_handler_del(handler[1]);
     ecore_event_handler_del(handler[2]);
-    ecore_event_handler_del(handler[3]);
 
     ok = client->success;
     free(client);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to