From 12fc56bcb51d984a6e86fc1eb7952f9976c67043 Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Sun, 9 Aug 2015 16:53:51 +0200 Subject: [PATCH] common/iobuf.h: Clarify semantics of nofast. Simplify implementation. * common/iobuf.h (struct iobuf_struct): Clarify semantics of nofast. Simplify use of nofast to implement just these semantics. -- Signed-off-by: Neal H. Walfield . --- common/iobuf.c | 8 ++++---- common/iobuf.h | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/common/iobuf.c b/common/iobuf.c index 479038ad5..3a68c2669 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -1651,7 +1651,7 @@ iobuf_push_filter2 (iobuf_t a, /* disable nlimit for the new stream */ a->ntotal = b->ntotal + b->nbytes; a->nlimit = a->nbytes = 0; - a->nofast &= ~1; + a->nofast = 0; /* make a link from the new stream to the original stream */ a->chain = b; @@ -2124,9 +2124,9 @@ void iobuf_set_limit (iobuf_t a, off_t nlimit) { if (nlimit) - a->nofast |= 1; + a->nofast = 1; else - a->nofast &= ~1; + a->nofast = 0; a->nlimit = nlimit; a->ntotal += a->nbytes; a->nbytes = 0; @@ -2308,7 +2308,7 @@ iobuf_seek (iobuf_t a, off_t newpos) a->d.start = 0; a->nbytes = 0; a->nlimit = 0; - a->nofast &= ~1; + a->nofast = 0; a->ntotal = newpos; a->error = 0; /* remove filters, but the last */ diff --git a/common/iobuf.h b/common/iobuf.h index c6877e0fa..a69380959 100644 --- a/common/iobuf.h +++ b/common/iobuf.h @@ -75,7 +75,11 @@ struct iobuf_struct off_t nlimit; off_t nbytes; /* Used together with nlimit. */ off_t ntotal; /* Total bytes read (position of stream). */ - int nofast; /* Used by the iobuf_get (). */ + + /* Whether we need to read from the filter one byte at a time or + whether we can do bulk reads. We need to read one byte at a time + if a limit (set via iobuf_set_limit) is active. */ + int nofast; struct { size_t size; /* Allocated size */