99#include < stdio.h>
1010#include < errno.h>
1111
12+ #define PRINTF
13+
1214using namespace std ;
1315using namespace node ;
1416using namespace v8 ;
@@ -51,7 +53,7 @@ class Pollpri: ObjectWrap {
5153 }
5254
5355 static Handle<Value> New (const Arguments &args) {
54- printf (" Entered New\n " );
56+ PRINTF (" Entered New\n " );
5557 HandleScope scope;
5658 const char *usage = " usage: new Pollpri(path)" ;
5759 if (args.Length () != 1 ) {
@@ -62,12 +64,12 @@ class Pollpri: ObjectWrap {
6264 p->Wrap (args.This ());
6365 p->path = (char *)malloc (path.length () + 1 );
6466 strncpy (p->path , *path, path.length () + 1 );
65- printf (" Leaving New\n " );
67+ PRINTF (" Leaving New\n " );
6668 return (args.This ());
6769 }
6870
6971 static Handle<Value> pollpri (const Arguments& args) {
70- printf (" Entered pollpri\n " );
72+ PRINTF (" Entered pollpri\n " );
7173 HandleScope scope;
7274 const char *usage = " usage: pollpri(cb)" ;
7375 if (args.Length () != 1 ) {
@@ -84,49 +86,64 @@ class Pollpri: ObjectWrap {
8486
8587 eio_custom (pollpri_thread, EIO_PRI_DEFAULT, pollpri_after, pr);
8688 ev_ref (EV_DEFAULT_UC);
87- printf (" Leaving pollpri\n " );
89+ PRINTF (" Leaving pollpri\n " );
8890 return (Undefined ());
8991 }
9092
9193 static int pollpri_thread (eio_req *req) {
92- printf (" Entered pollpri_thread\n " );
94+ PRINTF (" Entered pollpri_thread\n " );
9395 struct pollpri_request * pr = (struct pollpri_request *)req->data ;
9496 Pollpri *p = pr->p ;
9597 int epfd = p->epfd ;
9698 int fd = p->fd ;
9799 if (!fd) {
98100 fd = open (p->path , O_RDWR | O_NONBLOCK);
99101 pr->p ->fd = fd;
100- printf (" open(%s) returned %d: %s\n " , p->path , fd, strerror (errno));
102+ PRINTF (" open(%s) returned %d: %s\n " , p->path , fd, strerror (errno));
101103 }
102104 if (!epfd) {
103105 epfd = epoll_create (1 );
104106 pr->p ->epfd = epfd;
105- printf (" epoll_create(1) returned %d: %s\n " , epfd, strerror (errno));
107+ PRINTF (" epoll_create(1) returned %d: %s\n " , epfd, strerror (errno));
106108 struct epoll_event ev;
107109 ev.events = EPOLLPRI;
108110 ev.data .fd = fd;
109111 int n = epoll_ctl (epfd, EPOLL_CTL_ADD, fd, &ev);
110- printf (" epoll_ctl(%d) returned %d (%d): %s\n " , fd, n, epfd, strerror (errno));
112+ PRINTF (" epoll_ctl(%d) returned %d (%d): %s\n " , fd, n, epfd, strerror (errno));
111113 }
112114 // ev_io pollpri_watcher;
113115 // ev_init(&pollpri_watcher, pollpri_event);
114116 // pollpri_watcher.data = pr;
115117 // ev_io_set(&pollpri_watcher, epfd, EV_READ | EV_WRITE);
116118 // ev_io_start(EV_DEFAULT_ &pollpri_watcher);
117119 struct epoll_event events;
118- printf (" Calling epoll_wait\n " );
119- sleep (1 );
120- int m = epoll_wait (epfd, &events, 1 , -1 );
121- printf (" epoll_wait(%d) returned %d: %s\n " , epfd, m, strerror (errno));
120+ int m = 0 ;
121+ while (m <= 0 ) {
122+ PRINTF (" Calling epoll_wait\n " );
123+ m = epoll_wait (epfd, &events, 1 , -1 );
124+ PRINTF (" epoll_wait(%d) returned %d: %s\n " , epfd, m, strerror (errno));
125+ // struct pollfd pfd;
126+ // pfd.fd = fd;
127+ // pfd.events = POLLPRI;
128+ // m = poll(&fdset, 1, -1)
129+ if (m > 0 ) {
130+ char buf;
131+ int q;
132+ q = lseek (fd, 0 , SEEK_SET);
133+ PRINTF (" seek %d bytes: %s\n " , q, strerror (errno));
134+ q = read (fd, &buf, 1 );
135+ PRINTF (" read %d bytes: %s\n " , q, strerror (errno));
136+ PRINTF (" buf = 0x%x\n " , buf);
137+ }
138+ }
122139 // close(epfd);
123140 // close(fd);
124- printf (" Leaving pollpri_thread\n " );
141+ PRINTF (" Leaving pollpri_thread\n " );
125142 return (0 );
126143 }
127144
128145 static int pollpri_after (eio_req *req) {
129- printf (" Entered pollpri_after\n " );
146+ PRINTF (" Entered pollpri_after\n " );
130147 HandleScope scope;
131148 ev_unref (EV_DEFAULT_UC);
132149 struct pollpri_request * pr = (struct pollpri_request *)req->data ;
@@ -138,7 +155,7 @@ class Pollpri: ObjectWrap {
138155 // close(pr->p->epfd);
139156 // close(pr->p->fd);
140157 free (pr);
141- printf (" Leaving pollpri_after\n " );
158+ PRINTF (" Leaving pollpri_after\n " );
142159 return (0 );
143160 }
144161
0 commit comments