diff options
author | gagansingh@google.com <gagansingh@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-24 16:47:06 +0000 |
---|---|---|
committer | gagansingh@google.com <gagansingh@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-24 16:47:06 +0000 |
commit | 0ca76cb6e3d1ca12d55bab9900a8f0a650c6db09 (patch) | |
tree | f03dd8bc67014c738f70a1c1bb20f62af72902e6 /jingle/notifier | |
parent | 591805d2915ce33ccd61eb624924f14f95b5c15d (diff) | |
download | chromium_src-0ca76cb6e3d1ca12d55bab9900a8f0a650c6db09.zip chromium_src-0ca76cb6e3d1ca12d55bab9900a8f0a650c6db09.tar.gz chromium_src-0ca76cb6e3d1ca12d55bab9900a8f0a650c6db09.tar.bz2 |
Warmth of a connection (cwnd) is estimated by the amount of data written to the socket.
Choosing the warmest connection would mean faster resource load times.
idle time is the time a socket has remained idle (no http requests being served on it).
Probability of server resetting a connection increases with idle time duration.
Using a cost function that takes into account bytes transferred and idle time to pick best connection to schedule http requests on.
CODEREVIEW done in http://codereview.chromium.org/6990036/
Contributed by gagansingh@google.com
Review URL: http://codereview.chromium.org/7189055
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90373 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'jingle/notifier')
5 files changed, 29 insertions, 1 deletions
diff --git a/jingle/notifier/base/fake_ssl_client_socket.cc b/jingle/notifier/base/fake_ssl_client_socket.cc index 8838f13..20a3f39 100644 --- a/jingle/notifier/base/fake_ssl_client_socket.cc +++ b/jingle/notifier/base/fake_ssl_client_socket.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -336,4 +336,12 @@ bool FakeSSLClientSocket::UsingTCPFastOpen() const { return transport_socket_->UsingTCPFastOpen(); } +int64 FakeSSLClientSocket::NumBytesRead() const { + return transport_socket_->NumBytesRead(); +} + +base::TimeDelta FakeSSLClientSocket::GetConnectTimeMicros() const { + return transport_socket_->GetConnectTimeMicros(); +} + } // namespace notifier diff --git a/jingle/notifier/base/fake_ssl_client_socket.h b/jingle/notifier/base/fake_ssl_client_socket.h index f2282c2..1688b70 100644 --- a/jingle/notifier/base/fake_ssl_client_socket.h +++ b/jingle/notifier/base/fake_ssl_client_socket.h @@ -62,6 +62,8 @@ class FakeSSLClientSocket : public net::StreamSocket { virtual void SetOmniboxSpeculation(); virtual bool WasEverUsed() const; virtual bool UsingTCPFastOpen() const; + virtual int64 NumBytesRead() const; + virtual base::TimeDelta GetConnectTimeMicros() const; private: enum HandshakeState { diff --git a/jingle/notifier/base/fake_ssl_client_socket_unittest.cc b/jingle/notifier/base/fake_ssl_client_socket_unittest.cc index 6f5c2da..2fe21b4 100644 --- a/jingle/notifier/base/fake_ssl_client_socket_unittest.cc +++ b/jingle/notifier/base/fake_ssl_client_socket_unittest.cc @@ -62,6 +62,8 @@ class MockClientSocket : public net::StreamSocket { MOCK_METHOD0(SetOmniboxSpeculation, void()); MOCK_CONST_METHOD0(WasEverUsed, bool()); MOCK_CONST_METHOD0(UsingTCPFastOpen, bool()); + MOCK_CONST_METHOD0(NumBytesRead, int64()); + MOCK_CONST_METHOD0(GetConnectTimeMicros, base::TimeDelta()); }; // Break up |data| into a bunch of chunked MockReads/Writes and push diff --git a/jingle/notifier/base/proxy_resolving_client_socket.cc b/jingle/notifier/base/proxy_resolving_client_socket.cc index e34ca1c..4deda20 100644 --- a/jingle/notifier/base/proxy_resolving_client_socket.cc +++ b/jingle/notifier/base/proxy_resolving_client_socket.cc @@ -342,6 +342,20 @@ bool ProxyResolvingClientSocket::UsingTCPFastOpen() const { return false; } +int64 ProxyResolvingClientSocket::NumBytesRead() const { + if (transport_.get() && transport_->socket()) + return transport_->socket()->NumBytesRead(); + NOTREACHED(); + return -1; +} + +base::TimeDelta ProxyResolvingClientSocket::GetConnectTimeMicros() const { + if (transport_.get() && transport_->socket()) + return transport_->socket()->GetConnectTimeMicros(); + NOTREACHED(); + return base::TimeDelta::FromMicroseconds(-1); +} + void ProxyResolvingClientSocket::CloseTransportSocket() { if (transport_.get() && transport_->socket()) transport_->socket()->Disconnect(); diff --git a/jingle/notifier/base/proxy_resolving_client_socket.h b/jingle/notifier/base/proxy_resolving_client_socket.h index 8e95f87..b97315b 100644 --- a/jingle/notifier/base/proxy_resolving_client_socket.h +++ b/jingle/notifier/base/proxy_resolving_client_socket.h @@ -56,6 +56,8 @@ class ProxyResolvingClientSocket : public net::StreamSocket { virtual void SetOmniboxSpeculation() OVERRIDE; virtual bool WasEverUsed() const OVERRIDE; virtual bool UsingTCPFastOpen() const OVERRIDE; + virtual int64 NumBytesRead() const OVERRIDE; + virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; private: // Proxy resolution and connection functions. |