|  | // Copyright (c) 2018 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 QUICHE_QUIC_TOOLS_QUIC_SIMPLE_CLIENT_STREAM_H_ | 
|  | #define QUICHE_QUIC_TOOLS_QUIC_SIMPLE_CLIENT_STREAM_H_ | 
|  |  | 
|  | #include <functional> | 
|  | #include <utility> | 
|  |  | 
|  | #include "quiche/quic/core/http/quic_spdy_client_stream.h" | 
|  | #include "quiche/common/quiche_callbacks.h" | 
|  |  | 
|  | namespace quic { | 
|  |  | 
|  | class QuicSimpleClientStream : public QuicSpdyClientStream { | 
|  | public: | 
|  | QuicSimpleClientStream(QuicStreamId id, QuicSpdyClientSession* session, | 
|  | StreamType type, bool drop_response_body) | 
|  | : QuicSpdyClientStream(id, session, type), | 
|  | drop_response_body_(drop_response_body) {} | 
|  | void OnBodyAvailable() override; | 
|  |  | 
|  | void set_on_interim_headers( | 
|  | quiche::MultiUseCallback<void(const spdy::Http2HeaderBlock&)> | 
|  | on_interim_headers) { | 
|  | on_interim_headers_ = std::move(on_interim_headers); | 
|  | } | 
|  |  | 
|  | protected: | 
|  | bool ParseAndValidateStatusCode() override; | 
|  |  | 
|  | private: | 
|  | quiche::MultiUseCallback<void(const spdy::Http2HeaderBlock&)> | 
|  | on_interim_headers_; | 
|  | const bool drop_response_body_; | 
|  | }; | 
|  |  | 
|  | }  // namespace quic | 
|  |  | 
|  | #endif  // QUICHE_QUIC_TOOLS_QUIC_SIMPLE_CLIENT_STREAM_H_ |