{
Efl_Io_Reader *source;
Efl_Io_Writer *destination;
- Eina_Promise *job;
+ Efl_Future *job;
Eina_Binbuf *buf;
uint8_t *read_chunk; /* TODO: method to grow Eina_Binbuf so we can expand it and read directly to that */
Eina_Slice line_delimiter;
while (0)
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;
Efl_Io_Copier_Data *pd = efl_data_scope_get(o, MY_CLASS);
if (pd->job) return;
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
Efl_Net_Http_Authentication_Method method;
Eina_Bool restricted;
} authentication;
- Eina_Promise *pending_close;
+ Efl_Future *pending_close;
unsigned int in_curl_callback;
int fd;
Eina_Error error;
}
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;
DBG("cleanup curl=%p", easy);
}
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;
- 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);
}
static void
_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;
refs = efl_ref_get(o);
/* object deleted from CURL callback, CURL* easy was
* dissociated and we must delete it ourselves.
*/
- p = efl_loop_job(ecore_main_loop_get(), easy);
- eina_promise_then(p,
- _efl_net_dialer_http_curl_cleanup,
- _efl_net_dialer_http_curl_cleanup_error,
- easy);
- DBG("dialer=%p deleted from CURL callback, cleanup curl from job=%p.", o, p);
+ f = efl_loop_job(ecore_main_loop_get(), easy);
+ efl_future_then(f,
+ _efl_net_dialer_http_curl_cleanup,
+ _efl_net_dialer_http_curl_cleanup_error,
+ NULL,
+ easy);
+ DBG("dialer=%p deleted from CURL callback, cleanup curl from job=%p.", o, f);
}
static size_t
}
else if (pd->pending_close)
{
- eina_promise_cancel(pd->pending_close);
+ efl_future_cancel(pd->pending_close);
pd->pending_close = NULL;
efl_io_closer_close(o);
}
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
_efl_net_dialer_http_efl_io_closer_close(Eo *o, Efl_Net_Dialer_Http_Data *pd)
if (!pd->pending_close)
{
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);
}
return 0;
}
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;
Efl_Net_Dialer_Http_Data *pd = efl_data_scope_get(o, MY_CLASS);
} resolve;
struct {
Ecore_Thread *thread;
- Eina_Promise *timeout;
+ Efl_Future *timeout;
} connect;
Eina_Stringshare *address_dial;
Eina_Stringshare *proxy;
}
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;
Efl_Net_Dialer_Tcp_Data *pd = efl_data_scope_get(o, MY_CLASS);
if (pd->timeout_dial > 0.0)
{
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;
if (pd->timeout_dial > 0.0)
{
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);
}
}
typedef struct _Efl_Net_Dialer_Websocket_Data {
Eo *http;
- Eina_Promise *close_timeout;
- Eina_Promise *job;
+ Efl_Future *close_timeout;
+ Efl_Future *job;
Eina_Stringshare *address_dial; /* must rewrite ws->http, wss->https */
Eina_Stringshare *address_remote; /* must rewrite ws->http, wss->https */
struct {
efl_event_callback_call(o, EFL_IO_CLOSER_EVENT_CLOSED, NULL);
if (pd->close_timeout)
{
- eina_promise_cancel(pd->close_timeout);
+ efl_future_cancel(pd->close_timeout);
pd->close_timeout = NULL;
}
break;
}
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;
Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS);
loop = efl_loop_user_loop_get(o);
if (!loop) return;
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
efl_event_callback_array_del(pd->http, _efl_net_dialer_websocket_http_cbs(), o);
if (pd->close_timeout)
{
- eina_promise_cancel(pd->close_timeout);
+ efl_future_cancel(pd->close_timeout);
pd->close_timeout = NULL;
}
if (pd->job)
{
- eina_promise_cancel(pd->job);
+ efl_future_cancel(pd->job);
pd->job = NULL;
}
}
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;
Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS);
EINA_SAFETY_ON_TRUE_RETURN(pd->close_requested);
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);
- 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);