diff options
Diffstat (limited to 'chromium/net/quic/quic_spdy_server_stream.h')
-rw-r--r-- | chromium/net/quic/quic_spdy_server_stream.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/chromium/net/quic/quic_spdy_server_stream.h b/chromium/net/quic/quic_spdy_server_stream.h new file mode 100644 index 00000000000..8a6808bd3bc --- /dev/null +++ b/chromium/net/quic/quic_spdy_server_stream.h @@ -0,0 +1,64 @@ +// Copyright 2014 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_SPDY_SERVER_STREAM_H_ +#define NET_QUIC_QUIC_SPDY_SERVER_STREAM_H_ + +#include <string> + +#include "base/basictypes.h" +#include "net/base/io_buffer.h" +#include "net/quic/quic_data_stream.h" +#include "net/quic/quic_protocol.h" +#include "net/tools/balsa/balsa_headers.h" + +namespace net { + +class QuicSession; + +namespace test { +class QuicSpdyServerStreamPeer; +} // namespace test + +// All this does right now is aggregate data, and on fin, send an HTTP +// response. +class QuicSpdyServerStream : public QuicDataStream { + public: + QuicSpdyServerStream(QuicStreamId id, QuicSession* session); + virtual ~QuicSpdyServerStream(); + + // ReliableQuicStream implementation called by the session when there's + // data for us. + virtual uint32 ProcessData(const char* data, uint32 data_len) OVERRIDE; + virtual void OnFinRead() OVERRIDE; + + int ParseRequestHeaders(); + + private: + friend class test::QuicSpdyServerStreamPeer; + + // Sends a basic 200 response using SendHeaders for the headers and WriteData + // for the body. + void SendResponse(); + + // Sends a basic 500 response using SendHeaders for the headers and WriteData + // for the body + void SendErrorResponse(); + + void SendHeadersAndBody(const BalsaHeaders& response_headers, + base::StringPiece body); + + BalsaHeaders headers_; + string body_; + + // Buffer into which response header data is read. + scoped_refptr<GrowableIOBuffer> read_buf_; + bool request_headers_received_; + + DISALLOW_COPY_AND_ASSIGN(QuicSpdyServerStream); +}; + +} // namespace net + +#endif // NET_QUIC_QUIC_SPDY_SERVER_STREAM_H_ |