Index: net/tools/quic/quic_client_base.h |
diff --git a/net/tools/quic/quic_client_base.h b/net/tools/quic/quic_client_base.h |
index db066663f9ea897e5f08ded758af7b9838a60eff..f15f25fe6ae9b75eb3814ab81365e65f59f72b43 100644 |
--- a/net/tools/quic/quic_client_base.h |
+++ b/net/tools/quic/quic_client_base.h |
@@ -33,6 +33,35 @@ class QuicServerId; |
class QuicClientBase { |
public: |
+ // The client uses these objects to keep track of any data to resend upon |
+ // receipt of a stateless reject. Recall that the client API allows callers |
+ // to optimistically send data to the server prior to handshake-confirmation. |
+ // If the client subsequently receives a stateless reject, it must tear down |
+ // its existing session, create a new session, and resend all previously sent |
+ // data. It uses these objects to keep track of all the sent data, and to |
+ // resend the data upon a subsequent connection. |
+ class QuicDataToResend { |
+ public: |
+ // |headers| may be null, since it's possible to send data without headers. |
+ QuicDataToResend(std::unique_ptr<SpdyHeaderBlock> headers, |
+ base::StringPiece body, |
+ bool fin); |
+ |
+ virtual ~QuicDataToResend(); |
+ |
+ // Must be overridden by specific classes with the actual method for |
+ // re-sending data. |
+ virtual void Resend() = 0; |
+ |
+ protected: |
+ std::unique_ptr<SpdyHeaderBlock> headers_; |
+ base::StringPiece body_; |
+ bool fin_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(QuicDataToResend); |
+ }; |
+ |
QuicClientBase(const QuicServerId& server_id, |
const QuicVersionVector& supported_versions, |
const QuicConfig& config, |