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)); }
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); }