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

Side by Side Diff: chrome/browser/sync/engine/syncer_thread.h

Issue 3078022: Unplumb AllStatus from SyncerThread. (Closed)
Patch Set: parens Created 10 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // A class to run the syncer on a thread. 5 // A class to run the syncer on a thread.
6 // This is the default implementation of SyncerThread whose Stop implementation 6 // This is the default implementation of SyncerThread whose Stop implementation
7 // does not support a timeout, but is greatly simplified. 7 // does not support a timeout, but is greatly simplified.
8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
10 #pragma once 10 #pragma once
11 11
12 #include <list> 12 #include <list>
13 #include <map> 13 #include <map>
14 #include <queue> 14 #include <queue>
15 #include <vector> 15 #include <vector>
16 16
17 #include "base/basictypes.h" 17 #include "base/basictypes.h"
18 #include "base/condition_variable.h" 18 #include "base/condition_variable.h"
19 #include "base/gtest_prod_util.h" 19 #include "base/gtest_prod_util.h"
20 #include "base/ref_counted.h" 20 #include "base/ref_counted.h"
21 #include "base/scoped_ptr.h" 21 #include "base/scoped_ptr.h"
22 #include "base/thread.h" 22 #include "base/thread.h"
23 #include "base/time.h" 23 #include "base/time.h"
24 #include "base/waitable_event.h" 24 #include "base/waitable_event.h"
25 #include "chrome/browser/sync/engine/all_status.h"
26 #if defined(OS_LINUX) 25 #if defined(OS_LINUX)
27 #include "chrome/browser/sync/engine/idle_query_linux.h" 26 #include "chrome/browser/sync/engine/idle_query_linux.h"
28 #endif 27 #endif
29 #include "chrome/browser/sync/sessions/sync_session.h" 28 #include "chrome/browser/sync/sessions/sync_session.h"
30 #include "chrome/common/deprecated/event_sys-inl.h" 29 #include "chrome/common/deprecated/event_sys-inl.h"
31 30
32 class EventListenerHookup; 31 class EventListenerHookup;
33 32
34 namespace syncable { 33 namespace syncable {
35 class DirectoryManager; 34 class DirectoryManager;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 kContinuation 95 kContinuation
97 }; 96 };
98 // Server can overwrite these values via client commands. 97 // Server can overwrite these values via client commands.
99 // Standard short poll. This is used when XMPP is off. 98 // Standard short poll. This is used when XMPP is off.
100 static const int kDefaultShortPollIntervalSeconds; 99 static const int kDefaultShortPollIntervalSeconds;
101 // Long poll is used when XMPP is on. 100 // Long poll is used when XMPP is on.
102 static const int kDefaultLongPollIntervalSeconds; 101 static const int kDefaultLongPollIntervalSeconds;
103 // 30 minutes by default. If exponential backoff kicks in, this is the 102 // 30 minutes by default. If exponential backoff kicks in, this is the
104 // longest possible poll interval. 103 // longest possible poll interval.
105 static const int kDefaultMaxPollIntervalMs; 104 static const int kDefaultMaxPollIntervalMs;
105 // Maximum interval for exponential backoff.
106 static const int kMaxBackoffSeconds;
106 107
107 SyncerThread(sessions::SyncSessionContext* context, AllStatus* all_status); 108 explicit SyncerThread(sessions::SyncSessionContext* context);
108 virtual ~SyncerThread(); 109 virtual ~SyncerThread();
109 110
110 virtual void WatchConnectionManager(ServerConnectionManager* conn_mgr); 111 virtual void WatchConnectionManager(ServerConnectionManager* conn_mgr);
111 112
112 // Starts a syncer thread. 113 // Starts a syncer thread.
113 // Returns true if it creates a thread or if there's currently a thread 114 // Returns true if it creates a thread or if there's currently a thread
114 // running and false otherwise. 115 // running and false otherwise.
115 virtual bool Start(); 116 virtual bool Start();
116 117
117 // Stop processing. |max_wait| doesn't do anything in this version. 118 // Stop processing. |max_wait| doesn't do anything in this version.
(...skipping 13 matching lines...) Expand all
131 virtual bool RequestResume(); 132 virtual bool RequestResume();
132 133
133 // Nudges the syncer to sync with a delay specified. This API is for access 134 // Nudges the syncer to sync with a delay specified. This API is for access
134 // from the SyncerThread's controller and will cause a mutex lock. 135 // from the SyncerThread's controller and will cause a mutex lock.
135 virtual void NudgeSyncer(int milliseconds_from_now, NudgeSource source); 136 virtual void NudgeSyncer(int milliseconds_from_now, NudgeSource source);
136 137
137 void SetNotificationsEnabled(bool notifications_enabled); 138 void SetNotificationsEnabled(bool notifications_enabled);
138 139
139 virtual SyncerEventChannel* relay_channel(); 140 virtual SyncerEventChannel* relay_channel();
140 141
142 // DDOS avoidance function. The argument and return value is in seconds
143 static int GetRecommendedDelaySeconds(int base_delay_seconds);
144
141 protected: 145 protected:
142 virtual void ThreadMain(); 146 virtual void ThreadMain();
143 void ThreadMainLoop(); 147 void ThreadMainLoop();
144 148
145 virtual void SetConnected(bool connected) { 149 virtual void SetConnected(bool connected) {
146 DCHECK(!thread_.IsRunning()); 150 DCHECK(!thread_.IsRunning());
147 vault_.connected_ = connected; 151 vault_.connected_ = connected;
148 } 152 }
149 153
150 virtual void SetSyncerPollingInterval(base::TimeDelta interval) { 154 virtual void SetSyncerPollingInterval(base::TimeDelta interval) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // Calculates the next sync wait time and exponential backoff state. 251 // Calculates the next sync wait time and exponential backoff state.
248 // last_poll_wait is the time duration of the previous polling timeout which 252 // last_poll_wait is the time duration of the previous polling timeout which
249 // was used. user_idle_milliseconds is updated by this method, and is a report 253 // was used. user_idle_milliseconds is updated by this method, and is a report
250 // of the full amount of time since the last period of activity for the user. 254 // of the full amount of time since the last period of activity for the user.
251 // The continue_sync_cycle parameter is used to determine whether or not we 255 // The continue_sync_cycle parameter is used to determine whether or not we
252 // are calculating a polling wait time that is a continuation of an sync cycle 256 // are calculating a polling wait time that is a continuation of an sync cycle
253 // which terminated while the syncer still had work to do. was_nudged is used 257 // which terminated while the syncer still had work to do. was_nudged is used
254 // in case of exponential backoff so we only allow one nudge per backoff 258 // in case of exponential backoff so we only allow one nudge per backoff
255 // interval. 259 // interval.
256 WaitInterval CalculatePollingWaitTime( 260 WaitInterval CalculatePollingWaitTime(
257 const AllStatus::Status& status,
258 int last_poll_wait, // in s 261 int last_poll_wait, // in s
259 int* user_idle_milliseconds, 262 int* user_idle_milliseconds,
260 bool* continue_sync_cycle, 263 bool* continue_sync_cycle,
261 bool was_nudged); 264 bool was_nudged);
262 265
263 // Helper to above function, considers effect of user idle time. 266 // Helper to above function, considers effect of user idle time.
264 virtual int CalculateSyncWaitTime(int last_wait, int user_idle_ms); 267 virtual int CalculateSyncWaitTime(int last_wait, int user_idle_ms);
265 268
266 // Sets the source value of the controlled syncer's updates_source value. 269 // Sets the source value of the controlled syncer's updates_source value.
267 // The initial sync boolean is updated if read as a sentinel. The following 270 // The initial sync boolean is updated if read as a sentinel. The following
(...skipping 26 matching lines...) Expand all
294 // This sets all conditions for syncer thread termination but does not 297 // This sets all conditions for syncer thread termination but does not
295 // actually join threads. It is expected that Stop will be called at some 298 // actually join threads. It is expected that Stop will be called at some
296 // time after to fully stop and clean up. 299 // time after to fully stop and clean up.
297 void RequestSyncerExitAndSetThreadStopConditions(); 300 void RequestSyncerExitAndSetThreadStopConditions();
298 301
299 // State of the notification framework is tracked by these values. 302 // State of the notification framework is tracked by these values.
300 bool p2p_authenticated_; 303 bool p2p_authenticated_;
301 bool p2p_subscribed_; 304 bool p2p_subscribed_;
302 305
303 scoped_ptr<EventListenerHookup> conn_mgr_hookup_; 306 scoped_ptr<EventListenerHookup> conn_mgr_hookup_;
304 const AllStatus* allstatus_;
305 307
306 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be 308 // Modifiable versions of kDefaultLongPollIntervalSeconds which can be
307 // updated by the server. 309 // updated by the server.
308 int syncer_short_poll_interval_seconds_; 310 int syncer_short_poll_interval_seconds_;
309 int syncer_long_poll_interval_seconds_; 311 int syncer_long_poll_interval_seconds_;
310 312
311 // The time we wait between polls in seconds. This is used as lower bound on 313 // The time we wait between polls in seconds. This is used as lower bound on
312 // our wait time. Updated once per loop from the command line flag. 314 // our wait time. Updated once per loop from the command line flag.
313 int syncer_polling_interval_; 315 int syncer_polling_interval_;
314 316
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 349
348 // Useful for unit tests 350 // Useful for unit tests
349 bool disable_idle_detection_; 351 bool disable_idle_detection_;
350 352
351 DISALLOW_COPY_AND_ASSIGN(SyncerThread); 353 DISALLOW_COPY_AND_ASSIGN(SyncerThread);
352 }; 354 };
353 355
354 } // namespace browser_sync 356 } // namespace browser_sync
355 357
356 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 358 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/syncer_end_command.cc ('k') | chrome/browser/sync/engine/syncer_thread.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698