summaryrefslogtreecommitdiffstats
path: root/net/socket
diff options
context:
space:
mode:
authorjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-04 18:03:11 +0000
committerjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-04 18:03:11 +0000
commit060574563cd537d137226d4e73f6211407e1fac1 (patch)
treeda29294ee9e44225c76825b45a9c09e3b1f25d21 /net/socket
parent7371fff76ce7844f23994120714852ced26eaa5d (diff)
downloadchromium_src-060574563cd537d137226d4e73f6211407e1fac1.zip
chromium_src-060574563cd537d137226d4e73f6211407e1fac1.tar.gz
chromium_src-060574563cd537d137226d4e73f6211407e1fac1.tar.bz2
Revert 54771 - Enable speculative preconnection by default
Added histogram to track utilization (vs waste). [The stability bot was reporting problems, so I'm reverting] r=mbelshe Review URL: http://codereview.chromium.org/3026038 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/3090011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54930 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r--net/socket/client_socket.cc68
-rw-r--r--net/socket/client_socket.h38
-rw-r--r--net/socket/client_socket_handle.h10
-rw-r--r--net/socket/client_socket_pool_base.h11
4 files changed, 7 insertions, 120 deletions
diff --git a/net/socket/client_socket.cc b/net/socket/client_socket.cc
deleted file mode 100644
index df91283..0000000
--- a/net/socket/client_socket.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2010 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.
-
-#include "net/socket/client_socket.h"
-
-#include "base/histogram.h"
-
-namespace net {
-
-ClientSocket::ClientSocket()
- : omnibox_speculation_(false),
- subresource_speculation_(false),
- was_used_to_transmit_data_(false) {}
-
-ClientSocket::~ClientSocket() {
- EmitPreconnectionHistograms();
-}
-
-void ClientSocket::EmitPreconnectionHistograms() const {
- DCHECK(!subresource_speculation_ || !omnibox_speculation_);
- // 0 ==> non-speculative, never connected.
- // 1 ==> non-speculative never used (but connected).
- // 2 ==> non-spculative and used.
- // 3 ==> omnibox_speculative never connected.
- // 4 ==> omnibox_speculative never used (but connected).
- // 5 ==> omnibox_speculative and used.
- // 6 ==> subresource_speculative never connected.
- // 7 ==> subresource_speculative never used (but connected).
- // 8 ==> subresource_speculative and used.
- int result;
- if (was_used_to_transmit_data_)
- result = 2;
- else if (was_ever_connected_)
- result = 1;
- else
- result = 0; // Never used, and not really connected.
-
- if (omnibox_speculation_)
- result += 3;
- else if (subresource_speculation_)
- result += 6;
- UMA_HISTOGRAM_ENUMERATION("Net.PreconnectUtilization", result, 9);
-}
-
-void ClientSocket::SetSubresourceSpeculation() {
- if (was_used_to_transmit_data_)
- return;
- subresource_speculation_ = true;
-}
-
-void ClientSocket::SetOmniboxSpeculation() {
- if (was_used_to_transmit_data_)
- return;
- omnibox_speculation_ = true;
-}
-
-void ClientSocket::UpdateConnectivityState(bool is_reused) {
- // Record if this connection has every actually connected successfully.
- // Note that IsConnected() won't be defined at destruction time, so we need
- // to record this data now, while the derived class is present.
- was_ever_connected_ |= IsConnected();
- // A socket is_reused only after it has transmitted some data.
- was_used_to_transmit_data_ |= is_reused;
-}
-
-} // namespace net
-
diff --git a/net/socket/client_socket.h b/net/socket/client_socket.h
index 44ee085..29d297e 100644
--- a/net/socket/client_socket.h
+++ b/net/socket/client_socket.h
@@ -15,26 +15,6 @@ class BoundNetLog;
class ClientSocket : public Socket {
public:
- ClientSocket();
-
- // Destructor emits statistics for this socket's lifetime.
- virtual ~ClientSocket();
-
- // Set the annotation to indicate this socket was created for speculative
- // reasons. Note that if the socket was used before calling this method, then
- // the call will be ignored (no annotation will be added).
- void SetSubresourceSpeculation();
- void SetOmniboxSpeculation();
-
- // Establish values of was_ever_connected_ and was_used_to_transmit_data_.
- // The argument indicates if the socket's state, as reported by a
- // ClientSocketHandle::is_reused(), should show that the socket has already
- // been used to transmit data.
- // This is typically called when a transaction finishes, and
- // ClientSocketHandle is being destroyed. Calling at that point it allows us
- // to aggregates the impact of that connect job into this instance.
- void UpdateConnectivityState(bool is_reused);
-
// Called to establish a connection. Returns OK if the connection could be
// established synchronously. Otherwise, ERR_IO_PENDING is returned and the
// given callback will run asynchronously when the connection is established
@@ -74,24 +54,6 @@ class ClientSocket : public Socket {
// Gets the NetLog for this socket.
virtual const BoundNetLog& NetLog() const = 0;
-
- private:
- // Publish histogram to help evaluate preconnection utilization.
- void EmitPreconnectionHistograms() const;
-
- // Indicate if any ClientSocketHandle that used this socket was connected as
- // would be indicated by the IsConnected() method. This variable set by a
- // ClientSocketHandle before releasing this ClientSocket.
- bool was_ever_connected_;
-
- // Indicate if this socket was first created for speculative use, and identify
- // the motivation.
- bool omnibox_speculation_;
- bool subresource_speculation_;
-
- // Indicate if this socket was ever used. This state is set by a
- // ClientSocketHandle before releasing this ClientSocket.
- bool was_used_to_transmit_data_;
};
} // namespace net
diff --git a/net/socket/client_socket_handle.h b/net/socket/client_socket_handle.h
index d0be910..adccc89 100644
--- a/net/socket/client_socket_handle.h
+++ b/net/socket/client_socket_handle.h
@@ -132,15 +132,7 @@ class ClientSocketHandle {
const std::string& group_name() const { return group_name_; }
int id() const { return pool_id_; }
ClientSocket* socket() { return socket_.get(); }
- ClientSocket* release_socket() {
- // Update the base class to record things like whether we've ever
- // transmitted data, and whether the connection was able to be established.
- // We use this data to construct histograms indicating whether a
- // speculative connection was ever used, etc., when the ClientSocket is
- // eventually discarded.
- socket_->UpdateConnectivityState(is_reused());
- return socket_.release();
- }
+ ClientSocket* release_socket() { return socket_.release(); }
bool is_reused() const { return is_reused_; }
base::TimeDelta idle_time() const { return idle_time_; }
SocketReuseType reuse_type() const {
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index 96c78d5..30cff70 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -491,7 +491,7 @@ class ClientSocketPoolBase {
const scoped_refptr<SocketParams>& params,
const BoundNetLog& net_log)
: internal::ClientSocketPoolBaseHelper::Request(
- handle, callback, priority, net_log),
+ handle, callback, priority, net_log),
params_(params) {}
const scoped_refptr<SocketParams>& params() const { return params_; }
@@ -531,9 +531,9 @@ class ClientSocketPoolBase {
ConnectJobFactory* connect_job_factory)
: histograms_(histograms),
helper_(new internal::ClientSocketPoolBaseHelper(
- max_sockets, max_sockets_per_group,
- unused_idle_socket_timeout, used_idle_socket_timeout,
- new ConnectJobFactoryAdaptor(connect_job_factory))) {}
+ max_sockets, max_sockets_per_group,
+ unused_idle_socket_timeout, used_idle_socket_timeout,
+ new ConnectJobFactoryAdaptor(connect_job_factory))) {}
virtual ~ClientSocketPoolBase() {}
@@ -611,7 +611,8 @@ class ClientSocketPoolBase {
typedef typename ClientSocketPoolBase<SocketParams>::ConnectJobFactory
ConnectJobFactory;
- explicit ConnectJobFactoryAdaptor(ConnectJobFactory* connect_job_factory)
+ explicit ConnectJobFactoryAdaptor(
+ ConnectJobFactory* connect_job_factory)
: connect_job_factory_(connect_job_factory) {}
virtual ~ConnectJobFactoryAdaptor() {}