ecore: move close_on_destructor to close_on_invalidate as that describe the behavior best.

Fix all use to correctly behave on invalidate.
This commit is contained in:
Cedric BAIL 2018-04-17 16:17:29 -07:00
parent 193149deb8
commit 33fd77e9e4
52 changed files with 219 additions and 165 deletions

View File

@ -321,7 +321,7 @@ _server_client_add(void *data EINA_UNUSED, const Efl_Event *event)
efl_io_copier_destination_set(efl_added, client),
efl_io_copier_timeout_inactivity_set(efl_added, timeout),
efl_event_callback_array_add(efl_added, echo_copier_cbs(), client),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
);
fprintf(stderr, "INFO: using an echo copier=%p for client %s\n",
@ -362,7 +362,7 @@ _server_client_add(void *data EINA_UNUSED, const Efl_Event *event)
efl_io_copier_destination_set(efl_added, client),
efl_io_copier_timeout_inactivity_set(efl_added, timeout),
efl_event_callback_array_add(efl_added, send_copier_cbs(), d),
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE) /* we must wait both copiers to finish before we close! */
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE) /* we must wait both copiers to finish before we close! */
);
fprintf(stderr, "INFO: using sender buffer %p with copier %p for client %s\n",
@ -379,7 +379,7 @@ _server_client_add(void *data EINA_UNUSED, const Efl_Event *event)
efl_io_copier_destination_set(efl_added, recv_buffer),
efl_io_copier_timeout_inactivity_set(efl_added, 0.0), /* we'll only set an inactivity timeout once the sender is done */
efl_event_callback_array_add(efl_added, recv_copier_cbs(), d),
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE) /* we must wait both copiers to finish before we close! */
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE) /* we must wait both copiers to finish before we close! */
);
fprintf(stderr, "INFO: using receiver buffer %p with copier %p for client %s\n",

View File

@ -176,7 +176,7 @@ _server_client_add(void *data EINA_UNUSED, const Efl_Event *event)
efl_io_copier_source_set(efl_added, client),
efl_io_copier_destination_set(efl_added, client),
efl_event_callback_array_add(efl_added, echo_copier_cbs(), client),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
);
fprintf(stderr, "INFO: using an echo copier=%p for client %s\n",

View File

@ -128,7 +128,7 @@ _server_client_add(void *data EINA_UNUSED, const Efl_Event *event)
efl_io_copier_destination_set(efl_added, ssl),
efl_io_copier_timeout_inactivity_set(efl_added, timeout),
efl_event_callback_array_add(efl_added, echo_copier_cbs(), ssl),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE) /* we want to auto-close as we have a single copier */
);
fprintf(stderr, "INFO: using an echo copier=%p for ssl %s\n",

View File

@ -227,15 +227,15 @@ _efl_io_buffered_stream_efl_io_closer_close_on_exec_set(Eo *o EINA_UNUSED, Efl_I
}
EOLIAN static Eina_Bool
_efl_io_buffered_stream_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Io_Buffered_Stream_Data *pd)
_efl_io_buffered_stream_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Io_Buffered_Stream_Data *pd)
{
return efl_io_closer_close_on_destructor_get(pd->inner_io);
return efl_io_closer_close_on_invalidate_get(pd->inner_io);
}
EOLIAN static void
_efl_io_buffered_stream_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Buffered_Stream_Data *pd, Eina_Bool value)
_efl_io_buffered_stream_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Io_Buffered_Stream_Data *pd, Eina_Bool value)
{
efl_io_closer_close_on_destructor_set(pd->inner_io, value);
efl_io_closer_close_on_invalidate_set(pd->inner_io, value);
}
EOLIAN static Eina_Error
@ -369,7 +369,7 @@ _efl_io_buffered_stream_inner_io_set(Eo *o, Efl_Io_Buffered_Stream_Data *pd, Efl
efl_io_copier_buffer_limit_set(efl_added, 4096),
efl_io_copier_source_set(efl_added, io),
efl_io_copier_destination_set(efl_added, pd->incoming),
efl_io_closer_close_on_destructor_set(efl_added, efl_io_closer_close_on_destructor_get(io)),
efl_io_closer_close_on_invalidate_set(efl_added, efl_io_closer_close_on_invalidate_get(io)),
efl_event_callback_array_add(efl_added, _efl_io_buffered_stream_receiver_cbs(), o));
EINA_SAFETY_ON_NULL_RETURN(pd->receiver);
}
@ -394,7 +394,7 @@ _efl_io_buffered_stream_inner_io_set(Eo *o, Efl_Io_Buffered_Stream_Data *pd, Efl
efl_io_copier_buffer_limit_set(efl_added, 4096),
efl_io_copier_source_set(efl_added, pd->outgoing),
efl_io_copier_destination_set(efl_added, io),
efl_io_closer_close_on_destructor_set(efl_added, efl_io_closer_close_on_destructor_get(io)),
efl_io_closer_close_on_invalidate_set(efl_added, efl_io_closer_close_on_invalidate_get(io)),
efl_event_callback_array_add(efl_added, _efl_io_buffered_stream_sender_cbs(), o));
EINA_SAFETY_ON_NULL_RETURN(pd->sender);
}

View File

@ -251,7 +251,7 @@ class Efl.Io.Buffered_Stream (Efl.Loop_Consumer, Efl.Io.Reader, Efl.Io.Writer, E
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Reader.read;
Efl.Io.Reader.can_read { get; set; }
Efl.Io.Reader.eos { get; set; }

View File

@ -15,7 +15,7 @@ typedef struct _Efl_Io_Closer_Fd_Data
int fd;
Eina_Bool close_on_exec;
Eina_Bool close_on_destructor;
Eina_Bool close_on_invalidate;
} Efl_Io_Closer_Fd_Data;
static Efl_Object *
@ -119,15 +119,15 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_get(const Eo *o, Efl_Io_Closer_Fd_
}
EOLIAN static void
_efl_io_closer_fd_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_destructor)
_efl_io_closer_fd_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_invalidate)
{
pd->close_on_destructor = close_on_destructor;
pd->close_on_invalidate = close_on_invalidate;
}
EOLIAN static Eina_Bool
_efl_io_closer_fd_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd)
_efl_io_closer_fd_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd)
{
return pd->close_on_destructor;
return pd->close_on_invalidate;
}
#include "efl_io_closer_fd.eo.c"

