projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Have an event loop thread.
[apps/madmutt.git]
/
lib-sys
/
evtloop.h
diff --git
a/lib-sys/evtloop.h
b/lib-sys/evtloop.h
index
7c46bf6
..
c96f0c2
100644
(file)
--- a/
lib-sys/evtloop.h
+++ b/
lib-sys/evtloop.h
@@
-22,6
+22,8
@@
#define MUTT_LIB_SYS_EVTLOOP_H
#include <lib-lib/lib-lib.h>
#define MUTT_LIB_SYS_EVTLOOP_H
#include <lib-lib/lib-lib.h>
+#include <gnutls/gnutls.h>
+#include <sys/socket.h>
typedef enum el_state {
EL_LLP_INIT,
typedef enum el_state {
EL_LLP_INIT,
@@
-54,6
+56,10
@@
typedef enum el_event {
typedef struct job_t {
int fd;
typedef struct job_t {
int fd;
+ int ssf;
+
+ gnutls_session_t session;
+ gnutls_certificate_credentials_t xcred;
el_state state : 2;
el_mode mode : 3;
el_state state : 2;
el_mode mode : 3;
@@
-64,21
+70,27
@@
typedef struct job_t {
void *ptr;
} job_t;
DO_INIT(job_t, job);
void *ptr;
} job_t;
DO_INIT(job_t, job);
-
DO_WIPE(job_t, job
);
+
void job_wipe(job_t *w
);
DO_NEW(job_t, job);
DO_DELETE(job_t, job);
typedef struct machine_t {
const char *name;
__must_check__ int (*setup)(job_t *w, void *);
DO_NEW(job_t, job);
DO_DELETE(job_t, job);
typedef struct machine_t {
const char *name;
__must_check__ int (*setup)(job_t *w, void *);
- int (*on_event)(job_t *w, el_event);
+
__must_check__
int (*on_event)(job_t *w, el_event);
void (*finalize)(job_t *w, el_status);
} machine_t;
void (*finalize)(job_t *w, el_status);
} machine_t;
+#define EL_JOB_CHECK(expr) \
+ do { if ((expr) < 0) return -1; } while (0)
+
__must_check__ int el_job_setmode(job_t *w, el_mode);
__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,
__must_check__ int el_job_setmode(job_t *w, el_mode);
__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 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();
static inline job_t *el_job_start(const machine_t *m, void *cfg) {
job_t *w = job_new();
@@
-87,5
+99,7
@@
static inline job_t *el_job_start(const machine_t *m, void *cfg) {
}
int el_dispatch(int timeout);
}
int el_dispatch(int timeout);
+void el_initialize(void);
+void el_shutdown(void);
#endif
#endif