barbieri pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e6939ebc90187eb00660f2f3632fa007fa1baa49
commit e6939ebc90187eb00660f2f3632fa007fa1baa49 Author: Gustavo Sverzut Barbieri <barbi...@profusion.mobi> Date: Wed Nov 23 00:01:14 2016 -0200 ecore_ipc: refactor client data processing in its own function. When we move to efl_net we'll reuse the same function to process incoming data, thus refactor the code in their own function so it can be reused. --- src/lib/ecore_ipc/ecore_ipc.c | 48 +++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index 296d614..d999d58 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c @@ -975,28 +975,23 @@ _ecore_ipc_event_server_del(void *data EINA_UNUSED, int ev_type EINA_UNUSED, voi msg._member = _ecore_ipc_ddlt_int(d, cl->prev.i._member, md); static Eina_Bool -_ecore_ipc_event_client_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *ev) +ecore_ipc_client_data_process(Ecore_Ipc_Client *cl, void *data, int size, Eina_Bool *stolen) { - Ecore_Con_Event_Client_Data *e; - Ecore_Ipc_Server *svr; - - e = ev; - svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client)); - if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW; - /* handling code here */ - { - Ecore_Ipc_Client *cl; + /* use e->data and e->size to reduce diff to original code */ + struct { void *data; int size; } _e = { data, size }, *e = &_e; + Ecore_Ipc_Server *svr = ecore_ipc_client_server_get(cl); + *stolen = EINA_FALSE; + if (1) + { /* keep same identation as original code to help verification */ Ecore_Ipc_Msg_Head msg; int offset = 0; unsigned char *buf; - cl = ecore_con_client_data_get(e->client); - if (!cl->buf) { cl->buf_size = e->size; cl->buf = e->data; - e->data = NULL; /* take it out of the old event */ + *stolen = EINA_TRUE; } else { @@ -1126,6 +1121,33 @@ _ecore_ipc_event_client_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, vo cl->buf_size -= offset; } } + + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool +_ecore_ipc_event_client_data(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *ev) +{ + Ecore_Con_Event_Client_Data *e; + Ecore_Ipc_Server *svr; + + e = ev; + svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client)); + if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW; + /* handling code here */ + { + Ecore_Ipc_Client *cl; + Eina_Bool stolen; + + cl = ecore_con_client_data_get(e->client); + + ecore_ipc_client_data_process(cl, e->data, e->size, &stolen); + if (stolen) + { + e->data = NULL; + e->size = 0; + } + } return ECORE_CALLBACK_CANCEL; } --