Exemple #1
0
            internal void Serialize(BuildXLWriter writer)
            {
                writer.Write(m_indexCursor);
                writer.Write(m_size);

                var serializedByteArrays = new ArrayView <byte[]>(m_byteArrays, 0, Count);

                writer.WriteReadOnlyList(serializedByteArrays, (w, b) =>
                {
                    w.WriteCompact(b.Length);
                    w.Write(b);
                });
            }
Exemple #2
0
 internal void Serialize(BuildXLWriter writer)
 {
     Contract.RequiresNotNull(writer);
     writer.WriteCompact(Line);
     writer.Write(Text);
     writer.WriteCompact(Position);
 }
Exemple #3
0
 internal void Serialize(BuildXLWriter writer)
 {
     Contract.Requires(writer != null);
     writer.WriteCompact(Line);
     writer.Write(Path);
     writer.WriteCompact(Position);
 }
Exemple #4
0
 /// <summary>
 /// Writes debugging marker if needed
 /// </summary>
 protected static void WriteEntryMarker(PageableStore store, BuildXLWriter writer)
 {
     if (store.Debug)
     {
         writer.Write(EntryMarker);
     }
 }
Exemple #5
0
 /// <nodoc />
 public void Serialize(Stream stream)
 {
     using (var writer = new BuildXLWriter(false, stream, true, true))
     {
         writer.Write(FailVmConnection);
     }
 }
Exemple #6
0
        private static void Serialize(BuildXLWriter writer, SerializedState state)
        {
            Contract.Requires(writer != null);

            writer.Write(state.NextId);

            GetBufferIndex(state.NextId, out int indexOfPartiallyFilledBuffer, out int lengthInPartiallyFilledBuffer);

            for (int i = 0; i < NumByteBuffers; i++)
            {
                if (state.ByteBuffers[i] != null)
                {
                    writer.Write(state.ByteBuffers[i].Length);
                    writer.Write(state.ByteBuffers[i], 0, i == indexOfPartiallyFilledBuffer ? lengthInPartiallyFilledBuffer : state.ByteBuffers[i].Length);
                }
                else
                {
                    writer.Write(NullArrayMarker);
                }
            }

            state.StringSet.Serialize(writer, id => writer.Write(id));

            writer.Write(state.Count);
        }
Exemple #7
0
        private static void Serialize(BuildXLWriter writer, SerializedState state)
        {
            writer.Write(state.Debug);

            var count = state.PageStreams.Count;

            writer.Write(count);
            foreach (var stream in state.PageStreams)
            {
                writer.Write(stream.Length);
            }

            long position = writer.BaseStream.Position;

            // Serialize each stream and assign it an identifier that can be looked up later
            var pageStreamIdentifiers = new Dictionary <PageStreamBase, int>();

            for (int i = 0; i < count; i++)
            {
                pageStreamIdentifiers.Add(state.PageStreams[i], i);
                state.PageStreams[i].Serialize(writer);
                var expectedPosition = position + state.PageStreams[i].Length;
                Contract.Assert(expectedPosition == writer.BaseStream.Position);
                position = expectedPosition;
            }

            // Serialize the item location offsets
            writer.Write(state.LastId);
            for (uint i = 0; i < state.LastId; i++)
            {
                ItemLocation offset = state.ItemLocations[i + 1];
                var          id     = pageStreamIdentifiers[offset.PageStream];
                writer.Write(id);
                writer.Write(offset.Offset);
            }
        }
Exemple #8
0
 /// <summary>
 /// Serialzies this instance.
 /// </summary>
 public void Serialize(BuildXLWriter writer) => writer.Write(Value);