diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-14 03:31:54 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-14 03:31:54 +0000 |
commit | bb2ef44d4178a0ed3175d0ee222196f458f0354f (patch) | |
tree | 91615b498d7632ec3b55c0ef66100b0a8115276c /chrome/browser/sync/tools | |
parent | 4db064760f1b2a9f996e6a9711c95d29f4a32f01 (diff) | |
download | chromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.zip chromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.tar.gz chromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.tar.bz2 |
[Sync] Made notifications code read/write persistent state.
BUG=58556
TEST=Manual
Review URL: http://codereview.chromium.org/3772001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync/tools')
-rw-r--r-- | chrome/browser/sync/tools/sync_listen_notifications.cc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/chrome/browser/sync/tools/sync_listen_notifications.cc b/chrome/browser/sync/tools/sync_listen_notifications.cc index 5c86fa4..c619e14 100644 --- a/chrome/browser/sync/tools/sync_listen_notifications.cc +++ b/chrome/browser/sync/tools/sync_listen_notifications.cc @@ -161,7 +161,9 @@ class CacheInvalidationNotifierDelegate : public XmppNotificationClient::Observer, public sync_notifier::StateWriter { public: - CacheInvalidationNotifierDelegate() {} + explicit CacheInvalidationNotifierDelegate( + const std::string& cache_invalidation_state) + : cache_invalidation_state_(cache_invalidation_state) {} virtual ~CacheInvalidationNotifierDelegate() {} @@ -170,8 +172,7 @@ class CacheInvalidationNotifierDelegate // TODO(akalin): app_name should be per-client unique. const std::string kAppName = "cc_sync_listen_notifications"; - std::string state = ""; - chrome_invalidation_client_.Start(kAppName, state, + chrome_invalidation_client_.Start(kAppName, cache_invalidation_state_, &chrome_invalidation_listener_, this, base_task); chrome_invalidation_client_.RegisterTypes(); @@ -184,11 +185,15 @@ class CacheInvalidationNotifierDelegate virtual void WriteState(const std::string& state) { std::string base64_state; CHECK(base::Base64Encode(state, &base64_state)); - LOG(INFO) << "Writing state: " << base64_state; + LOG(INFO) << "New state: " << base64_state; } private: ChromeInvalidationListener chrome_invalidation_listener_; + // Opaque blob capturing the notifications state of a previous run + // (i.e., the base64-decoded value of a string output by + // WriteState()). + std::string cache_invalidation_state_; sync_notifier::ChromeInvalidationClient chrome_invalidation_client_; }; @@ -210,7 +215,8 @@ int main(int argc, char* argv[]) { if (email.empty()) { printf("Usage: %s --email=foo@bar.com [--password=mypassword] " "[--server=talk.google.com] [--port=5222] [--allow-plain] " - "[--disable-tls] [--use-cache-invalidation] [--use-ssl-tcp]\n", + "[--disable-tls] [--use-cache-invalidation] [--use-ssl-tcp] " + "[--cache-invalidtion-state]\n", argv[0]); return -1; } @@ -239,6 +245,15 @@ int main(int argc, char* argv[]) { LOG(WARNING) << switches::kSyncUseSslTcp << " is set but port is " << port << " instead of 443"; } + std::string cache_invalidation_state; + std::string cache_invalidation_state_encoded = + command_line.GetSwitchValueASCII("cache-invalidation-state"); + if (!cache_invalidation_state_encoded.empty() && + !base::Base64Decode(cache_invalidation_state_encoded, + &cache_invalidation_state)) { + LOG(ERROR) << "Could not decode state: " + << cache_invalidation_state_encoded; + } // Build XMPP client settings. buzz::XmppClientSettings xmpp_client_settings; @@ -266,7 +281,8 @@ int main(int argc, char* argv[]) { // Connect and listen. LegacyNotifierDelegate legacy_notifier_delegate; - CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate; + CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate( + cache_invalidation_state); std::vector<XmppNotificationClient::Observer*> observers; // TODO(akalin): Add switch to listen to both. if (command_line.HasSwitch(switches::kSyncUseCacheInvalidation)) { |