Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Unified Diff: google_apis/gcm/engine/connection_factory_impl.h

Issue 213693002: [GCM] Add support for canary connection attempts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactor tests Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: google_apis/gcm/engine/connection_factory_impl.h
diff --git a/google_apis/gcm/engine/connection_factory_impl.h b/google_apis/gcm/engine/connection_factory_impl.h
index 28c29414de3be48ff7de2a5ff6e7ae19ed2d9373..f637232d1ba3aed083e5114c75e7d660ab10691c 100644
--- a/google_apis/gcm/engine/connection_factory_impl.h
+++ b/google_apis/gcm/engine/connection_factory_impl.h
@@ -75,6 +75,14 @@ class GCM_EXPORT ConnectionFactoryImpl :
virtual scoped_ptr<net::BackoffEntry> CreateBackoffEntry(
const net::BackoffEntry::Policy* const policy);
+ // Helper method for creating the connection handler.
+ // Virtual for testing.
+ virtual scoped_ptr<ConnectionHandler> CreateConnectionHandler(
+ base::TimeDelta read_timeout,
+ const ConnectionHandler::ProtoReceivedCallback& read_callback,
+ const ConnectionHandler::ProtoSentCallback& write_callback,
+ const ConnectionHandler::ConnectionChangedCallback& connection_callback);
+
// Returns the current time in Ticks.
// Virtual for testing.
virtual base::TimeTicks NowTicks();
@@ -86,6 +94,10 @@ class GCM_EXPORT ConnectionFactoryImpl :
void ConnectionHandlerCallback(int result);
private:
+ // Helper method for checking backoff and triggering a connection as
+ // necessary.
+ void ConnectWithBackoff();
+
// Proxy resolution and connection functions.
void OnProxyResolveDone(int status);
void OnProxyConnectDone(int status);
@@ -121,11 +133,14 @@ class GCM_EXPORT ConnectionFactoryImpl :
// completion.
scoped_ptr<net::BackoffEntry> previous_backoff_;
- // Whether a connection attempt is currently in progress or we're in backoff
- // waiting until the next connection attempt. |!connecting_| denotes
- // steady state with an active connection.
+ // Whether a connection attempt is currently actively in progress.
bool connecting_;
+ // Whether the client is waiting for backoff to finish before attempting to
+ // connect. Canary jobs are able to preempt connections pending backoff
+ // expiration.
+ bool waiting_for_backoff_;
+
// Whether login successfully completed after the connection was established.
// If a connection reset happens while attempting to log in, the current
// backoff entry is reused (after incrementing with a new failure).
@@ -136,7 +151,7 @@ class GCM_EXPORT ConnectionFactoryImpl :
base::TimeTicks last_login_time_;
// The current connection handler, if one exists.
- scoped_ptr<ConnectionHandlerImpl> connection_handler_;
+ scoped_ptr<ConnectionHandler> connection_handler_;
// Builder for generating new login requests.
BuildLoginRequestCallback request_builder_;

Powered by Google App Engine
This is Rietveld 408576698