Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Unified Diff: net/quic/quic_stream_sequencer.h

Issue 11365080: Revert 165858 - Add QuicStream and friends to QUIC code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_session_test.cc ('k') | net/quic/quic_stream_sequencer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_stream_sequencer.h
===================================================================
--- net/quic/quic_stream_sequencer.h (revision 165858)
+++ net/quic/quic_stream_sequencer.h (working copy)
@@ -1,90 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_QUIC_QUIC_STREAM_SEQUENCER_H_
-#define NET_QUIC_QUIC_STREAM_SEQUENCER_H_
-
-#include <map>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-#include "net/quic/quic_protocol.h"
-
-using std::map;
-using std::string;
-
-namespace net {
-
-class QuicSession;
-class ReliableQuicStream;
-
-// Buffers frames until we have something which can be passed
-// up to the next layer.
-// TOOD(alyssar) add some checks for overflow attempts [1, 256,] [2, 256]
-class NET_EXPORT_PRIVATE QuicStreamSequencer {
- public:
- static size_t kMaxUdpPacketSize;
-
- explicit QuicStreamSequencer(ReliableQuicStream* quic_stream);
- QuicStreamSequencer(size_t max_frame_memory,
- ReliableQuicStream* quic_stream);
-
- virtual ~QuicStreamSequencer();
-
- // Returns the expected value of OnStreamFrame for this frame.
- bool WillAcceptStreamFrame(const QuicStreamFrame& frame) const;
-
- // If the frame is the next one we need in order to process in-order data,
- // ProcessData will be immediately called on the stream until all buffered
- // data is processed or the stream fails to consume data. Any unconsumed
- // data will be buffered.
- //
- // If the frame is not the next in line, it will either be buffered, and
- // this will return true, or it will be rejected and this will return false.
- bool OnStreamFrame(const QuicStreamFrame& frame);
-
- // Wait until we've seen 'offset' bytes, and then terminate the stream.
- void CloseStreamAtOffset(QuicStreamOffset offset, bool half_close);
-
- // Once data is buffered, it's up to the stream to read it when the stream
- // can handle more data. The following three functions make that possible.
-
- // Advances the readable pointer num_bytes bytes, releasing any buffered data
- // which is no longer in uses
- void AdvanceReadablePtr(size_t num_bytes);
-
- // Returns true if the sequncer has bytes available for reading.
- bool HasBytesToRead();
-
- // Returns true if the sequencer has delivered a half close.
- bool IsHalfClosed();
-
- // Returns true if the sequencer has delivered a full close.
- bool IsClosed();
-
- private:
- bool MaybeCloseStream();
-
- friend class QuicStreamSequencerPeer;
- // TODO(alyssar) use something better than strings.
- typedef map<QuicStreamOffset, string> FrameMap;
-
- void FlushBufferedFrames();
-
- ReliableQuicStream* stream_; // The stream which owns this sequencer.
- QuicStreamOffset num_bytes_consumed_; // The last data consumed by the stream
- FrameMap frames_; // sequence number -> frame
- size_t max_frame_memory_; // the maximum memory the sequencer can buffer.
- // The offset, if any, we got a stream cancelation for. When this many bytes
- // have been processed, the stream will be half or full closed depending on
- // the half_close_ bool.
- QuicStreamOffset close_offset_;
- // Only valid if close_offset_ is set. Indicates if it's a half or a full
- // close.
- bool half_close_;
-};
-
-} // namespace net
-
-#endif // NET_QUIC_QUIC_STREAM_SEQUENCER_H_
« no previous file with comments | « net/quic/quic_session_test.cc ('k') | net/quic/quic_stream_sequencer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698