summaryrefslogtreecommitdiffstats
path: root/jingle/notifier/base
diff options
context:
space:
mode:
authorgagansingh@google.com <gagansingh@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-27 17:26:41 +0000
committergagansingh@google.com <gagansingh@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-27 17:26:41 +0000
commit5e6efa537dc4c06912f0bb42f16991c7ee7eafbc (patch)
treebd1336ab3629d3afd20c57c2c9d6de04603e1a10 /jingle/notifier/base
parent0d1293040f1f79e3cddc52ba18fc6ec85f140800 (diff)
downloadchromium_src-5e6efa537dc4c06912f0bb42f16991c7ee7eafbc.zip
chromium_src-5e6efa537dc4c06912f0bb42f16991c7ee7eafbc.tar.gz
chromium_src-5e6efa537dc4c06912f0bb42f16991c7ee7eafbc.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 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=90373 Reverted: http://codereview.chromium.org/7255002 :( Have fixed 2 things since: 1. Removed LOG(ERROR) from http_basic_stream.cc that was causing layout tests to fail. 2. Initialized class variables in http_basic_stream.cc that was causing uninitialized memory bugs in valgrind: http://code.google.com/p/chromium/issues/detail?id=87423 Review URL: http://codereview.chromium.org/7251004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90601 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'jingle/notifier/base')
-rw-r--r--jingle/notifier/base/fake_ssl_client_socket.cc10
-rw-r--r--jingle/notifier/base/fake_ssl_client_socket.h2
-rw-r--r--jingle/notifier/base/fake_ssl_client_socket_unittest.cc2
-rw-r--r--jingle/notifier/base/proxy_resolving_client_socket.cc14
-rw-r--r--jingle/notifier/base/proxy_resolving_client_socket.h2
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.