document the new binlog stats
[beanstalkd.git] / srv.c
bloba20b58114f4386567336f0d7115f4e4f6c4a3b22
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <sys/socket.h>
4 #include "dat.h"
7 void
8 srv(Srv *s)
10 int r;
12 sockinit((Handle)srvtick, s, 10*1000000); // 10ms
14 s->sock.x = s;
15 s->sock.f = (Handle)srvaccept;
16 s->conns.cap = 0;
17 s->conns.len = 0;
18 s->conns.data = NULL;
19 s->conns.less = (Less)connless;
20 s->conns.rec = (Record)connrec;
22 r = listen(s->sock.fd, 1024);
23 if (r == -1) {
24 twarn("listen");
25 return;
28 r = sockwant(&s->sock, 'r');
29 if (r == -1) {
30 twarn("sockwant");
31 exit(2);
34 sockmain();
35 twarnx("sockmain");
36 exit(1);
40 void
41 srvschedconn(Srv *s, conn c)
43 if (c->tickpos > -1) {
44 heapremove(&s->conns, c->tickpos);
46 if (c->tickat) {
47 heapinsert(&s->conns, c);
52 void
53 srvaccept(Srv *s, int ev)
55 h_accept(s->sock.fd, ev, s);
59 void
60 srvtick(Srv *s, int ev)
62 prottick(s);