From 47693e32d87216cbc6590cb83968d706e3467b1f Mon Sep 17 00:00:00 2001 From: Andre Pinto Date: Tue, 11 Dec 2018 10:07:56 -0800 Subject: [PATCH] Add getTotalBufferedBytes() method fo AsyncTransport Summary: When BufferCallback::onEgressBuffered() is called, applications usually want to know how many bytes were buffered so that can take actions (such as avoiding that connection, failing fast, etc). This diff adds getTotalPendingBytes() to AsyncTransport to allow applications to easily query how many bytes were actually buffered. Reviewed By: spalamarchuk Differential Revision: D13252677 fbshipit-source-id: 8ec203f6764e00f52d471321afb549376397eb84 --- mcrouter/lib/carbon/CarbonQueueAppender.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mcrouter/lib/carbon/CarbonQueueAppender.h b/mcrouter/lib/carbon/CarbonQueueAppender.h index 5587d2964..6f01acd9a 100644 --- a/mcrouter/lib/carbon/CarbonQueueAppender.h +++ b/mcrouter/lib/carbon/CarbonQueueAppender.h @@ -51,7 +51,8 @@ class CarbonQueueAppenderStorage { assert(nIovsUsed_ < kMaxIovecs); struct iovec* nextIov = iovs_ + nIovsUsed_; - const auto nFilled = buf.fillIov(nextIov, kMaxIovecs - nIovsUsed_); + const auto nFilled = + buf.fillIov(nextIov, kMaxIovecs - nIovsUsed_).numIovecs; if (tcpZeroCopyThreshold_ && !applyZeroCopy_ && buf.capacity() >= tcpZeroCopyThreshold_) { @@ -109,7 +110,8 @@ class CarbonQueueAppenderStorage { bool setFullBuffer(const folly::IOBuf& buf) { struct iovec* nextIov = iovs_ + nIovsUsed_; - const auto nFilled = buf.fillIov(nextIov, kMaxIovecs - nIovsUsed_); + const auto nFilled = + buf.fillIov(nextIov, kMaxIovecs - nIovsUsed_).numIovecs; if (nFilled > 0) { nIovsUsed_ += nFilled; @@ -215,7 +217,8 @@ class CarbonQueueAppenderStorage { struct iovec* nextIov = iovs_ + nIovsUsed_; auto bufCopy = buf; bufCopy.coalesce(); - const auto nFilledRetry = bufCopy.fillIov(nextIov, kMaxIovecs - nIovsUsed_); + const auto nFilledRetry = + bufCopy.fillIov(nextIov, kMaxIovecs - nIovsUsed_).numIovecs; assert(nFilledRetry == 1); (void)nFilledRetry; ++nIovsUsed_;