X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-sys%2Fevtloop.h;h=bb7c50eb92f9b2c4933032b93210a9d6d923a4cf;hb=2b9f5916b3aebd8d34903d420ce8160121171534;hp=c96f0c2585348fe2a0bcb5b4a1a586cbf0064f7a;hpb=f8d1899d44b259a0920a52bd7290f15e39fd0d47;p=apps%2Fmadmutt.git diff --git a/lib-sys/evtloop.h b/lib-sys/evtloop.h index c96f0c2..bb7c50e 100644 --- a/lib-sys/evtloop.h +++ b/lib-sys/evtloop.h @@ -15,7 +15,7 @@ * MA 02110-1301, USA. */ /* - * Copyright © 2006 Pierre Habouzit + * Copyright © 2007 Pierre Habouzit */ #ifndef MUTT_LIB_SYS_EVTLOOP_H @@ -58,13 +58,15 @@ typedef struct job_t { int fd; int ssf; - gnutls_session_t session; - gnutls_certificate_credentials_t xcred; - + unsigned cond : 1; el_state state : 2; el_mode mode : 3; el_mode emode : 3; + gnutls_session_t session; + gnutls_certificate_credentials_t xcred; + + struct timeval mru; int (*llp)(struct job_t *); const struct machine_t *m; void *ptr; @@ -85,20 +87,21 @@ typedef struct machine_t { do { if ((expr) < 0) return -1; } while (0) __must_check__ int el_job_setmode(job_t *w, el_mode); +__must_check__ job_t *el_job_start(const machine_t *m, void *cfg); __must_check__ int el_job_release(job_t *j, el_status); + __must_check__ int el_job_connect(job_t *w, struct sockaddr *, socklen_t len, int type, int proto, int ssl); __must_check__ int el_job_starttls(job_t *w); __must_check__ ssize_t el_job_read(job_t *w, buffer_t *buf); __must_check__ ssize_t el_job_write(job_t *w, buffer_t *buf); -static inline job_t *el_job_start(const machine_t *m, void *cfg) { - job_t *w = job_new(); - w->m = m; - return m->setup(w, cfg) < 0 ? NULL : w; -} +void el_lock(void); +void el_unlock(void); +void el_wait(job_t *w); int el_dispatch(int timeout); + void el_initialize(void); void el_shutdown(void);