Example #1
0
            private IList <ValueTuple <Checksum, object> > ReadAssets(
                Stream stream, int sessionId, ISet <Checksum> checksums, CancellationToken cancellationToken)
            {
                var results = new List <ValueTuple <Checksum, object> >();

                using (var reader = new StreamObjectReader(stream))
                {
                    var responseSessionId = reader.ReadInt32();
                    Contract.ThrowIfFalse(sessionId == responseSessionId);

                    var count = reader.ReadInt32();
                    Contract.ThrowIfFalse(count == checksums.Count);

                    for (var i = 0; i < count; i++)
                    {
                        var responseChecksum = new Checksum(reader.ReadArray <byte>());
                        Contract.ThrowIfFalse(checksums.Contains(responseChecksum));

                        var kind = reader.ReadString();

                        // in service hub, cancellation means simply closed stream
                        var @object = _owner.RoslynServices.AssetService.Deserialize <object>(kind, reader, cancellationToken);

                        results.Add(ValueTuple.Create(responseChecksum, @object));
                    }

                    return(results);
                }
            }
            private IList<ValueTuple<Checksum, object>> ReadAssets(
                Stream stream, int sessionId, ISet<Checksum> checksums, CancellationToken cancellationToken)
            {
                var results = new List<ValueTuple<Checksum, object>>();
                using (var reader = new StreamObjectReader(stream))
                {
                    var responseSessionId = reader.ReadInt32();
                    Contract.ThrowIfFalse(sessionId == responseSessionId);

                    var count = reader.ReadInt32();
                    Contract.ThrowIfFalse(count == checksums.Count);

                    for (var i = 0; i < count; i++)
                    {
                        var responseChecksum = new Checksum(reader.ReadArray<byte>());
                        Contract.ThrowIfFalse(checksums.Contains(responseChecksum));

                        var kind = reader.ReadString();

                        // in service hub, cancellation means simply closed stream
                        var @object = _owner.RoslynServices.AssetService.Deserialize<object>(kind, reader, cancellationToken);

                        results.Add(ValueTuple.Create(responseChecksum, @object));
                    }

                    return results;
                }
            }
Example #3
0
        private static bool TryReadFrom(Project project, string keyName, out Versions versions)
        {
            versions = default(Versions);

            var service = project.Solution.Workspace.Services.GetService <IPersistentStorageService>();

            if (service == null)
            {
                return(false);
            }

            using (var storage = service.GetStorage(project.Solution))
                using (var stream = storage.ReadStreamAsync(keyName, CancellationToken.None).WaitAndGetResult(CancellationToken.None))
                {
                    if (stream == null)
                    {
                        return(false);
                    }

                    try
                    {
                        using (var reader = new StreamObjectReader(stream))
                        {
                            var formatVersion = reader.ReadInt32();
                            if (formatVersion != SerializationFormat)
                            {
                                return(false);
                            }

                            var persistedProjectVersion  = VersionStamp.ReadFrom(reader);
                            var persistedSemanticVersion = VersionStamp.ReadFrom(reader);

                            versions = new Versions(persistedProjectVersion, persistedSemanticVersion);
                            return(true);
                        }
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
        }
        private static bool TryReadFrom(Project project, string keyName, out Versions versions)
        {
            versions = default(Versions);

            var service = project.Solution.Workspace.Services.GetService<IPersistentStorageService>();
            if (service == null)
            {
                return false;
            }

            using (var storage = service.GetStorage(project.Solution))
            using (var stream = storage.ReadStreamAsync(keyName, CancellationToken.None).WaitAndGetResult(CancellationToken.None))
            {
                if (stream == null)
                {
                    return false;
                }

                try
                {
                    using (var reader = new StreamObjectReader(stream))
                    {
                        var formatVersion = reader.ReadInt32();
                        if (formatVersion != SerializationFormat)
                        {
                            return false;
                        }

                        var persistedProjectVersion = VersionStamp.ReadFrom(reader);
                        var persistedSemanticVersion = VersionStamp.ReadFrom(reader);

                        versions = new Versions(persistedProjectVersion, persistedSemanticVersion);
                        return true;
                    }
                }
                catch (Exception)
                {
                    return false;
                }
            }
        }