6afa9dd4343c3b66ff09f39735170ec8be5f282e braney Wed Sep 18 17:33:15 2024 -0700 add ability to set a timeout on remote loads diff --git src/lib/udc.c src/lib/udc.c index 7ef70c0..a78441d 100644 --- src/lib/udc.c +++ src/lib/udc.c @@ -216,32 +216,43 @@ { ioStats->numWrites++; ioStats->bytesWritten += size; mustWriteFd(fd, buf, size); } static size_t ourRead(struct ioStats *ioStats, int fd, void *buf, size_t size) { ioStats->numReads++; size_t bytesRead = read(fd, buf, size); ioStats->bytesRead += bytesRead; return bytesRead; } +static char * udcStopReadsMessage; // if not-NULL then udcRead errAborts with message + +void udcReadStopMessage(char *message) +// set message for errAbort on udcRead. If message is NULL, no abort is made +{ +udcStopReadsMessage = cloneString(message); +} + static void ourMustRead(struct ioStats *ioStats, int fd, void *buf, size_t size) { +if (udcStopReadsMessage != NULL) + errAbort("%s", udcStopReadsMessage); + ioStats->numReads++; ioStats->bytesRead += size; mustReadFd(fd, buf, size); } static size_t ourFread(struct ioStats *ioStats, void *buf, size_t size, size_t nmemb, FILE *stream) { ioStats->numReads++; ioStats->bytesRead += size * nmemb; return fread(buf, size, nmemb, stream); } static void udcReadAndIgnore(struct ioStats *ioStats, int sd, bits64 size) /* Read size bytes from sd and return. */