* on_cancel which will cancel this callback */
InputFile *ipf= user;
+ dbg("**TRACT** ipf=%p called",ipf);
if (!ipf->fake_readable) return OOP_CONTINUE;
/* we just keep calling readable until our caller (oop_rd)
* has called try_read, and try_read has found EOF so given EAGAIN */
+ dbg("**TRACT** ipf=%p reschedule",ipf);
loop->on_time(loop, OOP_TIME_NOW, tailing_rable_call_time, ipf);
return ipf->readable_callback(loop, &ipf->readable,
static void tailing_on_cancel(struct oop_readable *rable) {
InputFile *ipf= (void*)rable;
+ dbg("**TOR** ipf=%p on_cancel",ipf);
if (ipf->filemon) filemon_stop(ipf);
+ dbg("**TRACT** ipf=%p cancel",ipf);
loop->cancel_time(loop, OOP_TIME_NOW, tailing_rable_call_time, ipf);
ipf->readable_callback= 0;
}
static void tailing_make_readable(InputFile *ipf) {
+ dbg("**TRACT** ipf=%p makereadable rcb=%p",ipf,
+ (void*)ipf?ipf->readable_callback:0);
if (!ipf || !ipf->readable_callback) /* so callers can be naive */
return;
ipf->fake_readable= 1;
static int tailing_on_readable(struct oop_readable *rable,
oop_readable_call *cb, void *user) {
InputFile *ipf= (void*)rable;
+ dbg("**TOR** ipf=%p on_readable",ipf);
tailing_on_cancel(rable);
ipf->readable_callback= cb;
abort();
}
}
+ dbg("**TOR** ipf=%p try_read r=%d",ipf,r);
return r;
}
}