123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- // 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.
- //
- // HttpBasicStream is a simple implementation of HttpStream. It assumes it is
- // not sharing a sharing with any other HttpStreams, therefore it just reads and
- // writes directly to the Http Stream.
- #ifndef NET_HTTP_HTTP_BASIC_STREAM_H_
- #define NET_HTTP_HTTP_BASIC_STREAM_H_
- #include <stdint.h>
- #include <memory>
- #include <set>
- #include <string>
- #include "base/strings/string_piece.h"
- #include "base/time/time.h"
- #include "net/base/completion_once_callback.h"
- #include "net/base/net_export.h"
- #include "net/http/http_basic_state.h"
- #include "net/http/http_stream.h"
- namespace net {
- class ClientSocketHandle;
- class HttpResponseInfo;
- struct HttpRequestInfo;
- class HttpRequestHeaders;
- class HttpStreamParser;
- class IOBuffer;
- class NetLogWithSource;
- class NET_EXPORT_PRIVATE HttpBasicStream : public HttpStream {
- public:
- // Constructs a new HttpBasicStream. InitializeStream must be called to
- // initialize it correctly.
- HttpBasicStream(std::unique_ptr<ClientSocketHandle> connection,
- bool using_proxy);
- HttpBasicStream(const HttpBasicStream&) = delete;
- HttpBasicStream& operator=(const HttpBasicStream&) = delete;
- ~HttpBasicStream() override;
- // HttpStream methods:
- void RegisterRequest(const HttpRequestInfo* request_info) override;
- int InitializeStream(bool can_send_early,
- RequestPriority priority,
- const NetLogWithSource& net_log,
- CompletionOnceCallback callback) override;
- int SendRequest(const HttpRequestHeaders& headers,
- HttpResponseInfo* response,
- CompletionOnceCallback callback) override;
- int ReadResponseHeaders(CompletionOnceCallback callback) override;
- int ReadResponseBody(IOBuffer* buf,
- int buf_len,
- CompletionOnceCallback callback) override;
- void Close(bool not_reusable) override;
- std::unique_ptr<HttpStream> RenewStreamForAuth() override;
- bool IsResponseBodyComplete() const override;
- bool IsConnectionReused() const override;
- void SetConnectionReused() override;
- bool CanReuseConnection() const override;
- int64_t GetTotalReceivedBytes() const override;
- int64_t GetTotalSentBytes() const override;
- bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const override;
- bool GetAlternativeService(
- AlternativeService* alternative_service) const override;
- void GetSSLInfo(SSLInfo* ssl_info) override;
- void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override;
- int GetRemoteEndpoint(IPEndPoint* endpoint) override;
- void Drain(HttpNetworkSession* session) override;
- void PopulateNetErrorDetails(NetErrorDetails* details) override;
- void SetPriority(RequestPriority priority) override;
- void SetRequestHeadersCallback(RequestHeadersCallback callback) override;
- const std::set<std::string>& GetDnsAliases() const override;
- base::StringPiece GetAcceptChViaAlps() const override;
- private:
- HttpStreamParser* parser() const { return state_.parser(); }
- void OnHandshakeConfirmed(CompletionOnceCallback callback, int rv);
- HttpBasicState state_;
- base::TimeTicks confirm_handshake_end_;
- RequestHeadersCallback request_headers_callback_;
- // The request to send.
- // Set to null before the response body is read. This is to allow |this| to
- // be shared for reading and to possibly outlive request_info_'s owner.
- // Setting to null happens after headers are completely read or upload data
- // stream is uploaded, whichever is later.
- raw_ptr<const HttpRequestInfo> request_info_;
- };
- } // namespace net
- #endif // NET_HTTP_HTTP_BASIC_STREAM_H_
|