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