private static void TestSerialization(TimelineCoordinates coordinates) { var writer = new BinaryBufferWriter(1) { Endianness = Endianness.Big }; TimelineCoordinatesWriter.Write(coordinates, writer); var reader = new BinaryBufferReader(writer.Buffer, 0) { Endianness = Endianness.Big }; var deserialized = TimelineCoordinatesReader.Read(reader); deserialized.Positions.Length.Should().Be(coordinates.Positions.Length); for (var i = 0; i < deserialized.Positions.Length; i++) { deserialized.Positions[i].Slice.Should().Be(coordinates.Positions[i].Slice); deserialized.Positions[i].Offset.Should().Be(coordinates.Positions[i].Offset); deserialized.Positions[i].EventId.Should().Equal(coordinates.Positions[i].EventId); } }
public ReadTimelinePayload( [NotNull] IList <T> events, [NotNull] TimelineCoordinates next) { Events = events ?? throw new ArgumentNullException(nameof(events)); Next = next ?? throw new ArgumentNullException(nameof(next)); }
private static ArraySegment <byte> CreateRequestBody([NotNull] TimelineCoordinates coordinates) { var writer = new BinaryBufferWriter(sizeof(int) + coordinates.Positions.Length * (sizeof(int) + sizeof(long) + 24)) { Endianness = Endianness.Big }; TimelineCoordinatesWriter.Write(coordinates, writer); return(writer.FilledSegment); }
public static void Write([NotNull] TimelineCoordinates coordinates, [NotNull] IBinaryWriter writer) { writer.EnsureBigEndian(); writer.Write(coordinates.Positions.Length); foreach (var position in coordinates.Positions) { writer.Write(position.Slice); writer.Write(position.Offset); writer.WriteWithoutLength(position.EventId); } }
public void Should_serialize_and_deserialize_nontrivial_coordinates() { var coordinates = new TimelineCoordinates( new[] { new TimelinePosition { Slice = 0, Offset = 4325L, EventId = GenerateEventId() }, new TimelinePosition { Slice = 1, Offset = 645645L, EventId = GenerateEventId() }, new TimelinePosition { Slice = 2, Offset = 155L, EventId = GenerateEventId() }, new TimelinePosition { Slice = 3, Offset = 5464, EventId = GenerateEventId() } }); TestSerialization(coordinates); }
public ReadTimelinePayload([NotNull] IList <HerculesEvent> events, [NotNull] TimelineCoordinates next) : base(events, next) { }