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 33int test_okay = 1; 34int called = 0; 35 36static void 37read_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 60int 61main (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