ecore_con: migrate use of Eina_Promise to Efl_Future.

This commit is contained in:
Cedric Bail 2016-09-15 21:48:42 -07:00
parent d6935e983a
commit 95093095f3
4 changed files with 34 additions and 32 deletions

View File

@ -12,7 +12,7 @@ typedef struct _Efl_Io_Copier_Data
{ {
Efl_Io_Reader *source; Efl_Io_Reader *source;
Efl_Io_Writer *destination; Efl_Io_Writer *destination;
Eina_Promise *job; Efl_Future *job;
Eina_Binbuf *buf; Eina_Binbuf *buf;
uint8_t *read_chunk; /* TODO: method to grow Eina_Binbuf so we can expand it and read directly to that */ uint8_t *read_chunk; /* TODO: method to grow Eina_Binbuf so we can expand it and read directly to that */
Eina_Slice line_delimiter; Eina_Slice line_delimiter;
@ -68,7 +68,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd);
while (0) while (0)
static void static void
_efl_io_copier_job(void *data, void *value EINA_UNUSED) _efl_io_copier_job(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
Eo *o = data; Eo *o = data;
Efl_Io_Copier_Data *pd = efl_data_scope_get(o, MY_CLASS); Efl_Io_Copier_Data *pd = efl_data_scope_get(o, MY_CLASS);
@ -105,7 +105,7 @@ _efl_io_copier_job_schedule(Eo *o, Efl_Io_Copier_Data *pd)
if (pd->job) return; if (pd->job) return;
pd->job = efl_loop_job(efl_loop_user_loop_get(o), o); pd->job = efl_loop_job(efl_loop_user_loop_get(o), o);
eina_promise_then(pd->job, _efl_io_copier_job, NULL, o); efl_future_then(pd->job, _efl_io_copier_job, NULL, NULL, o);
} }
/* NOTE: the returned slice may be smaller than requested since the /* NOTE: the returned slice may be smaller than requested since the

View File

@ -201,7 +201,7 @@ typedef struct
Efl_Net_Http_Authentication_Method method; Efl_Net_Http_Authentication_Method method;
Eina_Bool restricted; Eina_Bool restricted;
} authentication; } authentication;
Eina_Promise *pending_close; Efl_Future *pending_close;
unsigned int in_curl_callback; unsigned int in_curl_callback;
int fd; int fd;
Eina_Error error; Eina_Error error;
@ -865,7 +865,7 @@ _efl_net_dialer_http_curl_safe_begin(Eo *o, Efl_Net_Dialer_Http_Data *pd)
} }
static void static void
_efl_net_dialer_http_curl_cleanup(void *data, void *value EINA_UNUSED) _efl_net_dialer_http_curl_cleanup(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
CURL *easy = data; CURL *easy = data;
DBG("cleanup curl=%p", easy); DBG("cleanup curl=%p", easy);
@ -873,17 +873,18 @@ _efl_net_dialer_http_curl_cleanup(void *data, void *value EINA_UNUSED)
} }
static void static void
_efl_net_dialer_http_curl_cleanup_error(void *data, Eina_Error err) _efl_net_dialer_http_curl_cleanup_error(void *data, const Efl_Event *ev)
{ {
Efl_Future_Event_Failure *failure = ev->info;
CURL *easy = data; CURL *easy = data;
DBG("cleanup curl=%p, promise error=%d '%s'", easy, err, eina_error_msg_get(err)); DBG("cleanup curl=%p, promise error=%d '%s'", easy, failure->error, eina_error_msg_get(failure->error));
curl_easy_cleanup(easy); curl_easy_cleanup(easy);
} }
static void static void
_efl_net_dialer_http_curl_safe_end(Eo *o, Efl_Net_Dialer_Http_Data *pd, CURL *easy) _efl_net_dialer_http_curl_safe_end(Eo *o, Efl_Net_Dialer_Http_Data *pd, CURL *easy)
{ {
Eina_Promise *p; Efl_Future *f;
int refs; int refs;
refs = efl_ref_get(o); refs = efl_ref_get(o);
@ -897,12 +898,13 @@ _efl_net_dialer_http_curl_safe_end(Eo *o, Efl_Net_Dialer_Http_Data *pd, CURL *ea
/* object deleted from CURL callback, CURL* easy was /* object deleted from CURL callback, CURL* easy was
* dissociated and we must delete it ourselves. * dissociated and we must delete it ourselves.
*/ */
p = efl_loop_job(ecore_main_loop_get(), easy); f = efl_loop_job(ecore_main_loop_get(), easy);
eina_promise_then(p, efl_future_then(f,
_efl_net_dialer_http_curl_cleanup, _efl_net_dialer_http_curl_cleanup,
_efl_net_dialer_http_curl_cleanup_error, _efl_net_dialer_http_curl_cleanup_error,
easy); NULL,
DBG("dialer=%p deleted from CURL callback, cleanup curl from job=%p.", o, p); easy);
DBG("dialer=%p deleted from CURL callback, cleanup curl from job=%p.", o, f);
} }
static size_t static size_t
@ -1191,7 +1193,7 @@ _efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
} }
else if (pd->pending_close) else if (pd->pending_close)
{ {
eina_promise_cancel(pd->pending_close); efl_future_cancel(pd->pending_close);
pd->pending_close = NULL; pd->pending_close = NULL;
efl_io_closer_close(o); efl_io_closer_close(o);
} }
@ -1538,7 +1540,7 @@ _efl_net_dialer_http_efl_io_writer_can_write_set(Eo *o, Efl_Net_Dialer_Http_Data
efl_event_callback_call(o, EFL_IO_WRITER_EVENT_CAN_WRITE_CHANGED, NULL); efl_event_callback_call(o, EFL_IO_WRITER_EVENT_CAN_WRITE_CHANGED, NULL);
} }
static void _efl_net_dialer_http_pending_close(void *data, void *value); static void _efl_net_dialer_http_pending_close(void *data, const Efl_Event *ev);
EOLIAN static Eina_Error EOLIAN static Eina_Error
_efl_net_dialer_http_efl_io_closer_close(Eo *o, Efl_Net_Dialer_Http_Data *pd) _efl_net_dialer_http_efl_io_closer_close(Eo *o, Efl_Net_Dialer_Http_Data *pd)
@ -1554,7 +1556,7 @@ _efl_net_dialer_http_efl_io_closer_close(Eo *o, Efl_Net_Dialer_Http_Data *pd)
if (!pd->pending_close) if (!pd->pending_close)
{ {
pd->pending_close = efl_loop_job(efl_loop_user_loop_get(o), o); pd->pending_close = efl_loop_job(efl_loop_user_loop_get(o), o);
eina_promise_then(pd->pending_close, _efl_net_dialer_http_pending_close, NULL, o); efl_future_then(pd->pending_close, _efl_net_dialer_http_pending_close, NULL, NULL, o);
DBG("dialer=%p closed from CURL callback, schedule close job=%p", o, pd->pending_close); DBG("dialer=%p closed from CURL callback, schedule close job=%p", o, pd->pending_close);
} }
return 0; return 0;
@ -1586,7 +1588,7 @@ _efl_net_dialer_http_efl_io_closer_close(Eo *o, Efl_Net_Dialer_Http_Data *pd)
} }
static void static void
_efl_net_dialer_http_pending_close(void *data, void *value EINA_UNUSED) _efl_net_dialer_http_pending_close(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
Eo *o = data; Eo *o = data;
Efl_Net_Dialer_Http_Data *pd = efl_data_scope_get(o, MY_CLASS); Efl_Net_Dialer_Http_Data *pd = efl_data_scope_get(o, MY_CLASS);

View File

@ -39,7 +39,7 @@ typedef struct _Efl_Net_Dialer_Tcp_Data
} resolve; } resolve;
struct { struct {
Ecore_Thread *thread; Ecore_Thread *thread;
Eina_Promise *timeout; Efl_Future *timeout;
} connect; } connect;
Eina_Stringshare *address_dial; Eina_Stringshare *address_dial;
Eina_Stringshare *proxy; Eina_Stringshare *proxy;
@ -203,7 +203,7 @@ _efl_net_dialer_tcp_resolved(void *data, const char *host EINA_UNUSED, const cha
} }
static void static void
_efl_net_dialer_tcp_connect_timeout(void *data, void *result EINA_UNUSED) _efl_net_dialer_tcp_connect_timeout(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
Eo *o = data; Eo *o = data;
Efl_Net_Dialer_Tcp_Data *pd = efl_data_scope_get(o, MY_CLASS); Efl_Net_Dialer_Tcp_Data *pd = efl_data_scope_get(o, MY_CLASS);
@ -292,7 +292,7 @@ _efl_net_dialer_tcp_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Tcp_Data *pd EINA_
if (pd->timeout_dial > 0.0) if (pd->timeout_dial > 0.0)
{ {
pd->connect.timeout = efl_loop_timeout(efl_loop_user_loop_get(o), pd->timeout_dial, o); pd->connect.timeout = efl_loop_timeout(efl_loop_user_loop_get(o), pd->timeout_dial, o);
eina_promise_then(pd->connect.timeout, _efl_net_dialer_tcp_connect_timeout, NULL, o); efl_future_then(pd->connect.timeout, _efl_net_dialer_tcp_connect_timeout, NULL, NULL, o);
} }
return 0; return 0;
@ -335,7 +335,7 @@ _efl_net_dialer_tcp_efl_net_dialer_timeout_dial_set(Eo *o EINA_UNUSED, Efl_Net_D
if (pd->timeout_dial > 0.0) if (pd->timeout_dial > 0.0)
{ {
pd->connect.timeout = efl_loop_timeout(efl_loop_user_loop_get(o), pd->timeout_dial, o); pd->connect.timeout = efl_loop_timeout(efl_loop_user_loop_get(o), pd->timeout_dial, o);
eina_promise_then(pd->connect.timeout, _efl_net_dialer_tcp_connect_timeout, NULL, o); efl_future_then(pd->connect.timeout, _efl_net_dialer_tcp_connect_timeout, NULL, NULL, o);
} }
} }

