protected override void WriteTo(Stream stream, Data data, CancellationToken cancellationToken) { using (var writer = new StreamObjectWriter(stream, cancellationToken: cancellationToken)) { writer.WriteString(FormatVersion); data.TextVersion.WriteTo(writer); data.SyntaxVersion.WriteTo(writer); writer.WriteInt32(data.Items.Length); foreach (var item in data.Items.OfType <TodoItem>()) { cancellationToken.ThrowIfCancellationRequested(); writer.WriteInt32(item.Priority); writer.WriteString(item.Message); writer.WriteString(item.OriginalFilePath); writer.WriteInt32(item.OriginalLine); writer.WriteInt32(item.OriginalColumn); writer.WriteString(item.MappedFilePath); writer.WriteInt32(item.MappedLine); writer.WriteInt32(item.MappedColumn); } } }
protected override void WriteTo(Stream stream, Data data, CancellationToken cancellationToken) { using (var writer = new StreamObjectWriter(stream, cancellationToken: cancellationToken)) { writer.WriteString(FormatVersion); data.TextVersion.WriteTo(writer); data.SemanticVersion.WriteTo(writer); writer.WriteString(data.DesignerAttributeArgument); } }
private static Checksum CreateChecksum(AnalyzerReference reference) { using (var stream = SerializableBytes.CreateWritableStream()) using (var objectWriter = new StreamObjectWriter(stream)) { objectWriter.WriteString(WellKnownSynchronizationKinds.AnalyzerReference); objectWriter.WriteString(reference.FullPath); return(Checksum.Create(stream)); } }
public static Checksum Create <T>(T value, string kind, Serializer serializer) { using (var stream = SerializableBytes.CreateWritableStream()) using (var objectWriter = new StreamObjectWriter(stream)) { objectWriter.WriteString(kind); serializer.Serialize(value, objectWriter, CancellationToken.None); return(Create(stream)); } }
private static Checksum CreateChecksumFromStreamWriter(string kind, Action <ObjectWriter, CancellationToken> writer) { using (var stream = SerializableBytes.CreateWritableStream()) using (var objectWriter = new StreamObjectWriter(stream)) { objectWriter.WriteString(kind); writer(objectWriter, CancellationToken.None); return(Checksum.Create(stream)); } }
public static Checksum Create(IObjectWritable @object, string kind) { using (var stream = SerializableBytes.CreateWritableStream()) using (var objectWriter = new StreamObjectWriter(stream)) { objectWriter.WriteString(kind); @object.WriteTo(objectWriter); return(Create(stream)); } }
public static Checksum Create(string kind, Checksum checksum) { using (var stream = SerializableBytes.CreateWritableStream()) using (var writer = new StreamObjectWriter(stream)) { writer.WriteString(kind); checksum.WriteTo(writer); return(Create(stream)); } }
public static Checksum Create(string kind, ImmutableArray <byte> bytes) { using (var stream = SerializableBytes.CreateWritableStream()) using (var writer = new StreamObjectWriter(stream)) { writer.WriteString(kind); for (var i = 0; i < bytes.Length; i++) { writer.WriteByte(bytes[i]); } return(Create(stream)); } }
public static Checksum Create(string kind, IEnumerable <Checksum> checksums) { using (var stream = SerializableBytes.CreateWritableStream()) using (var writer = new StreamObjectWriter(stream)) { writer.WriteString(kind); foreach (var checksum in checksums) { checksum.WriteTo(writer); } return(Create(stream)); } }
private bool WriteIdentifierLocations(EsentStorage.Key key, Document document, VersionStamp version, SyntaxNode root, CancellationToken cancellationToken) { // delete any existing data if (!DeleteIdentifierLocations(key, cancellationToken)) { return(false); } var identifierMap = SharedPools.StringIgnoreCaseDictionary <int>().AllocateAndClear(); Dictionary <string, List <int> > map = null; try { map = CreateIdentifierLocations(document, root, cancellationToken); // okay, write new data using (var accessor = _esentStorage.GetIdentifierLocationTableAccessor()) { // make sure I have all identifier ready before starting big insertion int identifierId; foreach (var identifier in map.Keys) { if (!TryGetUniqueIdentifierId(identifier, out identifierId)) { return(false); } identifierMap[identifier] = identifierId; } // save whole map var uncommittedCount = 0; foreach (var kv in map) { cancellationToken.ThrowIfCancellationRequested(); var identifier = kv.Key; var positions = kv.Value; if ((uncommittedCount + positions.Count) > FlushThreshold) { accessor.Flush(); uncommittedCount = 0; } accessor.PrepareBatchOneInsert(); identifierId = identifierMap[identifier]; using (var stream = accessor.GetWriteStream(key, identifierId)) using (var writer = new StreamObjectWriter(stream, cancellationToken: cancellationToken)) { writer.WriteString(IdentifierSetSerializationVersion); WriteList(writer, positions); } accessor.FinishBatchOneInsert(); uncommittedCount += positions.Count; } // save special identifier that indicates version for this document if (!TrySaveIdentifierSetVersion(accessor, key, version)) { return(false); } return(accessor.ApplyChanges()); } } finally { SharedPools.StringIgnoreCaseDictionary <int>().ClearAndFree(identifierMap); Free(map); } }