Update to latest madtty.
[apps/madmutt.git] / lib-sys / evtloop.h
index 961390a..48bc86a 100644 (file)
@@ -24,6 +24,7 @@
 #include <lib-lib/lib-lib.h>
 #include <gnutls/gnutls.h>
 #include <sys/socket.h>
+#include "account.h"
 
 typedef enum el_state {
     EL_LLP_INIT,
@@ -47,10 +48,10 @@ typedef enum el_status {
 } el_status;
 
 typedef enum el_event {
+    EL_EVT_RUNNING = 0,
     EL_EVT_IN      = EL_READING,
     EL_EVT_OUT     = EL_WRITING,
     EL_EVT_INOUT   = EL_RDWR,
-    EL_EVT_RUNNING = 4,
     EL_EVT_WAKEUP  = 5,
 } el_event;
 
@@ -58,13 +59,14 @@ 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;
@@ -91,12 +93,14 @@ __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_connect2(job_t *w, const ACCOUNT *);
 __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);
 
 void el_lock(void);
 void el_unlock(void);
+void el_wait(volatile job_t *w);
 
 int el_dispatch(int timeout);