From: Niels Provos Date: Thu, 25 Sep 2003 03:29:37 +0000 (+0000) Subject: windows support X-Git-Tag: release-1.1b~90 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9d26a46c39b312985988c849f519d330b1177405;p=libevent windows support svn:r79 --- diff --git a/sample/event-test.c b/sample/event-test.c index f4cfa11b..0eac37e7 100644 --- a/sample/event-test.c +++ b/sample/event-test.c @@ -5,13 +5,17 @@ #include #include +#ifndef WIN32 #include +#include #include +#else +#include +#endif #include #include #include #include -#include #include #include @@ -22,14 +26,29 @@ fifo_read(int fd, short event, void *arg) char buf[255]; int len; struct event *ev = arg; +#ifdef WIN32 + DWORD dwBytesRead; +#endif /* Reschedule this event */ event_add(ev, NULL); fprintf(stderr, "fifo_read called with fd: %d, event: %d, arg: %p\n", fd, event, arg); +#ifdef WIN32 + len = ReadFile((HANDLE)fd, buf, sizeof(buf) - 1, &dwBytesRead, NULL); + // Check for end of file. + if(len && dwBytesRead == 0) { + fprintf(stderr, "End Of File"); + event_del(ev); + return; + } + + buf[dwBytesRead + 1] = '\0'; +#else len = read(fd, buf, sizeof(buf) - 1); + if (len == -1) { perror("read"); return; @@ -39,16 +58,32 @@ fifo_read(int fd, short event, void *arg) } buf[len] = '\0'; +#endif fprintf(stdout, "Read: %s\n", buf); } int main (int argc, char **argv) { + struct event evfifo; +#ifdef WIN32 + HANDLE socket; + // Open a file. + socket = CreateFile("test.txt", // open File + GENERIC_READ, // open for reading + 0, // do not share + NULL, // no security + OPEN_EXISTING, // existing file only + FILE_ATTRIBUTE_NORMAL, // normal file + NULL); // no attr. template + + if(socket == INVALID_HANDLE_VALUE) + return 1; + +#else struct stat st; char *fifo = "event.fifo"; int socket; - struct event evfifo; if (lstat (fifo, &st) == 0) { if ((st.st_mode & S_IFMT) == S_IFREG) { @@ -77,18 +112,24 @@ main (int argc, char **argv) } fprintf(stderr, "Write data to %s\n", fifo); - +#endif /* Initalize the event library */ event_init(); /* Initalize one event */ +#ifdef WIN32 + event_set(&evfifo, (int)socket, EV_READ, fifo_read, &evfifo); +#else event_set(&evfifo, socket, EV_READ, fifo_read, &evfifo); +#endif /* Add it to the active events, without a timeout */ event_add(&evfifo, NULL); event_dispatch(); - +#ifdef WIN32 + CloseHandle(socket); +#endif return (0); } diff --git a/sample/signal-test.c b/sample/signal-test.c index 562bcf1e..7a1fefec 100644 --- a/sample/signal-test.c +++ b/sample/signal-test.c @@ -5,14 +5,18 @@ #include #include +#ifndef WIN32 #include +#include #include +#else +#include +#endif #include #include #include #include #include -#include #include #include @@ -24,11 +28,11 @@ signal_cb(int fd, short event, void *arg) { struct event *signal = arg; - printf("%s: got signal %d\n", __FUNCTION__, EVENT_SIGNAL(signal)); + printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal)); if (called >= 2) event_del(signal); - + called++; } diff --git a/sample/time-test.c b/sample/time-test.c index 86c14724..da508ff8 100644 --- a/sample/time-test.c +++ b/sample/time-test.c @@ -5,13 +5,17 @@ #include #include +#ifndef WIN32 #include +#include +#else +#include +#endif #include #include #include #include #include -#include #include #include @@ -25,7 +29,7 @@ timeout_cb(int fd, short event, void *arg) struct event *timeout = arg; int newtime = time(NULL); - printf("%s: called at %d: %d\n", __FUNCTION__, newtime, + printf("%s: called at %d: %d\n", __func__, newtime, newtime - lasttime); lasttime = newtime;