| Index: sync/sessions/sync_session.h
|
| ===================================================================
|
| --- sync/sessions/sync_session.h (revision 164641)
|
| +++ sync/sessions/sync_session.h (working copy)
|
| @@ -112,12 +112,26 @@
|
| // engine again.
|
| bool HasMoreToSync() const;
|
|
|
| - // Returns true if we reached the server. Note that "reaching the server"
|
| - // here means that from an HTTP perspective, we succeeded (HTTP 200). The
|
| - // server **MAY** have returned a sync protocol error.
|
| - // See SERVER_RETURN_* in the SyncerError enum for values.
|
| - bool DidReachServer() const;
|
| + // Returns true if we completely ran the session without errors.
|
| + //
|
| + // There are many errors that could prevent a sync cycle from succeeding.
|
| + // These include invalid local state, inability to contact the server,
|
| + // inability to authenticate with the server, and server errors. What they
|
| + // have in common is that the we either need to take some action and then
|
| + // retry the sync cycle or, in the case of transient errors, retry after some
|
| + // backoff timer has expired. Most importantly, the SyncScheduler should not
|
| + // assume that the original action that triggered the sync cycle (ie. a nudge
|
| + // or a notification) has been properly serviced.
|
| + //
|
| + // This function also returns false if SyncShare has not been called on this
|
| + // session yet, or if ResetTransientState() has been called on this session
|
| + // since the last call to SyncShare.
|
| + bool Succeeded() const;
|
|
|
| + // Returns true if we reached the server successfully and the server did not
|
| + // return any error codes. Returns false if no connection was attempted.
|
| + bool SuccessfullyReachedServer() const;
|
| +
|
| // 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
|
| @@ -125,13 +139,11 @@
|
| // sessions.
|
| void Coalesce(const SyncSession& session);
|
|
|
| - // Compares the routing_info_, workers and payload map with those passed in.
|
| - // Purges types from the above 3 which are not present in latest. Useful
|
| + // Compares the routing_info_, workers and payload map with the passed in
|
| + // session. Purges types from the above 3 which are not in session. Useful
|
| // to update the sync session when the user has disabled some types from
|
| // syncing.
|
| - void RebaseRoutingInfoWithLatest(
|
| - const ModelSafeRoutingInfo& routing_info,
|
| - const std::vector<ModelSafeWorker*>& workers);
|
| + void RebaseRoutingInfoWithLatest(const SyncSession& session);
|
|
|
| // Should be called any time |this| is being re-used in a new call to
|
| // SyncShare (e.g., HasMoreToSync returned true).
|
| @@ -165,6 +177,9 @@
|
| // Returns the set of enabled groups that have conflicts.
|
| std::set<ModelSafeGroup> GetEnabledGroupsWithConflicts() const;
|
|
|
| + // Mark the session has having finished all the sync steps it needed.
|
| + void SetFinished();
|
| +
|
| private:
|
| // Extend the encapsulation boundary to utilities for internal member
|
| // assignments. This way, the scope of these actions is explicit, they can't
|
| @@ -202,6 +217,10 @@
|
| // |routing_info_|.
|
| std::set<ModelSafeGroup> enabled_groups_;
|
|
|
| + // Whether this session has reached its last step or not. Gets reset on each
|
| + // new cycle (via PrepareForAnotherSyncCycle).
|
| + bool finished_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SyncSession);
|
| };
|
|
|
|
|