1 #ifndef SERVER_H
2 #define SERVER_H
3 
4 #include <event.h>
5 #include <pthread.h>
6 
7 #include <hiredis/async.h>
8 #ifdef HAVE_SSL
9 #include <hiredis/hiredis.h>
10 #include <hiredis/hiredis_ssl.h>
11 #endif
12 
13 struct worker;
14 struct conf;
15 
16 struct server {
17 
18 	int fd;
19 	struct event ev;
20 	struct event_base *base;
21 
22 	struct conf *cfg;
23 
24 #ifdef HAVE_SSL
25 	/* SSL context & error code */
26 	redisSSLContext *ssl_context;
27 	redisSSLContextError ssl_error;
28 #endif
29 
30 	/* worker threads */
31 	struct worker **w;
32 	int next_worker;
33 
34 	/* log lock */
35 	struct {
36 		pid_t self;
37 		int fd;
38 		struct timeval fsync_tv;
39 		struct event *fsync_ev;
40 	} log;
41 
42 	/* used to log auth message only once */
43 	pthread_mutex_t auth_log_mutex;
44 	int auth_logged;
45 };
46 
47 struct server *
48 server_new(const char *cfg_file);
49 
50 int
51 server_start(struct server *s);
52 
53 #endif
54 
55