private async Task VerifyAsync(RemotableData remotableData, ISerializerService serializerService, CancellationToken cancellationToken) { using (var stream = new MemoryStream()) using (var writer = new ObjectWriter(stream, cancellationToken)) { await remotableData.WriteObjectToAsync(writer, cancellationToken).ConfigureAwait(false); stream.Position = 0; using (var reader = ObjectReader.TryGetReader(stream, cancellationToken)) { var value = serializerService.Deserialize <object>(remotableData.Kind, reader, cancellationToken); var checksum = serializerService.CreateChecksum(value, cancellationToken); Debug.Assert(checksum == remotableData.Checksum); } } }
private static async Task <RemotableData> CloneAssetAsync(Serializer serializer, RemotableData asset) { using (var stream = SerializableBytes.CreateWritableStream()) using (var writer = new ObjectWriter(stream)) { await asset.WriteObjectToAsync(writer, CancellationToken.None).ConfigureAwait(false); stream.Position = 0; using (var reader = ObjectReader.TryGetReader(stream)) { var recovered = serializer.Deserialize <object>(asset.Kind, reader, CancellationToken.None); var assetFromStorage = SolutionAsset.Create(serializer.CreateChecksum(recovered, CancellationToken.None), recovered, serializer); Assert.Equal(asset.Checksum, assetFromStorage.Checksum); return(assetFromStorage); } } }
internal static async Task VerifySynchronizationObjectInServiceAsync(IRemotableDataService snapshotService, RemotableData syncObject) => await VerifyChecksumInServiceAsync(snapshotService, syncObject.Checksum, syncObject.Kind).ConfigureAwait(false);