View File

@ -159,8 +159,8 @@ typedef struct _Efl_Net_Dialer_Websocket_Pending_Read {
typedef struct _Efl_Net_Dialer_Websocket_Data { typedef struct _Efl_Net_Dialer_Websocket_Data {
Eo *http; Eo *http;
Eina_Promise *close_timeout; Efl_Future *close_timeout;
Eina_Promise *job; Efl_Future *job;
Eina_Stringshare *address_dial; /* must rewrite ws->http, wss->https */ Eina_Stringshare *address_dial; /* must rewrite ws->http, wss->https */
Eina_Stringshare *address_remote; /* must rewrite ws->http, wss->https */ Eina_Stringshare *address_remote; /* must rewrite ws->http, wss->https */
struct { struct {
@ -545,7 +545,7 @@ _efl_net_dialer_websocket_job_dispatch_frame(Eo *o, Efl_Net_Dialer_Websocket_Dat
efl_event_callback_call(o, EFL_IO_CLOSER_EVENT_CLOSED, NULL); efl_event_callback_call(o, EFL_IO_CLOSER_EVENT_CLOSED, NULL);
if (pd->close_timeout) if (pd->close_timeout)
{ {
eina_promise_cancel(pd->close_timeout); efl_future_cancel(pd->close_timeout);
pd->close_timeout = NULL; pd->close_timeout = NULL;
} }
break; break;
@ -738,7 +738,7 @@ _efl_net_dialer_websocket_job_receive(Eo *o, Efl_Net_Dialer_Websocket_Data *pd)
} }
static void static void
_efl_net_dialer_websocket_job(void *data, void *value EINA_UNUSED) _efl_net_dialer_websocket_job(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
Eo *o = data; Eo *o = data;
Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS); Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS);
@ -769,7 +769,7 @@ _efl_net_dialer_websocket_job_schedule(Eo *o, Efl_Net_Dialer_Websocket_Data *pd)
loop = efl_loop_user_loop_get(o); loop = efl_loop_user_loop_get(o);
if (!loop) return; if (!loop) return;
pd->job = efl_loop_job(loop, o); pd->job = efl_loop_job(loop, o);
eina_promise_then(pd->job, _efl_net_dialer_websocket_job, NULL, o); efl_future_then(pd->job, _efl_net_dialer_websocket_job, NULL, NULL, o);
} }
static void static void
@ -966,7 +966,7 @@ _efl_net_dialer_websocket_efl_object_destructor(Eo *o, Efl_Net_Dialer_Websocket_
efl_event_callback_array_del(pd->http, _efl_net_dialer_websocket_http_cbs(), o); efl_event_callback_array_del(pd->http, _efl_net_dialer_websocket_http_cbs(), o);
if (pd->close_timeout) if (pd->close_timeout)
{ {
eina_promise_cancel(pd->close_timeout); efl_future_cancel(pd->close_timeout);
pd->close_timeout = NULL; pd->close_timeout = NULL;
} }
@ -975,7 +975,7 @@ _efl_net_dialer_websocket_efl_object_destructor(Eo *o, Efl_Net_Dialer_Websocket_
if (pd->job) if (pd->job)
{ {
eina_promise_cancel(pd->job); efl_future_cancel(pd->job);
pd->job = NULL; pd->job = NULL;
} }
@ -1495,7 +1495,7 @@ _efl_net_dialer_websocket_binary_send(Eo *o, Efl_Net_Dialer_Websocket_Data *pd,
} }
static void static void
_efl_net_dialer_websocket_close_request_timeout(void *data, void *result EINA_UNUSED) _efl_net_dialer_websocket_close_request_timeout(void *data, const Efl_Event *ev EINA_UNUSED)
{ {
Eo *o = data; Eo *o = data;
Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS); Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS);
@ -1514,10 +1514,10 @@ _efl_net_dialer_websocket_close_request(Eo *o, Efl_Net_Dialer_Websocket_Data *pd
EINA_SAFETY_ON_TRUE_RETURN(pd->close_requested); EINA_SAFETY_ON_TRUE_RETURN(pd->close_requested);
if (pd->close_timeout) if (pd->close_timeout)
eina_promise_cancel(pd->close_timeout); efl_future_cancel(pd->close_timeout);
pd->close_timeout = efl_loop_timeout(efl_loop_user_loop_get(o), 2.0, o); pd->close_timeout = efl_loop_timeout(efl_loop_user_loop_get(o), 2.0, o);
eina_promise_then(pd->close_timeout, _efl_net_dialer_websocket_close_request_timeout, NULL, o); efl_future_then(pd->close_timeout, _efl_net_dialer_websocket_close_request_timeout, NULL, NULL, o);
efl_io_writer_can_write_set(o, EINA_FALSE); efl_io_writer_can_write_set(o, EINA_FALSE);