public void SerializeSourceText(ITemporaryStorageWithName storage, SourceText text, ObjectWriter writer, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); writer.WriteInt32((int)text.ChecksumAlgorithm); writer.WriteString(text.Encoding?.WebName); // TODO: refactor this part in its own abstraction (Bits) that has multiple sub types // rather than using enums if (storage != null && storage.Name != null) { writer.WriteInt32((int)SerializationKinds.MemoryMapFile); writer.WriteString(storage.Name); writer.WriteInt64(storage.Size); return; } writer.WriteInt32((int)SerializationKinds.Bits); writer.WriteString(text.ToString()); }
private bool TryWritePortableExecutableReferenceBackedByTemporaryStorageTo( ISupportTemporaryStorage reference, ObjectWriter writer, CancellationToken cancellationToken) { var storages = reference.GetStorages(); if (storages == null) { return false; } using (var pooled = Creator.CreateList<ValueTuple<string, long>>()) { foreach (var storage in storages) { var storage2 = storage as ITemporaryStorageWithName; if (storage2 == null) { return false; } pooled.Object.Add(ValueTuple.Create(storage2.Name, storage2.Size)); } WritePortableExecutableReferenceHeaderTo((PortableExecutableReference)reference, SerializationKinds.MemoryMapFile, writer, cancellationToken); writer.WriteInt32((int)MetadataImageKind.Assembly); writer.WriteInt32(pooled.Object.Count); foreach (var tuple in pooled.Object) { writer.WriteInt32((int)MetadataImageKind.Module); writer.WriteString(tuple.Item1); writer.WriteInt64(tuple.Item2); } return true; } }
private static void Serialize(ObjectWriter writer, AnalyzerTelemetryInfo telemetryInfo, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); writer.WriteInt32(telemetryInfo.CompilationStartActionsCount); writer.WriteInt32(telemetryInfo.CompilationEndActionsCount); writer.WriteInt32(telemetryInfo.CompilationActionsCount); writer.WriteInt32(telemetryInfo.SyntaxTreeActionsCount); writer.WriteInt32(telemetryInfo.SemanticModelActionsCount); writer.WriteInt32(telemetryInfo.SymbolActionsCount); writer.WriteInt32(telemetryInfo.SyntaxNodeActionsCount); writer.WriteInt32(telemetryInfo.CodeBlockStartActionsCount); writer.WriteInt32(telemetryInfo.CodeBlockEndActionsCount); writer.WriteInt32(telemetryInfo.CodeBlockActionsCount); writer.WriteInt32(telemetryInfo.OperationActionsCount); writer.WriteInt32(telemetryInfo.OperationBlockActionsCount); writer.WriteInt32(telemetryInfo.OperationBlockStartActionsCount); writer.WriteInt32(telemetryInfo.OperationBlockEndActionsCount); writer.WriteInt64(telemetryInfo.ExecutionTime.Ticks); }