Line data Source code
1 : #include "source/common/quic/send_buffer_monitor.h" 2 : 3 : #include "source/common/common/assert.h" 4 : 5 : namespace Envoy { 6 : namespace Quic { 7 : 8 : SendBufferMonitor::ScopedWatermarkBufferUpdater::ScopedWatermarkBufferUpdater( 9 : quic::QuicStream* quic_stream, SendBufferMonitor* send_buffer_monitor) 10 : : quic_stream_(quic_stream), old_buffered_bytes_(quic_stream_->BufferedDataBytes()), 11 0 : send_buffer_monitor_(send_buffer_monitor) { 12 0 : ASSERT(!send_buffer_monitor_->is_doing_watermark_accounting_); 13 0 : send_buffer_monitor_->is_doing_watermark_accounting_ = true; 14 0 : } 15 : 16 0 : SendBufferMonitor::ScopedWatermarkBufferUpdater::~ScopedWatermarkBufferUpdater() { 17 : // If quic_stream_ is done writing, regards all buffered bytes, if there is any, as drained. 18 0 : uint64_t new_buffered_bytes = 19 0 : quic_stream_->write_side_closed() ? 0u : quic_stream_->BufferedDataBytes(); 20 0 : send_buffer_monitor_->is_doing_watermark_accounting_ = false; 21 0 : send_buffer_monitor_->updateBytesBuffered(old_buffered_bytes_, new_buffered_bytes); 22 0 : } 23 : 24 : } // namespace Quic 25 : } // namespace Envoy