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 #ifdef HAVE_UNISTD_H
     26 #include <unistd.h>
     27 #endif
     28 #include <errno.h>
     29 
     30 #include <event.h>
     31 #include <evutil.h>
     32 
     33 int test_okay = 1;
     34 int called = 0;
     35 
     36 static void
     37 read_cb(int fd, short event, void *arg)
     38 {
     39 	char buf[256];
     40 	int len;
     41 
     42 	len = recv(fd, buf, sizeof(buf), 0);
     43 
     44 	printf("%s: read %d%s\n", __func__,
     45 	    len, len ? "" : " - means EOF");
     46 
     47 	if (len) {
     48 		if (!called)
     49 			event_add(arg, NULL);
     50 	} else if (called == 1)
     51 		test_okay = 0;
     52 
     53 	called++;
     54 }
     55 
     56 #ifndef SHUT_WR
     57 #define SHUT_WR 1
     58 #endif
     59 
     60 int
     61 main (int argc, char **argv)
     62 {
     63 	struct event ev;
     64 	const char *test = "test string";
     65 	int pair[2];
     66 
     67 	if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
     68 		return (1);
     69 
     70 
     71 	send(pair[0], test, strlen(test)+1, 0);
     72 	shutdown(pair[0], SHUT_WR);
     73 
     74 	/* Initalize the event library */
     75 	event_init();
     76 
     77 	/* Initalize one event */
     78 	event_set(&ev, pair[1], EV_READ, read_cb, &ev);
     79 
     80 	event_add(&ev, NULL);
     81 
     82 	event_dispatch();
     83 
     84 	return (test_okay);
     85 }
     86 
     87