barbieri pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=42923bc29ebffe7f7b27f35f31d0acea0b56ae99

commit 42923bc29ebffe7f7b27f35f31d0acea0b56ae99
Author: Gustavo Sverzut Barbieri <[email protected]>
Date:   Mon Dec 19 17:19:45 2016 -0200

    efl_net_server_udp_client: make error easier to understand.
    
    UDP client has no socket on its own, so it can't be marked as
    close-on-exec, however failing to resolve the method is bad as
    confuses the user.
    
    Instead provide a method that checks if the setting is different from
    parent, in such case provide a meaningful message. Otherwise just be
    quiet.
---
 src/lib/ecore_con/efl_net_server_udp_client.c  | 18 ++++++++++++++++++
 src/lib/ecore_con/efl_net_server_udp_client.eo |  1 +
 2 files changed, 19 insertions(+)

diff --git a/src/lib/ecore_con/efl_net_server_udp_client.c 
b/src/lib/ecore_con/efl_net_server_udp_client.c
index db89c3e..1a4a46e 100644
--- a/src/lib/ecore_con/efl_net_server_udp_client.c
+++ b/src/lib/ecore_con/efl_net_server_udp_client.c
@@ -274,6 +274,24 @@ 
_efl_net_server_udp_client_efl_io_closer_close_on_destructor_get(Eo *o EINA_UNUS
    return pd->close_on_destructor;
 }
 
+EOLIAN static Eina_Bool
+_efl_net_server_udp_client_efl_io_closer_close_on_exec_set(Eo *o, 
Efl_Net_Server_Udp_Client_Data *pd EINA_UNUSED, Eina_Bool close_on_exec)
+{
+   if (efl_net_server_fd_close_on_exec_get(efl_parent_get(o)) != close_on_exec)
+     {
+        ERR("Efl.Net.Server.Udp.Client close-on-exec must be the same as the 
server setting, no file descriptor is created for each client!");
+        return EINA_FALSE;
+     }
+
+   return EINA_TRUE;
+}
+
+EOLIAN static Eina_Bool
+_efl_net_server_udp_client_efl_io_closer_close_on_exec_get(Eo *o, 
Efl_Net_Server_Udp_Client_Data *pd EINA_UNUSED)
+{
+   return efl_net_server_fd_close_on_exec_get(efl_parent_get(o));
+}
+
 EOLIAN static void
 _efl_net_server_udp_client_efl_net_socket_address_local_set(Eo *o EINA_UNUSED, 
Efl_Net_Server_Udp_Client_Data *pd, const char *address)
 {
diff --git a/src/lib/ecore_con/efl_net_server_udp_client.eo 
b/src/lib/ecore_con/efl_net_server_udp_client.eo
index 77a6fe1..9cf3d6f 100644
--- a/src/lib/ecore_con/efl_net_server_udp_client.eo
+++ b/src/lib/ecore_con/efl_net_server_udp_client.eo
@@ -30,6 +30,7 @@ class Efl.Net.Server.Udp.Client (Efl.Object, Efl.Net.Socket) {
         Efl.Io.Closer.close;
         Efl.Io.Closer.closed.get;
         Efl.Io.Closer.close_on_destructor;
+        Efl.Io.Closer.close_on_exec;
         Efl.Io.Reader.can_read;
         Efl.Io.Reader.eos;
         Efl.Io.Reader.read;

-- 


Reply via email to