internal static void SnapshotEqual(ISolutionChecksumService service, SolutionChecksumObject solutionId1, SolutionChecksumObject solutionId2)
        {
            ChecksumObjectEqual(solutionId1, solutionId2);
            Assert.Equal(solutionId1.Info, solutionId2.Info);

            CollectionEqual(service, solutionId1.Projects.ToProjectObjects(service), solutionId2.Projects.ToProjectObjects(service));
        }
Exemplo n.º 2
0
            private async Task SynchronizeDocumentsAsync(SolutionChecksumObject solutionChecksumObject, CancellationToken cancellationToken)
            {
                // get children of document checksum objects at once
                var documentChecksums = new HashSet <Checksum>();

                foreach (var projectChecksum in solutionChecksumObject.Projects)
                {
                    var projectChecksumObject = await _assetService.GetAssetAsync <ProjectChecksumObject>(projectChecksum, cancellationToken).ConfigureAwait(false);

                    foreach (var checksum in projectChecksumObject.Documents)
                    {
                        var documentChecksumObject = await _assetService.GetAssetAsync <DocumentChecksumObject>(checksum, cancellationToken).ConfigureAwait(false);

                        AddIfNeeded(documentChecksums, documentChecksumObject.Children);
                    }

                    foreach (var checksum in projectChecksumObject.AdditionalDocuments)
                    {
                        var documentChecksumObject = await _assetService.GetAssetAsync <DocumentChecksumObject>(checksum, cancellationToken).ConfigureAwait(false);

                        AddIfNeeded(documentChecksums, documentChecksumObject.Children);
                    }
                }

                await _assetService.SynchronizeAssetsAsync(documentChecksums, cancellationToken).ConfigureAwait(false);
            }
Exemplo n.º 3
0
            private async Task SynchronizeSolutionAsync(SolutionChecksumObject solutionChecksumObject, CancellationToken cancellationToken)
            {
                // get children of solution checksum object at once
                var solutionChecksums = new HashSet <Checksum>();

                AddIfNeeded(solutionChecksums, solutionChecksumObject.Children);
                await _assetService.SynchronizeAssetsAsync(solutionChecksums, cancellationToken).ConfigureAwait(false);
            }
Exemplo n.º 4
0
            private async Task SynchronizeSolutionAsync(SolutionChecksumObject solutionChecksumObject, CancellationToken cancellationToken)
            {
                // get children of solution checksum object at once
                using (var pooledObject = SharedPools.Default <HashSet <Checksum> >().GetPooledObject())
                {
                    var solutionChecksums = pooledObject.Object;

                    AddIfNeeded(solutionChecksums, solutionChecksumObject.Children);
                    await _assetService.SynchronizeAssetsAsync(solutionChecksums, cancellationToken).ConfigureAwait(false);
                }
            }
Exemplo n.º 5
0
        public ChecksumScope(
            ChecksumTreeCollection trees,
            IRootChecksumTreeNode tree,
            SolutionChecksumObject solutionChecksum)
        {
            _trees = trees;
            _tree = tree;

            SolutionChecksum = solutionChecksum;

            _trees.RegisterSnapshot(this, tree);
        }
Exemplo n.º 6
0
            private async Task SynchronizeProjectsAsync(SolutionChecksumObject solutionChecksumObject, CancellationToken cancellationToken)
            {
                // get children of project checksum objects at once
                using (var pooledObject = SharedPools.Default <HashSet <Checksum> >().GetPooledObject())
                {
                    var projectChecksums = pooledObject.Object;

                    foreach (var projectChecksum in solutionChecksumObject.Projects)
                    {
                        var projectChecksumObject = await _assetService.GetAssetAsync <ProjectChecksumObject>(projectChecksum, cancellationToken).ConfigureAwait(false);

                        AddIfNeeded(projectChecksums, projectChecksumObject.Children);
                    }

                    await _assetService.SynchronizeAssetsAsync(projectChecksums, cancellationToken).ConfigureAwait(false);
                }
            }
        internal static async Task VerifyAssetAsync(ISolutionChecksumService service, Solution solution, SolutionChecksumObject solutionId)
        {
            await VerifyAssetSerializationAsync <SolutionChecksumObjectInfo>(
                service, solutionId.Info, WellKnownChecksumObjects.SolutionChecksumObjectInfo,
                (v, k, s) => new Asset <SolutionChecksumObjectInfo>(v, k, s.SerializeSolutionSnapshotInfo)).ConfigureAwait(false);

            foreach (var checksum in solutionId.Projects)
            {
                var projectId = (ProjectChecksumObject)service.GetChecksumObject(checksum, CancellationToken.None);
                await VerifyAssetAsync(service, solution, projectId).ConfigureAwait(false);
            }
        }
        internal static async Task VerifySnapshotSerializationAsync(ISolutionChecksumService service, Solution solution, SolutionChecksumObject solutionId)
        {
            using (var stream = SerializableBytes.CreateWritableStream())
                using (var writer = new ObjectWriter(stream))
                {
                    await solutionId.WriteToAsync(writer, CancellationToken.None).ConfigureAwait(false);

                    stream.Position = 0;
                    using (var reader = new ObjectReader(stream))
                    {
                        var serializer = new Serializer(solution.Workspace.Services);
                        var recovered  = serializer.Deserialize <SolutionChecksumObject>(SolutionChecksumObject.Name, reader, CancellationToken.None);

                        SnapshotEqual(service, solutionId, recovered);
                    }
                }
        }