cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=947edc84717a5780993e91e00ee971c88d224f48
commit 947edc84717a5780993e91e00ee971c88d224f48 Author: Srivardhan Hebbar <sri.heb...@samsung.com> Date: Mon Jun 29 14:21:13 2015 +0200 ecore_con: eoify ecore_con_eet functions. Summary: Depends on D2602 Made all functions eo. Reviewers: cedric Reviewed By: cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2695 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/ecore_con/Ecore_Con_Eet.h | 2 +- src/lib/ecore_con/ecore_con_eet.c | 228 ++++++++++++++++++-------------- src/lib/ecore_con/ecore_con_eet_base.eo | 80 +++++++++++ 3 files changed, 208 insertions(+), 102 deletions(-) diff --git a/src/lib/ecore_con/Ecore_Con_Eet.h b/src/lib/ecore_con/Ecore_Con_Eet.h index a85948c..0257b7f 100644 --- a/src/lib/ecore_con/Ecore_Con_Eet.h +++ b/src/lib/ecore_con/Ecore_Con_Eet.h @@ -254,7 +254,7 @@ EAPI void ecore_con_eet_data_set(Ecore_Con_Eet *ece, const void *data); * @param ece An Ecore_Con_Eet object. * @return The data attached to the Ecore_Con_Eet object. */ -EAPI void *ecore_con_eet_data_get(Ecore_Con_Eet *ece); +EAPI const void *ecore_con_eet_data_get(Ecore_Con_Eet *ece); /** * Get the Ecore_Con_Eet object corresponding to the Ecore_Con_Reply object. diff --git a/src/lib/ecore_con/ecore_con_eet.c b/src/lib/ecore_con/ecore_con_eet.c index d2bbd28..0783c2c 100644 --- a/src/lib/ecore_con/ecore_con_eet.c +++ b/src/lib/ecore_con/ecore_con_eet.c @@ -20,6 +20,7 @@ #include "Ecore_Con_Eet.h" #define ECORE_CON_EET_RAW_MAGIC 0xDEAD007 +#define ECORE_CON_EET_DATA_KEY "ecore_con_eet_data_key" typedef struct _Ecore_Con_Eet_Base_Data Ecore_Con_Eet_Base_Data; typedef struct _Ecore_Con_Eet_Server_Obj_Data Ecore_Con_Eet_Server_Obj_Data; @@ -100,8 +101,6 @@ struct _Ecore_Con_Eet_Base_Data Eina_Hash *data_callbacks; Eina_Hash *raw_data_callbacks; - - const void *data; }; static void @@ -462,6 +461,118 @@ _ecore_con_eet_client_data(void *data, int type EINA_UNUSED, Ecore_Con_Event_Ser /************* * Generated API */ + +EOLIAN static void +_ecore_con_eet_base_data_callback_set(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, const char *name, Ecore_Con_Eet_Data_Cb func, const void *data) +{ + Ecore_Con_Eet_Data *eced; + + eced = calloc(1, sizeof (Ecore_Con_Eet_Data)); + if (!eced) return; + + eced->func = func; + eced->data = data; + eced->name = eina_stringshare_add(name); + + eina_hash_direct_add(pd->data_callbacks, eced->name, eced); +} + +EOLIAN static void +_ecore_con_eet_base_raw_data_callback_set(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, const char *name, Ecore_Con_Eet_Raw_Data_Cb func, const void *data) +{ + Ecore_Con_Eet_Raw_Data *ecerd; + + ecerd = calloc(1, sizeof (Ecore_Con_Eet_Raw_Data)); + if (!ecerd) return; + + ecerd->func = func; + ecerd->data = data; + ecerd->name = eina_stringshare_add(name); + + eina_hash_direct_add(pd->raw_data_callbacks, ecerd->name, ecerd); +} + +EOLIAN static void +_ecore_con_eet_base_data_callback_del(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, const char *name) +{ + eina_hash_del(pd->data_callbacks, name, NULL); +} + +EOLIAN static void +_ecore_con_eet_base_raw_data_callback_del(Eo *obj, Ecore_Con_Eet_Base_Data *pd, const char *name) +{ + Ecore_Con_Eet_Client_Obj_Data *eced = eo_data_scope_get(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS); + + if (eo_isa(obj, ECORE_CON_EET_CLIENT_OBJ_CLASS) && + eced->r->buffer_handler && + !strcmp(eced->r->buffer_handler->name, name)) + { + eced->r->buffer_handler = NULL; + free(eced->r->buffer); + eced->r->buffer = (void *)1; + } + eina_hash_del(pd->raw_data_callbacks, name, NULL); +} + +EOLIAN static void +_ecore_con_eet_base_send(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, Ecore_Con_Reply *reply, const char *name, void *value) +{ + Ecore_Con_Eet_Protocol protocol; + + if (!reply) return; + + protocol.type = name; + protocol.data = value; + + eet_connection_send(reply->econn, pd->edd, &protocol, NULL); +} + +EOLIAN static void +_ecore_con_eet_base_raw_send(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, Ecore_Con_Reply *reply, const char *protocol_name, const char *section, void *value, unsigned int length) +{ + unsigned int protocol[4]; + unsigned int protocol_length; + unsigned int section_length; + unsigned int size; + char *tmp; + + if (!reply) return; + if (!protocol_name) return; + if (!section) return; + + protocol_length = strlen(protocol_name) + 1; + if (protocol_length == 1) return; + section_length = strlen(section) + 1; + + protocol[0] = htonl(ECORE_CON_EET_RAW_MAGIC); + protocol[1] = htonl(protocol_length); + protocol[2] = htonl(section_length); + protocol[3] = htonl(length); + + size = sizeof (protocol) + protocol_length + section_length; + tmp = alloca(size); + memcpy(tmp, protocol, sizeof (protocol)); + memcpy(tmp + sizeof (protocol), protocol_name, protocol_length); + memcpy(tmp + sizeof (protocol) + protocol_length, section, section_length); + + if (reply->client) + { + ecore_con_client_send(reply->client, tmp, size); + ecore_con_client_send(reply->client, value, length); + } + else + { + ecore_con_server_send(pd->server, tmp, size); + ecore_con_server_send(pd->server, value, length); + } +} + +EOLIAN static void +_ecore_con_eet_base_register(Eo *obj EINA_UNUSED, Ecore_Con_Eet_Base_Data *pd, const char *name, Eet_Data_Descriptor *edd) +{ + EET_DATA_DESCRIPTOR_ADD_MAPPING(pd->matching, name, edd); +} + EOLIAN static Eo_Base * _ecore_con_eet_server_obj_eo_base_constructor(Eo *obj, Ecore_Con_Eet_Server_Obj_Data *pd EINA_UNUSED) { @@ -635,69 +746,31 @@ ecore_con_eet_server_free(Ecore_Con_Eet *r) EAPI void ecore_con_eet_register(Ecore_Con_Eet *ece, const char *name, Eet_Data_Descriptor *edd) { - Ecore_Con_Eet_Base_Data *eceb = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - - EET_DATA_DESCRIPTOR_ADD_MAPPING(eceb->matching, name, edd); + eo_do(ece, ecore_con_eet_base_register(name, edd)); } EAPI void ecore_con_eet_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Data_Cb func, const void *data) { - Ecore_Con_Eet_Base_Data *eceb = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - Ecore_Con_Eet_Data *eced; - - if (!ece) return; - - eced = calloc(1, sizeof (Ecore_Con_Eet_Data)); - if (!eced) return; - - eced->func = func; - eced->data = data; - eced->name = eina_stringshare_add(name); - - eina_hash_direct_add(eceb->data_callbacks, eced->name, eced); + eo_do(ece, ecore_con_eet_base_data_callback_set(name, func, data)); } EAPI void ecore_con_eet_data_callback_del(Ecore_Con_Eet *ece, const char *name) { - Ecore_Con_Eet_Base_Data *eceb = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - - if (!eceb) return; - eina_hash_del(eceb->data_callbacks, name, NULL); + eo_do(ece, ecore_con_eet_base_data_callback_del(name)); } EAPI void ecore_con_eet_raw_data_callback_add(Ecore_Con_Eet *ece, const char *name, Ecore_Con_Eet_Raw_Data_Cb func, const void *data) { - Ecore_Con_Eet_Base_Data *eced = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - Ecore_Con_Eet_Raw_Data *ecerd; - - ecerd = calloc(1, sizeof (Ecore_Con_Eet_Raw_Data)); - if (!ecerd) return; - - ecerd->func = func; - ecerd->data = data; - ecerd->name = eina_stringshare_add(name); - - eina_hash_direct_add(eced->raw_data_callbacks, ecerd->name, ecerd); + eo_do(ece, ecore_con_eet_base_raw_data_callback_set(name, func, data)); } EAPI void ecore_con_eet_raw_data_callback_del(Ecore_Con_Eet *ece, const char *name) { - Ecore_Con_Eet_Base_Data *base_data = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - Ecore_Con_Eet_Client_Obj_Data *eced = eo_data_scope_get(ece, ECORE_CON_EET_CLIENT_OBJ_CLASS); - - if (eo_isa(ece, ECORE_CON_EET_CLIENT_OBJ_CLASS) && - eced->r->buffer_handler && - !strcmp(eced->r->buffer_handler->name, name)) - { - eced->r->buffer_handler = NULL; - free(eced->r->buffer); - eced->r->buffer = (void *)1; - } - eina_hash_del(base_data->raw_data_callbacks, name, NULL); + eo_do(ece, ecore_con_eet_base_raw_data_callback_del(name)); } EAPI void @@ -843,18 +916,15 @@ ecore_con_eet_server_disconnect_callback_del(Ecore_Con_Eet *ece, Ecore_Con_Eet_S EAPI void ecore_con_eet_data_set(Ecore_Con_Eet *ece, const void *data) { - Ecore_Con_Eet_Base_Data *eced = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - if (!eced) return; - - eced->data = data; + eo_do(ece,eo_key_data_set(ECORE_CON_EET_DATA_KEY, data)); } -EAPI void * +EAPI const void * ecore_con_eet_data_get(Ecore_Con_Eet *ece) { - Ecore_Con_Eet_Base_Data *eced = eo_data_scope_get(ece, ECORE_CON_EET_BASE_CLASS); - if (!eced) return NULL; - return (void *)eced->data; + const void *temp; + + return eo_do_ret(ece, temp, eo_key_data_get(ECORE_CON_EET_DATA_KEY)); } EAPI Ecore_Con_Eet * @@ -867,59 +937,15 @@ ecore_con_eet_reply(Ecore_Con_Reply *reply) EAPI void ecore_con_eet_send(Ecore_Con_Reply *reply, const char *name, void *value) { - Ecore_Con_Eet_Protocol protocol; - Ecore_Con_Eet_Base_Data *eced; - - if (!reply) return; - - eced = eo_data_scope_get(reply->ece, ECORE_CON_EET_BASE_CLASS); - - protocol.type = name; - protocol.data = value; - - eet_connection_send(reply->econn, eced->edd, &protocol, NULL); + eo_do(reply->ece, ecore_con_eet_base_send(reply, name, value)); } EAPI void ecore_con_eet_raw_send(Ecore_Con_Reply *reply, const char *protocol_name, const char *section, void *value, unsigned int length) { - unsigned int protocol[4]; - unsigned int protocol_length; - unsigned int section_length; - unsigned int size; - Ecore_Con_Eet_Base_Data *ece_obj; - char *tmp; - - if (!reply) return; - if (!protocol_name) return; - if (!section) return; - - ece_obj = eo_data_scope_get(reply->ece, ECORE_CON_EET_BASE_CLASS); - protocol_length = strlen(protocol_name) + 1; - if (protocol_length == 1) return; - section_length = strlen(section) + 1; - - protocol[0] = htonl(ECORE_CON_EET_RAW_MAGIC); - protocol[1] = htonl(protocol_length); - protocol[2] = htonl(section_length); - protocol[3] = htonl(length); - - size = sizeof (protocol) + protocol_length + section_length; - tmp = alloca(size); - memcpy(tmp, protocol, sizeof (protocol)); - memcpy(tmp + sizeof (protocol), protocol_name, protocol_length); - memcpy(tmp + sizeof (protocol) + protocol_length, section, section_length); - - if (reply->client) - { - ecore_con_client_send(reply->client, tmp, size); - ecore_con_client_send(reply->client, value, length); - } - else - { - ecore_con_server_send(ece_obj->server, tmp, size); - ecore_con_server_send(ece_obj->server, value, length); - } + eo_do(reply->ece, + ecore_con_eet_base_raw_send(reply, protocol_name, section, value, + length)); } #include "ecore_con_eet_base.eo.c" diff --git a/src/lib/ecore_con/ecore_con_eet_base.eo b/src/lib/ecore_con/ecore_con_eet_base.eo index 5b65b8e..9902a05 100644 --- a/src/lib/ecore_con/ecore_con_eet_base.eo +++ b/src/lib/ecore_con/ecore_con_eet_base.eo @@ -14,6 +14,86 @@ class Ecore.Con.Eet.Base (Eo.Base) { data: Ecore_Con_Server*; } } + @property data_callback { + /*@ + * A callback function which should be called when data is + * received by ecore_con_eet_object. + */ + set { + } + values { + name: const (char) *; /*@ The name of the eet stream. */ + func: Ecore_Con_Eet_Data_Cb; /*@ The callback function. */ + data: const (void) *; /*@ The data (if any) that should be + * passed to callback function. */ + } + } + @property raw_data_callback { + /*@ + * A callback function which should be calledn when raw data + * is received by ecore_con_eet_object. + */ + set { + } + values { + name: const (char) *; /*@ The name of the eet stream. */ + func: Ecore_Con_Eet_Raw_Data_Cb; /*@ The callback function. */ + data: const (void) *; /* The data (if any) that should be + * passed to callback function. */ + } + } + data_callback_del { + /*@ + * Function to delete the @data_callback. + */ + params { + name: const (char) *; /*@ The name of the eet stream. */ + } + } + raw_data_callback_del { + /*@ + * Function to delete the @raw_data_callback. + */ + params { + name: const (char) *; /*@ The name of the eet stream. */ + } + } + register { + /*@ + * Function to register a @Eet_Data_Descriptor to the + * ecore_con_eet object. + */ + legacy: ecore_con_eet; + params { + name: const (char) *; /*@ The name of the eet stream. */ + edd: Eet_Data_Descriptor *; /*@ The Eet_Data_Descriptor that + * is to be registered. */ + } + } + send { + /*@ + * Function to send data. + */ + params { + reply: Ecore_Con_Reply *; /*@ Contains the ecore_con_eet object + to which the data has to be sent. */ + name: const (char) *; /*@ The name of the eet stream. */ + value: void *; /*@ Actual data */ + } + } + raw_send { + /*@ + * Function to send raw data. + */ + params { + reply: Ecore_Con_Reply *; /*@ Contains the ecore_con_eet object + to which the data has to be sent. */ + protocol_name: const (char) *; /*@ The name of the eet stream. */ + section: const (char) *; /*@ Name of section in the eet descriptor. */ + value: void *; /*@ The value of the section. */ + length: uint; /*@ The length of the data that is being sent. */ + } + } } implements { Eo.Base.constructor; --