Index: net/spdy/spdy_write_queue.cc |
diff --git a/net/spdy/spdy_write_queue.cc b/net/spdy/spdy_write_queue.cc |
index 18ddc39bf8ec28bef9e37e31025b39e5c9d46d07..88c93c2aa8b066807049b845834dc3f826c7e344 100644 |
--- a/net/spdy/spdy_write_queue.cc |
+++ b/net/spdy/spdy_write_queue.cc |
@@ -99,4 +99,18 @@ void SpdyWriteQueue::Clear() { |
} |
} |
+void SpdyWriteQueue::ClearAfter(SpdyStreamId last_good_stream_id) { |
+ for (int i = 0; i < NUM_PRIORITIES; ++i) { |
+ std::deque<PendingWrite>::iterator it = queue_[i].begin(); |
+ while (it != queue_[i].end()) { |
+ if (it->stream->stream_id() > last_good_stream_id) { |
+ delete it->frame_producer; |
+ it = queue_[i].erase(it); |
akalin
2013/04/17 21:14:20
unfortunately, deque::erase is O(n). Can you do so
Ryan Hamilton
2013/04/18 00:30:40
Done.
|
+ } else { |
+ ++it; |
+ } |
+ } |
+ } |
+} |
+ |
} // namespace net |