View File

@ -20,6 +20,6 @@ mixin Efl.Io.Closer_Fd (Efl.Io.Closer, Efl.Object) {
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
}
}

View File

@ -28,7 +28,7 @@ typedef struct _Efl_Io_Copier_Data
Eina_Bool done;
Eina_Bool force_dispatch;
Eina_Bool close_on_exec;
Eina_Bool close_on_destructor;
Eina_Bool close_on_invalidate;
} Efl_Io_Copier_Data;
static void _efl_io_copier_write(Eo *o, Efl_Io_Copier_Data *pd);
@ -433,7 +433,7 @@ _efl_io_copier_source_set(Eo *o, Efl_Io_Copier_Data *pd, Efl_Io_Reader *source)
if (efl_isa(pd->source, EFL_IO_CLOSER_MIXIN))
{
efl_io_closer_close_on_exec_set(pd->source, efl_io_closer_close_on_exec_get(o));
efl_io_closer_close_on_destructor_set(pd->source, efl_io_closer_close_on_destructor_get(o));
efl_io_closer_close_on_invalidate_set(pd->source, efl_io_closer_close_on_invalidate_get(o));
efl_event_callback_add(pd->source, EFL_IO_CLOSER_EVENT_CLOSED,
_efl_io_copier_source_closed, o);
}
@ -512,7 +512,7 @@ _efl_io_copier_destination_set(Eo *o, Efl_Io_Copier_Data *pd, Efl_Io_Writer *des
if (efl_isa(pd->destination, EFL_IO_CLOSER_MIXIN))
{
efl_io_closer_close_on_exec_set(pd->destination, efl_io_closer_close_on_exec_get(o));
efl_io_closer_close_on_destructor_set(pd->destination, efl_io_closer_close_on_destructor_get(o));
efl_io_closer_close_on_invalidate_set(pd->destination, efl_io_closer_close_on_invalidate_get(o));
efl_event_callback_add(pd->destination, EFL_IO_CLOSER_EVENT_CLOSED,
_efl_io_copier_destination_closed, o);
}
@ -806,7 +806,7 @@ _efl_io_copier_efl_object_constructor(Eo *o, Efl_Io_Copier_Data *pd)
{
pd->buf = eina_binbuf_new();
pd->close_on_exec = EINA_TRUE;
pd->close_on_destructor = EINA_TRUE;
pd->close_on_invalidate = EINA_TRUE;
pd->timeout_inactivity = 0.0;
EINA_SAFETY_ON_NULL_RETURN_VAL(pd->buf, NULL);
@ -836,17 +836,9 @@ _efl_io_copier_efl_object_finalize(Eo *o, Efl_Io_Copier_Data *pd)
}
EOLIAN static void
_efl_io_copier_efl_object_destructor(Eo *o, Efl_Io_Copier_Data *pd)
_efl_io_copier_efl_object_invalidate(Eo *o, Efl_Io_Copier_Data *pd EINA_UNUSED)
{
_COPIER_DBG(o, pd);
if (pd->job)
eina_future_cancel(pd->job);
if (pd->inactivity_timer)
eina_future_cancel(pd->inactivity_timer);
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -857,6 +849,20 @@ _efl_io_copier_efl_object_destructor(Eo *o, Efl_Io_Copier_Data *pd)
efl_io_copier_source_set(o, NULL);
efl_io_copier_destination_set(o, NULL);
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_io_copier_efl_object_destructor(Eo *o, Efl_Io_Copier_Data *pd)
{
_COPIER_DBG(o, pd);
if (pd->job)
eina_future_cancel(pd->job);
if (pd->inactivity_timer)
eina_future_cancel(pd->inactivity_timer);
efl_destructor(efl_super(o, MY_CLASS));
if (pd->buf)
@ -895,22 +901,22 @@ _efl_io_copier_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED, Efl_Io_C
}
EOLIAN static void
_efl_io_copier_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Copier_Data *pd, Eina_Bool close_on_destructor)
_efl_io_copier_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Io_Copier_Data *pd, Eina_Bool close_on_invalidate)
{
if (pd->close_on_destructor == close_on_destructor) return;
pd->close_on_destructor = close_on_destructor;
if (pd->close_on_invalidate == close_on_invalidate) return;
pd->close_on_invalidate = close_on_invalidate;
if (pd->source && efl_isa(pd->source, EFL_IO_CLOSER_MIXIN))
efl_io_closer_close_on_destructor_set(pd->source, close_on_destructor);
efl_io_closer_close_on_invalidate_set(pd->source, close_on_invalidate);
if (pd->destination && efl_isa(pd->destination, EFL_IO_CLOSER_MIXIN))
efl_io_closer_close_on_destructor_set(pd->destination, close_on_destructor);
efl_io_closer_close_on_invalidate_set(pd->destination, close_on_invalidate);
}
EOLIAN static Eina_Bool
_efl_io_copier_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Io_Copier_Data *pd)
_efl_io_copier_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Io_Copier_Data *pd)
{
return pd->close_on_destructor;
return pd->close_on_invalidate;
}
#include "efl_io_copier.eo.c"

View File

