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);
                }
            }
Example #2
0
            protected override Data TryGetExistingData(Stream stream, Document value, CancellationToken cancellationToken)
            {
                var list = SharedPools.Default <List <TodoItem> >().AllocateAndClear();

                try
                {
                    using (var reader = new StreamObjectReader(stream))
                    {
                        var format = reader.ReadString();
                        if (!string.Equals(format, FormatVersion))
                        {
                            return(null);
                        }

                        var textVersion = VersionStamp.ReadFrom(reader);
                        var dataVersion = VersionStamp.ReadFrom(reader);

                        AppendItems(reader, value, list, cancellationToken);

                        return(new Data(textVersion, dataVersion, list.ToImmutableArray <TodoItem>()));
                    }
                }
                catch (Exception)
                {
                    return(null);
                }
                finally
                {
                    SharedPools.Default <List <TodoItem> >().ClearAndFree(list);
                }
            }
            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;
                }
            }
            protected override Data TryGetExistingData(Stream stream, Document value, CancellationToken cancellationToken)
            {
                try
                {
                    using (var reader = new StreamObjectReader(stream))
                    {
                        var format = reader.ReadString();
                        if (!string.Equals(format, FormatVersion, StringComparison.InvariantCulture))
                        {
                            return(null);
                        }

                        var textVersion = VersionStamp.ReadFrom(reader);
                        var dataVersion = VersionStamp.ReadFrom(reader);
                        var designerAttributeArgument = reader.ReadString();

                        return(new Data(textVersion, dataVersion, designerAttributeArgument));
                    }
                }
                catch (Exception)
                {
                    return(null);
                }
            }
        private bool ReadIdentifierPositions(EsentStorage.Key key, int identifierId, List <int> positions, object unused, CancellationToken cancellationToken)
        {
            using (var accessor = _esentStorage.GetIdentifierLocationTableAccessor())
                using (var stream = accessor.GetReadStream(key, identifierId))
                {
                    if (stream == null)
                    {
                        // no such identifier exist.
                        return(true);
                    }

                    using (var reader = new StreamObjectReader(stream))
                    {
                        var formatVersion = reader.ReadString();
                        if (formatVersion != IdentifierSetSerializationVersion)
                        {
                            return(false);
                        }

                        return(ReadFrom(reader, positions, cancellationToken));
                    }
                }
        }
        private bool ReadIdentifierPositions(EsentStorage.Key key, int identifierId, List<int> positions, object unused, CancellationToken cancellationToken)
        {
            using (var accessor = _esentStorage.GetIdentifierLocationTableAccessor())
            using (var stream = accessor.GetReadStream(key, identifierId))
            {
                if (stream == null)
                {
                    // no such identifier exist.
                    return true;
                }

                using (var reader = new StreamObjectReader(stream))
                {
                    var formatVersion = reader.ReadString();
                    if (formatVersion != IdentifierSetSerializationVersion)
                    {
                        return false;
                    }

                    return ReadFrom(reader, positions, cancellationToken);
                }
            }
        }