Exemple #1
0
        public async static Task <ISnapshot> GetSnapshot(GoogleApiClient googleApiClient, string name = SNAPSHOT_NAME)
        {
            Task <ISnapshotsOpenSnapshotResult> openSnapshotTask   = GamesClass.Snapshots.OpenAsync(googleApiClient, name, true, Snapshots.ResolutionPolicyManual);
            ISnapshotsOpenSnapshotResult        openSnapshotResult = await openSnapshotTask;

            return(await GetSnapshotFromResult(googleApiClient, openSnapshotResult));
        }
Exemple #2
0
        private async static Task <ISnapshot> GetSnapshotFromResult(GoogleApiClient googleApiClient, ISnapshotsOpenSnapshotResult openSnapshotResult)
        {
            switch (openSnapshotResult.Status.StatusCode)
            {
            case GamesStatusCodes.StatusOk:
                return(openSnapshotResult.Snapshot);

            case GamesStatusCodes.StatusSnapshotConflict:
                CloudCopyState state    = new CloudCopyState(openSnapshotResult.Snapshot);
                CloudCopyState conflict = new CloudCopyState(openSnapshotResult.ConflictingSnapshot);
                ISnapshotsOpenSnapshotResult resolveSnapshotResult;
                if (conflict.IsAhead(state))
                {
                    resolveSnapshotResult = await GamesClass.Snapshots.ResolveConflictAsync(googleApiClient, openSnapshotResult.ConflictId, openSnapshotResult.ConflictingSnapshot);
                }
                else
                {
                    resolveSnapshotResult = await GamesClass.Snapshots.ResolveConflictAsync(googleApiClient, openSnapshotResult.ConflictId, openSnapshotResult.Snapshot);
                }
                return(await GetSnapshotFromResult(googleApiClient, resolveSnapshotResult));
            }
            return(null);
        }