@ -57,7 +57,7 @@ class Efl.Io.Copier (Efl.Loop_Consumer, Efl.Io.Closer) {
@.source and @.destination if they implement those interfaces.
@Efl.Io.Closer.close_on_exec and
@Efl.Io.Closer.close_on_destructor are respected and applied to
@Efl.Io.Closer.close_on_invalidate are respected and applied to
both source and destination. Both default to $true.
@since 1.19
@ -107,7 +107,7 @@ class Efl.Io.Copier (Efl.Loop_Consumer, Efl.Io.Closer) {
If the source object implements @Efl.Io.Closer and it's
not closed, it will be closed when the copier itself
is. This may happen, for example, when the copier is
deleted and @Efl.Io.Closer.close_on_destructor is $true
deleted and @Efl.Io.Closer.close_on_invalidate is $true
(the default).
Common source classes are @Efl.Io.Buffer (if fixed data
@ -166,7 +166,7 @@ class Efl.Io.Copier (Efl.Loop_Consumer, Efl.Io.Closer) {
If the destination object implements @Efl.Io.Closer and it's
not closed, it will be closed when the copier itself
is. This may happen, for example, when the copier is
deleted and @Efl.Io.Closer.close_on_destructor is $true
deleted and @Efl.Io.Closer.close_on_invalidate is $true
(the default).
Common destination classes are @Efl.Io.Buffer (better to
@ -370,11 +370,12 @@ class Efl.Io.Copier (Efl.Loop_Consumer, Efl.Io.Closer) {
implements {
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Object.finalize;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
}
}

View File

@ -112,7 +112,7 @@ _efl_io_file_efl_object_constructor(Eo *o, Efl_Io_File_Data *pd)
o = efl_constructor(efl_super(o, MY_CLASS));
efl_io_closer_close_on_exec_set(o, EINA_TRUE);
efl_io_closer_close_on_destructor_set(o, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(o, EINA_TRUE);
efl_io_positioner_fd_set(o, -1);
efl_io_sizer_fd_set(o, -1);
efl_io_reader_fd_set(o, -1);
@ -125,7 +125,7 @@ _efl_io_file_efl_object_constructor(Eo *o, Efl_Io_File_Data *pd)
EOLIAN static void
_efl_io_file_efl_object_destructor(Eo *o, Efl_Io_File_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);

View File

@ -2,7 +2,7 @@ class Efl.Io.File (Efl.Loop_Fd, Efl.File, Efl.Io.Reader_Fd, Efl.Io.Writer_Fd, Ef
[[File access (open, close, read, write, lseek, ftruncate)
@Efl.Io.Closer.close_on_exec and
@Efl.Io.Closer.close_on_destructor are respected and default to
@Efl.Io.Closer.close_on_invalidate are respected and default to
$true. @Efl.Io.Closer.close_on_exec.set sets flag O_CLOEXEC.
@since 1.19

View File

@ -686,18 +686,18 @@ _ecore_con_eet_base_efl_object_constructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
EOLIAN static void
_ecore_con_eet_base_efl_object_destructor(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
{
efl_destructor(efl_super(obj, ECORE_CON_EET_BASE_CLASS));
eet_data_descriptor_free(pd->edd);
eet_data_descriptor_free(pd->matching);
eina_hash_free(pd->data_callbacks);
eina_hash_free(pd->raw_data_callbacks);
efl_destructor(efl_super(obj, ECORE_CON_EET_BASE_CLASS));
}
EOLIAN static Efl_Object *
_ecore_con_eet_base_efl_object_finalize(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
{
if (pd->server) return obj;
if (pd->server) return efl_finalize(efl_super(obj, ECORE_CON_EET_BASE_CLASS));
eet_data_descriptor_free(pd->edd);
eet_data_descriptor_free(pd->matching);

View File

@ -258,11 +258,11 @@ _ecore_con_client_socket_close(Ecore_Con_Client *cl)
{
if (!cl->socket) return;
/* socket may remain alive due other references, we don't own it */
efl_event_callback_array_del(cl->socket, _ecore_con_client_socket_cbs(), cl);
if (!efl_io_closer_closed_get(cl->socket))
efl_io_closer_close(cl->socket);
/* socket may remain alive due other references, we don't own it */
efl_event_callback_array_del(cl->socket, _ecore_con_client_socket_cbs(), cl);
}
static void
@ -278,7 +278,7 @@ _ecore_con_client_free(Ecore_Con_Client *cl)
if (cl->socket)
{
Eo *parent, *inner_socket = efl_io_buffered_stream_inner_io_get(cl->socket);
efl_event_callback_array_del(cl->socket, _ecore_con_client_socket_cbs(), cl);
if (efl_isa(inner_socket, EFL_NET_SOCKET_SSL_CLASS))
efl_event_callback_array_del(inner_socket, _ecore_con_client_socket_ssl_cbs(), cl);
@ -843,11 +843,9 @@ _ecore_con_client_ssl_upgrade_job(void *data, const Eina_Value v,
efl_parent_set(inner_socket, socket);
efl_unref(inner_socket); /* socket keeps it */
cl->socket = socket;
efl_io_closer_close_on_exec_set(socket, EINA_TRUE);
efl_io_closer_close_on_destructor_set(socket, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(socket, EINA_TRUE);
efl_event_callback_array_del(tcp_socket, _ecore_con_client_socket_cbs(), cl);
efl_event_callback_array_add(socket, _ecore_con_client_socket_cbs(), cl);
efl_event_callback_array_add(inner_socket, _ecore_con_client_socket_ssl_cbs(), cl);
@ -1626,7 +1624,6 @@ _ecore_con_server_server_ssl_job(void *data, const Eina_Value v,
efl_parent_set(inner_server, server);
efl_unref(ssl_ctx); /* inner_server keeps it */
efl_unref(inner_server); /* server keeps it */
if (!_ecore_con_server_server_set(svr, server))
goto error_serve;
@ -1852,7 +1849,7 @@ _ecore_con_server_dialer_set(Ecore_Con_Server *svr, Eo *dialer)
svr->dialer = dialer;
efl_io_closer_close_on_exec_set(dialer, EINA_TRUE);
efl_io_closer_close_on_destructor_set(dialer, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(dialer, EINA_TRUE);
efl_io_buffered_stream_timeout_inactivity_set(dialer, svr->timeout);
efl_event_callback_array_add(dialer, _ecore_con_server_dialer_cbs(), svr);
@ -1993,7 +1990,6 @@ _ecore_con_server_dialer_ssl_job(void *data, const Eina_Value v,
efl_parent_set(inner_dialer, dialer);
efl_unref(ssl_ctx); /* inner_dialer keeps it */
efl_unref(inner_dialer); /* dialer keeps it */
if (!_ecore_con_server_dialer_set(svr, dialer))
goto error_dial;
@ -2092,11 +2088,10 @@ _ecore_con_server_dialer_ssl_upgrade_job(void *data, const Eina_Value v,
efl_parent_set(inner_dialer, dialer);
efl_unref(ssl_ctx); /* inner_dialer keeps it */
efl_unref(inner_dialer); /* dialer keeps it */
svr->dialer = dialer;
efl_io_closer_close_on_exec_set(dialer, EINA_TRUE);
efl_io_closer_close_on_destructor_set(dialer, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(dialer, EINA_TRUE);
efl_event_callback_array_del(tcp_dialer, _ecore_con_server_dialer_cbs(), svr);
efl_event_callback_array_add(dialer, _ecore_con_server_dialer_cbs(), svr);

View File

@ -922,7 +922,7 @@ ecore_con_url_post(Ecore_Con_Url *url_con,
buffer = efl_add(EFL_IO_BUFFER_CLASS, efl_loop_get(url_con->dialer),
efl_name_set(efl_added, "post-buffer"),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_exec_set(efl_added, EINA_TRUE));
EINA_SAFETY_ON_NULL_GOTO(buffer, error_buffer);
@ -938,7 +938,7 @@ ecore_con_url_post(Ecore_Con_Url *url_con,
efl_name_set(efl_added, "send-copier"),
efl_io_copier_source_set(efl_added, buffer),
efl_io_copier_destination_set(efl_added, url_con->dialer),
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_event_callback_array_add(efl_added, _ecore_con_url_copier_cbs(), url_con));
EINA_SAFETY_ON_NULL_GOTO(copier, error_copier);
@ -1179,7 +1179,7 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_con,
efl_name_set(efl_added, "upload-file"),
efl_file_set(efl_added, filename, NULL),
efl_io_file_flags_set(efl_added, O_RDONLY),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_exec_set(efl_added, EINA_TRUE));
EINA_SAFETY_ON_NULL_GOTO(file, error_file);
@ -1187,7 +1187,7 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_con,
efl_name_set(efl_added, "send-copier"),
efl_io_copier_source_set(efl_added, file),
efl_io_copier_destination_set(efl_added, url_con->dialer),
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_event_callback_array_add(efl_added, _ecore_con_url_copier_cbs(), url_con));
EINA_SAFETY_ON_NULL_GOTO(copier, error_copier);

View File

@ -218,7 +218,7 @@ typedef struct
Eina_Bool connected;
Eina_Bool closed;
Eina_Bool close_on_exec;
Eina_Bool close_on_destructor;
Eina_Bool close_on_invalidate;
Eina_Bool pending_eos;
Eina_Bool eos;
Eina_Bool can_read;
@ -1129,7 +1129,7 @@ _efl_net_dialer_http_efl_object_constructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
}
EOLIAN static void
_efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
_efl_net_dialer_http_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Http_Data *pd)
{
if (pd->libproxy_thread)
{
@ -1149,7 +1149,7 @@ _efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
efl_io_closer_close(o);
efl_event_thaw(o);
}
else if (efl_io_closer_close_on_destructor_get(o) &&
else if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -1157,6 +1157,12 @@ _efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
efl_event_thaw(o);
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
{
efl_net_dialer_http_response_headers_clear(o);
if (pd->easy)
@ -1806,15 +1812,15 @@ _efl_net_dialer_http_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED, Ef
}
EOLIAN static void
_efl_net_dialer_http_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Http_Data *pd, Eina_Bool close_on_destructor)
_efl_net_dialer_http_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Http_Data *pd, Eina_Bool close_on_invalidate)
{
pd->close_on_destructor = close_on_destructor;
pd->close_on_invalidate = close_on_invalidate;
}
EOLIAN static Eina_Bool
_efl_net_dialer_http_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Net_Dialer_Http_Data *pd)
_efl_net_dialer_http_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Net_Dialer_Http_Data *pd)
{
return pd->close_on_destructor;
return pd->close_on_invalidate;
}
EOLIAN static Eina_Error

View File

@ -393,6 +393,7 @@ class Efl.Net.Dialer_Http (Efl.Loop_Consumer, Efl.Net.Dialer, Efl.Io.Sizer) {
implements {
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Net.Dialer.dial;
Efl.Net.Dialer.address_dial { get; set; }
@ -409,7 +410,7 @@ class Efl.Net.Dialer_Http (Efl.Loop_Consumer, Efl.Net.Dialer, Efl.Io.Sizer) {
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Sizer.resize;
Efl.Io.Sizer.size { get; }
}

View File

@ -48,6 +48,7 @@ static void
_efl_net_dialer_simple_inner_io_connected(void *data, const Efl_Event *event)
{
Eo *o = data;
efl_event_callback_call(o, EFL_NET_DIALER_EVENT_CONNECTED, event->info);
}
@ -87,19 +88,10 @@ _efl_net_dialer_simple_efl_object_finalize(Eo *o, Efl_Net_Dialer_Simple_Data *pd
}
EOLIAN static void
_efl_net_dialer_simple_efl_object_destructor(Eo *o, Efl_Net_Dialer_Simple_Data *pd)
_efl_net_dialer_simple_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Simple_Data *pd EINA_UNUSED)
{
Eo *inner_io;
if (pd->inner_class) pd->inner_class = NULL;
eina_stringshare_replace(&pd->proxy_url, NULL);
if (pd->line_delimiter.mem)
{
free((void *)pd->line_delimiter.mem);
pd->line_delimiter.mem = NULL;
}
inner_io = efl_io_buffered_stream_inner_io_get(o);
if (inner_io)
{
@ -108,6 +100,21 @@ _efl_net_dialer_simple_efl_object_destructor(Eo *o, Efl_Net_Dialer_Simple_Data *
efl_parent_set(inner_io, NULL);
}
efl_invalidate(efl_super(o, EFL_NET_DIALER_SIMPLE_CLASS));
}
EOLIAN static void
_efl_net_dialer_simple_efl_object_destructor(Eo *o, Efl_Net_Dialer_Simple_Data *pd)
{
if (pd->inner_class) pd->inner_class = NULL;
eina_stringshare_replace(&pd->proxy_url, NULL);
if (pd->line_delimiter.mem)
{
free((void *)pd->line_delimiter.mem);
pd->line_delimiter.mem = NULL;
}
efl_destructor(efl_super(o, EFL_NET_DIALER_SIMPLE_CLASS));
}

View File

@ -69,6 +69,7 @@ class Efl.Net.Dialer_Simple (Efl.Net.Socket_Simple, Efl.Net.Dialer) {
implements {
Efl.Object.finalize;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Io.Buffered_Stream.inner_io { set; }
Efl.Net.Dialer.dial;

View File

@ -98,13 +98,7 @@ _efl_net_dialer_ssl_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Ssl_Data *pd)
{
pd->sock = NULL;
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_dialer_ssl_efl_object_destructor(Eo *o, Efl_Net_Dialer_Ssl_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -118,7 +112,7 @@ _efl_net_dialer_ssl_efl_object_destructor(Eo *o, Efl_Net_Dialer_Ssl_Data *pd)
pd->ssl_ctx = NULL;
}
efl_destructor(efl_super(o, MY_CLASS));
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void

View File

@ -68,7 +68,6 @@ class Efl.Net.Dialer_Ssl (Efl.Net.Socket_Ssl, Efl.Net.Dialer) {
Efl.Object.constructor;
Efl.Object.finalize;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Net.Dialer.dial;
Efl.Net.Dialer.address_dial { get; }
Efl.Net.Dialer.connected { get; set; }

View File

@ -53,9 +53,9 @@ _efl_net_dialer_tcp_efl_object_constructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd EI
}
EOLIAN static void
_efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd)
_efl_net_dialer_tcp_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Tcp_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -69,6 +69,12 @@ _efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd)
pd->connect.thread = NULL;
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
eina_stringshare_replace(&pd->address_dial, NULL);

View File

@ -24,6 +24,7 @@ class Efl.Net.Dialer_Tcp (Efl.Net.Socket_Tcp, Efl.Net.Dialer) {
implements {
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Net.Dialer.dial;
Efl.Net.Dialer.address_dial { get; set; }

View File

@ -54,9 +54,9 @@ _efl_net_dialer_udp_efl_object_constructor(Eo *o, Efl_Net_Dialer_Udp_Data *pd EI
}
EOLIAN static void
_efl_net_dialer_udp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Udp_Data *pd)
_efl_net_dialer_udp_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Udp_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -70,6 +70,12 @@ _efl_net_dialer_udp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Udp_Data *pd)
pd->resolver.thread = NULL;
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_dialer_udp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Udp_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
eina_stringshare_replace(&pd->address_dial, NULL);

View File

@ -27,6 +27,7 @@ class Efl.Net.Dialer_Udp (Efl.Net.Socket_Udp, Efl.Net.Dialer) {
implements {
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Net.Dialer.dial;
Efl.Net.Dialer.address_dial { get; set; }

View File

@ -43,9 +43,9 @@ _efl_net_dialer_unix_efl_object_constructor(Eo *o, Efl_Net_Dialer_Unix_Data *pd
}
EOLIAN static void
_efl_net_dialer_unix_efl_object_destructor(Eo *o, Efl_Net_Dialer_Unix_Data *pd)
_efl_net_dialer_unix_efl_object_invalidate(Eo *o, Efl_Net_Dialer_Unix_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -59,6 +59,12 @@ _efl_net_dialer_unix_efl_object_destructor(Eo *o, Efl_Net_Dialer_Unix_Data *pd)
pd->connect.thread = NULL;
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_dialer_unix_efl_object_destructor(Eo *o, Efl_Net_Dialer_Unix_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
eina_stringshare_replace(&pd->address_dial, NULL);

View File

@ -12,6 +12,7 @@ class Efl.Net.Dialer_Unix (Efl.Net.Socket_Unix, Efl.Net.Dialer) {
implements {
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Net.Dialer.dial;
Efl.Net.Dialer.address_dial { get; set; }

View File

@ -1374,15 +1374,15 @@ _efl_net_dialer_websocket_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSE
}
EOLIAN static void
_efl_net_dialer_websocket_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Websocket_Data *pd, Eina_Bool close_on_destructor)
_efl_net_dialer_websocket_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Websocket_Data *pd, Eina_Bool close_on_invalidate)
{
efl_io_closer_close_on_destructor_set(pd->http, close_on_destructor);
efl_io_closer_close_on_invalidate_set(pd->http, close_on_invalidate);
}
EOLIAN static Eina_Bool
_efl_net_dialer_websocket_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Net_Dialer_Websocket_Data *pd)
_efl_net_dialer_websocket_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Net_Dialer_Websocket_Data *pd)
{
return efl_io_closer_close_on_destructor_get(pd->http);
return efl_io_closer_close_on_invalidate_get(pd->http);
}
EOLIAN static void

View File

@ -331,6 +331,6 @@ class Efl.Net.Dialer_Websocket (Efl.Loop_Consumer, Efl.Net.Dialer) {
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
}
}

View File

@ -161,10 +161,8 @@ _efl_net_server_simple_efl_object_invalidate(Eo *o, Efl_Net_Server_Simple_Data *
if (pd->inner_server)
{
efl_event_callback_array_del(pd->inner_server, _efl_net_server_simple_inner_server_cbs(), o);
if (efl_parent_get(pd->inner_server) == o)
efl_parent_set(pd->inner_server, NULL);
efl_unref(pd->inner_server);
efl_xunref(pd->inner_server, o);
pd->inner_server = NULL;
}
@ -232,7 +230,7 @@ _efl_net_server_simple_inner_server_set(Eo *o, Efl_Net_Server_Simple_Data *pd, E
EINA_SAFETY_ON_TRUE_RETURN(pd->inner_server != NULL);
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(server, EFL_NET_SERVER_INTERFACE));
pd->inner_server = efl_ref(server);
pd->inner_server = efl_xref(server, o);
efl_event_callback_array_add(server, _efl_net_server_simple_inner_server_cbs(), o);
DBG("%p inner_server=%p (%s)", o, server, efl_class_name_get(efl_class_get(server)));
}

View File

@ -89,7 +89,7 @@ _efl_net_server_ssl_efl_net_server_fd_client_add(Eo *o, Efl_Net_Server_Ssl_Data
client_tcp = efl_add(EFL_NET_SOCKET_TCP_CLASS, o,
efl_io_closer_close_on_exec_set(efl_added, efl_net_server_fd_close_on_exec_get(o)),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_loop_fd_set(efl_added, client_fd));
if (!client_tcp)
{

View File

@ -253,7 +253,7 @@ _efl_net_server_tcp_efl_net_server_fd_client_add(Eo *o, Efl_Net_Server_Tcp_Data
{
Eo *client = efl_add(EFL_NET_SOCKET_TCP_CLASS, o,
efl_io_closer_close_on_exec_set(efl_added, efl_net_server_fd_close_on_exec_get(o)),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_loop_fd_set(efl_added, client_fd));
if (!client)
{

View File

@ -369,7 +369,7 @@ _efl_net_server_udp_efl_net_server_fd_process_incoming_data(Eo *o, Efl_Net_Serve
}
client = efl_add(EFL_NET_SERVER_UDP_CLIENT_CLASS, o,
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_net_socket_address_local_set(efl_added, efl_net_server_address_get(o)),
_efl_net_server_udp_client_init(efl_added, fd, (const struct sockaddr *)&addr, addrlen, str),

View File

@ -42,7 +42,7 @@ typedef struct _Efl_Net_Server_Udp_Client_Data
struct sockaddr *addr_remote;
socklen_t addr_remote_len;
SOCKET fd;
Eina_Bool close_on_destructor;
Eina_Bool close_on_invalidate;
Eina_Bool eos;
Eina_Bool can_read;
Eina_Bool can_write;
@ -71,9 +71,9 @@ _efl_net_server_udp_client_cleanup(Efl_Net_Server_Udp_Client_Data *pd)
}
EOLIAN static void
_efl_net_server_udp_client_efl_object_destructor(Eo *o, Efl_Net_Server_Udp_Client_Data *pd)
_efl_net_server_udp_client_efl_object_invalidate(Eo *o, Efl_Net_Server_Udp_Client_Data *pd EINA_UNUSED)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -81,6 +81,12 @@ _efl_net_server_udp_client_efl_object_destructor(Eo *o, Efl_Net_Server_Udp_Clien
efl_event_thaw(o);
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_server_udp_client_efl_object_destructor(Eo *o, Efl_Net_Server_Udp_Client_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
_efl_net_server_udp_client_cleanup(pd);
@ -269,15 +275,15 @@ _efl_net_server_udp_client_efl_io_closer_closed_get(const Eo *o EINA_UNUSED, Efl
}
EOLIAN static void
_efl_net_server_udp_client_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Client_Data *pd, Eina_Bool close_on_destructor)
_efl_net_server_udp_client_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Client_Data *pd, Eina_Bool close_on_invalidate)
{
pd->close_on_destructor = close_on_destructor;
pd->close_on_invalidate = close_on_invalidate;
}
EOLIAN static Eina_Bool
_efl_net_server_udp_client_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Client_Data *pd)
_efl_net_server_udp_client_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Client_Data *pd)
{
return pd->close_on_destructor;
return pd->close_on_invalidate;
}
EOLIAN static Eina_Bool

View File

@ -26,10 +26,11 @@ class Efl.Net.Server_Udp_Client (Efl.Object, Efl.Net.Socket) {
implements {
Efl.Object.finalize;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Reader.can_read { get; set; }
Efl.Io.Reader.eos { get; set; }

View File

@ -246,7 +246,7 @@ _efl_net_server_unix_efl_net_server_fd_client_add(Eo *o, Efl_Net_Server_Unix_Dat
{
Eo *client = efl_add(EFL_NET_SOCKET_UNIX_CLASS, o,
efl_io_closer_close_on_exec_set(efl_added, efl_net_server_fd_close_on_exec_get(o)),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_loop_fd_set(efl_added, client_fd));
if (!client)
{

View File

@ -231,7 +231,7 @@ _efl_net_server_windows_client_new(Eo *o, Efl_Net_Server_Windows_Data *pd)
}
pd->next_client = efl_add(EFL_NET_SOCKET_WINDOWS_CLASS, o,
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE));
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE));
if (!pd->next_client)
{
err = ENOMEM;

View File

@ -78,7 +78,7 @@ _efl_net_socket_fd_efl_object_constructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
o = efl_constructor(efl_super(o, MY_CLASS));
efl_io_closer_close_on_exec_set(o, EINA_TRUE);
efl_io_closer_close_on_destructor_set(o, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(o, EINA_TRUE);
efl_io_reader_fd_set(o, SOCKET_TO_LOOP_FD(INVALID_SOCKET));
efl_io_writer_fd_set(o, SOCKET_TO_LOOP_FD(INVALID_SOCKET));
efl_io_closer_fd_set(o, SOCKET_TO_LOOP_FD(INVALID_SOCKET));
@ -87,9 +87,9 @@ _efl_net_socket_fd_efl_object_constructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
}
EOLIAN static void
_efl_net_socket_fd_efl_object_destructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
_efl_net_socket_fd_efl_object_invalidate(Eo *o, Efl_Net_Socket_Fd_Data *pd EINA_UNUSED)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -97,6 +97,12 @@ _efl_net_socket_fd_efl_object_destructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
efl_event_thaw(o);
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_socket_fd_efl_object_destructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
eina_stringshare_replace(&pd->address_local, NULL);

View File

@ -5,7 +5,7 @@ class Efl.Net.Socket_Fd (Efl.Loop_Fd, Efl.Io.Reader_Fd, Efl.Io.Writer_Fd, Efl.Io
created by an dialer or server.
@Efl.Io.Closer.close_on_exec and
@Efl.Io.Closer.close_on_destructor are respected and default to
@Efl.Io.Closer.close_on_invalidate are respected and default to
$true.
@since 1.19
@ -32,6 +32,7 @@ class Efl.Net.Socket_Fd (Efl.Loop_Fd, Efl.Io.Reader_Fd, Efl.Io.Writer_Fd, Efl.Io
implements {
Efl.Object.finalize;
Efl.Object.constructor;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Loop_Fd.fd { set; }
Efl.Io.Closer.close;

View File

@ -445,9 +445,9 @@ _efl_net_socket_ssl_efl_object_constructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd)
}
EOLIAN static void
_efl_net_socket_ssl_efl_object_destructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd)
_efl_net_socket_ssl_efl_object_invalidate(Eo *o, Efl_Net_Socket_Ssl_Data *pd EINA_UNUSED)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -455,6 +455,12 @@ _efl_net_socket_ssl_efl_object_destructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd)
efl_event_thaw(o);
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_socket_ssl_efl_object_destructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
pd->torndown = EINA_TRUE;
@ -617,15 +623,15 @@ _efl_net_socket_ssl_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED, Efl
}
EOLIAN static void
_efl_net_socket_ssl_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Net_Socket_Ssl_Data *pd, Eina_Bool close_on_destructor)
_efl_net_socket_ssl_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Net_Socket_Ssl_Data *pd, Eina_Bool close_on_invalidate)
{
if (pd->sock) efl_io_closer_close_on_destructor_set(pd->sock, close_on_destructor);
if (pd->sock) efl_io_closer_close_on_invalidate_set(pd->sock, close_on_invalidate);
}
EOLIAN static Eina_Bool
_efl_net_socket_ssl_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Net_Socket_Ssl_Data *pd)
_efl_net_socket_ssl_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Net_Socket_Ssl_Data *pd)
{
return pd->sock && efl_io_closer_close_on_destructor_get(pd->sock);
return pd->sock && efl_io_closer_close_on_invalidate_get(pd->sock);
}
EOLIAN static const char *

View File

@ -84,12 +84,13 @@ class Efl.Net.Socket_Ssl (Efl.Loop_Consumer, Efl.Net.Socket) {
implements {
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Object.finalize;
Efl.Object.invalidate;
Efl.Object.destructor;
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Reader.read;
Efl.Io.Reader.can_read { get; set; }
Efl.Io.Reader.eos { get; set; }

View File

@ -47,7 +47,7 @@ typedef struct _Efl_Net_Socket_Windows_Data
Eina_Bool can_write;
Eina_Bool io_started;
Eina_Bool close_on_exec;
Eina_Bool close_on_destructor;
Eina_Bool close_on_invalidate;
} Efl_Net_Socket_Windows_Data;
struct _Efl_Net_Socket_Windows_Operation
@ -634,9 +634,9 @@ _efl_net_socket_windows_efl_object_constructor(Eo *o, Efl_Net_Socket_Windows_Dat
}
EOLIAN static void
_efl_net_socket_windows_efl_object_destructor(Eo *o, Efl_Net_Socket_Windows_Data *pd)
_efl_net_socket_windows_efl_object_invalidate(Eo *o, Efl_Net_Socket_Windows_Data *pd)
{
if (efl_io_closer_close_on_destructor_get(o) &&
if (efl_io_closer_close_on_invalidate_get(o) &&
(!efl_io_closer_closed_get(o)))
{
efl_event_freeze(o);
@ -644,6 +644,12 @@ _efl_net_socket_windows_efl_object_destructor(Eo *o, Efl_Net_Socket_Windows_Data
efl_event_thaw(o);
}
efl_invalidate(efl_super(o, MY_CLASS));
}
EOLIAN static void
_efl_net_socket_windows_efl_object_destructor(Eo *o, Efl_Net_Socket_Windows_Data *pd)
{
efl_destructor(efl_super(o, MY_CLASS));
eina_stringshare_replace(&pd->address_local, NULL);
@ -748,15 +754,15 @@ _efl_net_socket_windows_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED,
}
EOLIAN static void
_efl_net_socket_windows_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Net_Socket_Windows_Data *pd, Eina_Bool close_on_destructor)
_efl_net_socket_windows_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Net_Socket_Windows_Data *pd, Eina_Bool close_on_invalidate)
{
pd->close_on_destructor = close_on_destructor;
pd->close_on_invalidate = close_on_invalidate;
}
EOLIAN static Eina_Bool
_efl_net_socket_windows_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Net_Socket_Windows_Data *pd)
_efl_net_socket_windows_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Net_Socket_Windows_Data *pd)
{
return pd->close_on_destructor;
return pd->close_on_invalidate;
}
EOLIAN static Eina_Error

View File

@ -14,7 +14,7 @@ class Efl.Net.Socket_Windows (Efl.Loop_Consumer, Efl.Net.Socket) {
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Reader.read;
Efl.Io.Reader.can_read { get; set; }
Efl.Io.Reader.eos { get; set; }

View File

@ -230,14 +230,14 @@ ecore_file_download_full(const char *url,
efl_file_set(efl_added, dst, NULL),
efl_io_file_flags_set(efl_added, O_WRONLY | O_CREAT),
efl_io_closer_close_on_exec_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_io_file_mode_set(efl_added, 0644));
EINA_SAFETY_ON_NULL_GOTO(job->output, error_output);
job->copier = efl_add(EFL_IO_COPIER_CLASS, loop,
efl_io_copier_source_set(efl_added, job->input),
efl_io_copier_destination_set(efl_added, job->output),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_event_callback_array_add(efl_added, ecore_file_download_copier_cbs(), job));
EINA_SAFETY_ON_NULL_GOTO(job->copier, error_copier);

View File

@ -745,21 +745,21 @@ ecore_ipc_server_connect(Ecore_Ipc_Type type, char *name, int port, const void *
goto error_dialer;
}
efl_io_closer_close_on_destructor_set(svr->dialer.dialer, EINA_TRUE);
efl_io_closer_close_on_invalidate_set(svr->dialer.dialer, EINA_TRUE);
efl_event_callback_array_add(svr->dialer.dialer, _ecore_ipc_dialer_cbs(), svr);
svr->dialer.input = efl_add(EFL_IO_QUEUE_CLASS, loop);
EINA_SAFETY_ON_NULL_GOTO(svr->dialer.input, error);
svr->dialer.send_copier = efl_add(EFL_IO_COPIER_CLASS, loop,
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_io_copier_source_set(efl_added, svr->dialer.input),
efl_io_copier_destination_set(efl_added, svr->dialer.dialer),
efl_event_callback_array_add(efl_added, _ecore_ipc_dialer_copier_cbs(), svr));
EINA_SAFETY_ON_NULL_GOTO(svr->dialer.send_copier, error);
svr->dialer.recv_copier = efl_add(EFL_IO_COPIER_CLASS, loop,
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_io_copier_source_set(efl_added, svr->dialer.dialer),
efl_event_callback_array_add(efl_added, _ecore_ipc_dialer_copier_cbs(), svr),
efl_event_callback_add(efl_added, EFL_IO_COPIER_EVENT_DATA, _ecore_ipc_dialer_copier_data, svr));
@ -1343,14 +1343,14 @@ _ecore_ipc_server_client_add(void *data, const Efl_Event *event)
EINA_SAFETY_ON_NULL_GOTO(cl->socket.input, error);
cl->socket.send_copier = efl_add(EFL_IO_COPIER_CLASS, loop,
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_io_copier_source_set(efl_added, cl->socket.input),
efl_io_copier_destination_set(efl_added, cl->socket.socket),
efl_event_callback_array_add(efl_added, _ecore_ipc_client_socket_copier_cbs(), cl));
EINA_SAFETY_ON_NULL_GOTO(cl->socket.send_copier, error);
cl->socket.recv_copier = efl_add(EFL_IO_COPIER_CLASS, loop,
efl_io_closer_close_on_destructor_set(efl_added, EINA_FALSE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_FALSE),
efl_io_copier_source_set(efl_added, cl->socket.socket),
efl_event_callback_array_add(efl_added, _ecore_ipc_client_socket_copier_cbs(), cl),
efl_event_callback_add(efl_added, EFL_IO_COPIER_EVENT_DATA, _ecore_ipc_client_socket_copier_data, cl));

View File

@ -356,12 +356,12 @@ _efl_io_buffer_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED, Efl_Io_B
}
EOLIAN static void
_efl_io_buffer_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Buffer_Data *pd EINA_UNUSED, Eina_Bool close_on_destructor EINA_UNUSED)
_efl_io_buffer_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Io_Buffer_Data *pd EINA_UNUSED, Eina_Bool close_on_invalidate EINA_UNUSED)
{
}
EOLIAN static Eina_Bool
_efl_io_buffer_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Io_Buffer_Data *pd EINA_UNUSED)
_efl_io_buffer_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Io_Buffer_Data *pd EINA_UNUSED)
{
return EINA_TRUE;
}

View File

@ -153,7 +153,7 @@ class Efl.Io.Buffer (Efl.Object, Efl.Io.Reader, Efl.Io.Writer, Efl.Io.Closer, Ef
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
Efl.Io.Sizer.resize;
Efl.Io.Sizer.size { get; }
Efl.Io.Positioner.seek;

View File

@ -59,16 +59,16 @@ mixin Efl.Io.Closer {
}
}
@property close_on_destructor {
[[If true will automatically close() on object destructor.
@property close_on_invalidate {
[[If true will automatically close() on object invalidate.
If the object was deleted without close, this property
will state whenever it should be closed or not.
If the object was disconnected from its parent (including the main loop) without close,
this property will state whenever it should be closed or not.
]]
get @pure_virtual { }
set @pure_virtual { }
values {
close_on_destructor: bool; [[$true if close on destructor, $false otherwise]]
close_on_invalidate: bool; [[$true if close on invalidate, $false otherwise]]
}
}
}

View File

@ -483,12 +483,12 @@ _efl_io_queue_efl_io_closer_close_on_exec_get(const Eo *o EINA_UNUSED, Efl_Io_Qu
}
EOLIAN static void
_efl_io_queue_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Queue_Data *pd EINA_UNUSED, Eina_Bool close_on_destructor EINA_UNUSED)
_efl_io_queue_efl_io_closer_close_on_invalidate_set(Eo *o EINA_UNUSED, Efl_Io_Queue_Data *pd EINA_UNUSED, Eina_Bool close_on_invalidate EINA_UNUSED)
{
}
EOLIAN static Eina_Bool
_efl_io_queue_efl_io_closer_close_on_destructor_get(const Eo *o EINA_UNUSED, Efl_Io_Queue_Data *pd EINA_UNUSED)
_efl_io_queue_efl_io_closer_close_on_invalidate_get(const Eo *o EINA_UNUSED, Efl_Io_Queue_Data *pd EINA_UNUSED)
{
return EINA_TRUE;
}

View File

@ -116,6 +116,6 @@ class Efl.Io.Queue (Efl.Object, Efl.Io.Reader, Efl.Io.Writer, Efl.Io.Closer) {
Efl.Io.Closer.close;
Efl.Io.Closer.closed { get; }
Efl.Io.Closer.close_on_exec { get; set; }
Efl.Io.Closer.close_on_destructor { get; set; }
Efl.Io.Closer.close_on_invalidate { get; set; }
}
}

View File

@ -945,7 +945,7 @@ _efl_ui_image_remote_copier_cancel(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
Eo *copier = sd->remote.copier;
if (!copier) return;
/* copier is flagged as close_on_destructor, thus:
/* copier is flagged as close_on_invalidate, thus:
* efl_del()
* -> efl_io_closer_close()
* -> "done" event
@ -1056,7 +1056,7 @@ _efl_ui_image_download(Eo *obj, Efl_Ui_Image_Data *sd, const char *url, const ch
sd->remote.copier = efl_add(EFL_IO_COPIER_CLASS, obj,
efl_io_copier_source_set(efl_added, dialer),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_event_callback_array_add(efl_added, _efl_ui_image_remote_copier_cbs(), obj));
EINA_SAFETY_ON_NULL_GOTO(sd->remote.copier, error_copier);
eina_stringshare_replace(&sd->remote.key, key);

View File

@ -2221,7 +2221,7 @@ _efl_ui_image_zoomable_remote_copier_cancel(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zo
Eo *copier = sd->remote.copier;
if (!copier) return;
/* copier is flagged as close_on_destructor, thus:
/* copier is flagged as close_on_invalidate, thus:
* efl_del()
* -> efl_io_closer_close()
* -> "done" event
@ -2323,7 +2323,7 @@ _efl_ui_image_zoomable_download(Eo *obj, Efl_Ui_Image_Zoomable_Data *sd, const c
sd->remote.copier = efl_add(EFL_IO_COPIER_CLASS, obj,
efl_io_copier_source_set(efl_added, dialer),
efl_io_closer_close_on_destructor_set(efl_added, EINA_TRUE),
efl_io_closer_close_on_invalidate_set(efl_added, EINA_TRUE),
efl_event_callback_array_add(efl_added, _efl_ui_image_zoomable_remote_copier_cbs(), obj));
EINA_SAFETY_ON_NULL_GOTO(sd->remote.copier, error_copier);

View File

@ -70,8 +70,6 @@ _eet_data_cb(void *data EINA_UNUSED, Ecore_Con_Reply *reply, const char *protoco
char toSend[] = SRV_MSG;
ECE_Test *received = value;
fprintf(stderr, "id: %d\n message: %s\n",
received->id, received->message);
fail_if(strcmp(received->message, CLI_MSG));
fail_if(received->id != 1);