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 34int pair[2]; 35int test_okay = 1; 36int called = 0; 37 38static void 39write_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 59int 60main (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