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

Unified Diff: chrome/browser/sync/sessions/sync_session.h

Issue 5939006: sync: beginnings of MessageLoop based SyncerThread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment Created 10 years 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: chrome/browser/sync/sessions/sync_session.h
diff --git a/chrome/browser/sync/sessions/sync_session.h b/chrome/browser/sync/sessions/sync_session.h
index ce7c9e5dd11da04267ce648cf907b058190a2673..5226fb41267dd7262d0144a90801d3ab8598cadd 100644
--- a/chrome/browser/sync/sessions/sync_session.h
+++ b/chrome/browser/sync/sessions/sync_session.h
@@ -19,6 +19,7 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "base/time.h"
#include "chrome/browser/sync/sessions/ordered_commit_set.h"
@@ -38,7 +39,7 @@ namespace sessions {
typedef std::pair<sync_pb::GetUpdatesCallerInfo::GetUpdatesSource,
syncable::ModelTypeBitSet> SyncSourceInfo;
-class SyncSession {
+class SyncSession : public base::RefCountedThreadSafe<SyncSession> {
akalin 2011/01/13 00:36:34 Why does this have to be refcounted?
tim (not reviewing) 2011/01/13 18:26:56 I discussed this tradeoff in the design doc (linke
public:
// The Delegate services events that occur during the session requiring an
// explicit (and session-global) action, as opposed to events that are simply
@@ -92,8 +93,19 @@ class SyncSession {
// engine again.
bool HasMoreToSync() const;
- SyncSessionContext* context() { return context_; }
- Delegate* delegate() { return delegate_; }
+ // Collects all state pertaining to how and why |s| originated and unions it
+ // with corresponding state in |this|, leaving |s| unchanged. Allows |this|
+ // to take on the responsibilities |s| had (e.g. certain data types) in the
+ // next SyncShare operation using |this|, rather than needed two separate
+ // sessions.
+ void Coalesce(const SyncSession* s);
+
+ // Should be called any time |this| is being re-used in a new call to
+ // SyncShare (e.g., HasMoreToSync returned true).
+ void ResetTransientState();
+
+ SyncSessionContext* context() const { return context_; }
+ Delegate* delegate() const { return delegate_; }
syncable::WriteTransaction* write_transaction() { return write_transaction_; }
StatusController* status_controller() { return status_controller_.get(); }

Powered by Google App Engine
This is Rietveld 408576698