1*5f15e431Snicm /*
2*5f15e431Snicm * Compile with:
3*5f15e431Snicm * cc -I/usr/local/include -o time-test time-test.c -L/usr/local/lib -levent
4*5f15e431Snicm */
5*5f15e431Snicm #ifdef HAVE_CONFIG_H
6*5f15e431Snicm #include "config.h"
7*5f15e431Snicm #endif
8*5f15e431Snicm
9*5f15e431Snicm
10*5f15e431Snicm #ifdef WIN32
11*5f15e431Snicm #include <winsock2.h>
12*5f15e431Snicm #endif
13*5f15e431Snicm #include <sys/types.h>
14*5f15e431Snicm #include <sys/stat.h>
15*5f15e431Snicm #ifdef HAVE_SYS_TIME_H
16*5f15e431Snicm #include <sys/time.h>
17*5f15e431Snicm #endif
18*5f15e431Snicm #ifdef HAVE_SYS_SOCKET_H
19*5f15e431Snicm #include <sys/socket.h>
20*5f15e431Snicm #endif
21*5f15e431Snicm #include <fcntl.h>
22*5f15e431Snicm #include <stdlib.h>
23*5f15e431Snicm #include <stdio.h>
24*5f15e431Snicm #include <string.h>
25*5f15e431Snicm #ifdef HAVE_UNISTD_H
26*5f15e431Snicm #include <unistd.h>
27*5f15e431Snicm #endif
28*5f15e431Snicm #include <errno.h>
29*5f15e431Snicm
30*5f15e431Snicm #include <event.h>
31*5f15e431Snicm #include <evutil.h>
32*5f15e431Snicm
33*5f15e431Snicm int test_okay = 1;
34*5f15e431Snicm int called = 0;
35*5f15e431Snicm
36*5f15e431Snicm static void
read_cb(int fd,short event,void * arg)37*5f15e431Snicm read_cb(int fd, short event, void *arg)
38*5f15e431Snicm {
39*5f15e431Snicm char buf[256];
40*5f15e431Snicm int len;
41*5f15e431Snicm
42*5f15e431Snicm len = recv(fd, buf, sizeof(buf), 0);
43*5f15e431Snicm
44*5f15e431Snicm printf("%s: read %d%s\n", __func__,
45*5f15e431Snicm len, len ? "" : " - means EOF");
46*5f15e431Snicm
47*5f15e431Snicm if (len) {
48*5f15e431Snicm if (!called)
49*5f15e431Snicm event_add(arg, NULL);
50*5f15e431Snicm } else if (called == 1)
51*5f15e431Snicm test_okay = 0;
52*5f15e431Snicm
53*5f15e431Snicm called++;
54*5f15e431Snicm }
55*5f15e431Snicm
56*5f15e431Snicm #ifndef SHUT_WR
57*5f15e431Snicm #define SHUT_WR 1
58*5f15e431Snicm #endif
59*5f15e431Snicm
60*5f15e431Snicm int
main(int argc,char ** argv)61*5f15e431Snicm main (int argc, char **argv)
62*5f15e431Snicm {
63*5f15e431Snicm struct event ev;
64*5f15e431Snicm const char *test = "test string";
65*5f15e431Snicm int pair[2];
66*5f15e431Snicm
67*5f15e431Snicm if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
68*5f15e431Snicm return (1);
69*5f15e431Snicm
70*5f15e431Snicm
71*5f15e431Snicm send(pair[0], test, strlen(test)+1, 0);
72*5f15e431Snicm shutdown(pair[0], SHUT_WR);
73*5f15e431Snicm
74*5f15e431Snicm /* Initalize the event library */
75*5f15e431Snicm event_init();
76*5f15e431Snicm
77*5f15e431Snicm /* Initalize one event */
78*5f15e431Snicm event_set(&ev, pair[1], EV_READ, read_cb, &ev);
79*5f15e431Snicm
80*5f15e431Snicm event_add(&ev, NULL);
81*5f15e431Snicm
82*5f15e431Snicm event_dispatch();
83*5f15e431Snicm
84*5f15e431Snicm return (test_okay);
85*5f15e431Snicm }
86*5f15e431Snicm
87