diff options
Diffstat (limited to 'chromium/net/http/http_pipelined_connection.h')
-rw-r--r-- | chromium/net/http/http_pipelined_connection.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/chromium/net/http/http_pipelined_connection.h b/chromium/net/http/http_pipelined_connection.h new file mode 100644 index 00000000000..d0d3599e3f1 --- /dev/null +++ b/chromium/net/http/http_pipelined_connection.h @@ -0,0 +1,93 @@ +// 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_HTTP_HTTP_PIPELINED_CONNECTION_H_ +#define NET_HTTP_HTTP_PIPELINED_CONNECTION_H_ + +#include "net/base/net_export.h" +#include "net/base/net_log.h" +#include "net/socket/ssl_client_socket.h" + +namespace net { + +class BoundNetLog; +class ClientSocketHandle; +class HostPortPair; +class HttpPipelinedStream; +class ProxyInfo; +struct SSLConfig; + +class NET_EXPORT_PRIVATE HttpPipelinedConnection { + public: + enum Feedback { + OK, + PIPELINE_SOCKET_ERROR, + OLD_HTTP_VERSION, + MUST_CLOSE_CONNECTION, + AUTHENTICATION_REQUIRED, + }; + + class Delegate { + public: + // Called when a pipeline has newly available capacity. This may be because + // the first request has been sent and the pipeline is now active. Or, it + // may be because a request successfully completed. + virtual void OnPipelineHasCapacity(HttpPipelinedConnection* pipeline) = 0; + + // Called every time a pipeline receives headers. Lets the delegate know if + // the headers indicate that pipelining can be used. + virtual void OnPipelineFeedback(HttpPipelinedConnection* pipeline, + Feedback feedback) = 0; + }; + + class Factory { + public: + virtual ~Factory() {} + + virtual HttpPipelinedConnection* CreateNewPipeline( + ClientSocketHandle* connection, + Delegate* delegate, + const HostPortPair& origin, + const SSLConfig& used_ssl_config, + const ProxyInfo& used_proxy_info, + const BoundNetLog& net_log, + bool was_npn_negotiated, + NextProto protocol_negotiated) = 0; + }; + + virtual ~HttpPipelinedConnection() {} + + // Returns a new stream that uses this pipeline. + virtual HttpPipelinedStream* CreateNewStream() = 0; + + // The number of streams currently associated with this pipeline. + virtual int depth() const = 0; + + // True if this pipeline can accept new HTTP requests. False if a fatal error + // has occurred. + virtual bool usable() const = 0; + + // True if this pipeline has bound one request and is ready for additional + // requests. + virtual bool active() const = 0; + + // The SSLConfig used to establish this connection. + virtual const SSLConfig& used_ssl_config() const = 0; + + // The ProxyInfo used to establish this connection. + virtual const ProxyInfo& used_proxy_info() const = 0; + + // The BoundNetLog of this pipelined connection. + virtual const BoundNetLog& net_log() const = 0; + + // True if this connection was NPN negotiated. + virtual bool was_npn_negotiated() const = 0; + + // Protocol negotiated with the server. + virtual NextProto protocol_negotiated() const = 0; +}; + +} // namespace net + +#endif // NET_HTTP_HTTP_PIPELINED_CONNECTION_H_ |