public void TryAppend_should_correctly_assemble_message_from_multiple_record_groups() { builder.TryAppend("key1", CreateGroupBufferSlice("message1")); builder.TryAppend("key2", CreateGroupBufferSlice("message22")); builder.TryAppend("key3", CreateGroupBufferSlice("message333")); builder.Message.Count.Should().Be(81); var reader = new BinaryBufferReader(buffer, 0); reader.ReadInt16().Should().Be(1); // version reader.ReadInt32().Should().Be(3); // groups count reader.ReadString().Should().Be("key1"); // routing key reader.ReadInt32().Should().Be(1); // payload count reader.ReadString().Should().Be("message1"); // payload message reader.ReadString().Should().Be("key2"); // routing key reader.ReadInt32().Should().Be(1); // payload count reader.ReadString().Should().Be("message22"); // payload message reader.ReadString().Should().Be("key3"); // routing key reader.ReadInt32().Should().Be(1); // payload count reader.ReadString().Should().Be("message333"); // payload message }
private static Uri ReadReplica([NotNull] BinaryBufferReader reader) { var host = reader.ReadString(); var port = reader.ReadInt32(); return(new Uri($"http://{host}:{port}")); }
public void Should_produce_a_well_formed_request_body_from_several_snapshots() { var data1 = Guid.NewGuid().ToByteArray(); var data2 = Guid.NewGuid().ToByteArray(); var data3 = Guid.NewGuid().ToByteArray(); var snapshot1 = Snapshot(data1, 2); var snapshot2 = Snapshot(data2, 5); var snapshot3 = Snapshot(data3, 1); using (var content = factory.CreateContent(new[] { snapshot1, snapshot2, snapshot3 }, out var recordsCount, out var recordsSize)) { var body = content.Value; recordsCount.Should().Be(8); recordsSize.Should().Be(48); var reader = new BinaryBufferReader(body.Buffer, 0) { Endianness = Endianness.Big }; reader.ReadInt32().Should().Be(recordsCount); body.Buffer.Skip((int)reader.Position).Take((int)(body.Length - reader.Position)) .ToArray() .Should() .Equal(data1.Concat(data2).Concat(data3)); } }
private static void GetHeaderValues(ref BinaryBufferReader reader, out int sectorSize, out int shortSectorSize, out int satSectorCount, out int firstSecIdDirectoryStream, out uint standardStreamSizeThreshold, out int firstSecIdSsat, out uint ssatSectorCount, out int firstSecIdExtendedMsat, out int msatExtraSectorCount) { if (!reader.ReadSpan(8).SequenceEqual(HEADER_SIGNATURE)) { throw new CdfException(Errors.HeaderSignatureMissing); } reader.Position += 22; var sectorSizeExponent = reader.ReadUInt16(); if (sectorSizeExponent < 7) { throw new CdfException(Errors.SectorSizeTooSmall); } sectorSize = (int)Math.Pow(2, sectorSizeExponent); var shortSectorSizeExponent = reader.ReadUInt16(); if (shortSectorSizeExponent > sectorSizeExponent) { throw new CdfException(Errors.ShortSectorSizeGreaterThanStandardSectorSize); } shortSectorSize = (int)Math.Pow(2, shortSectorSizeExponent); reader.Position += 10; satSectorCount = (int)reader.ReadUInt32(); firstSecIdDirectoryStream = reader.ReadInt32(); reader.Position += 4; standardStreamSizeThreshold = reader.ReadUInt32(); firstSecIdSsat = reader.ReadInt32(); ssatSectorCount = reader.ReadUInt32(); firstSecIdExtendedMsat = reader.ReadInt32(); msatExtraSectorCount = reader.ReadInt32(); }
public void ReadInt32(int input) { Reset(); _writer.Write(input); var val = _bufferReader.ReadInt32(); Assert.Equal(input, val); }
public void TrySerialize_should_correctly_serialize_record_given_sufficient_memory() { serializer.TrySerialize(item, itemSerializer, timestamp, buffer).Should().BeTrue(); var reader = new BinaryBufferReader(buffer.InternalBuffer, 0); reader.ReadInt64().Should().Be(timestamp.ToUniversalTime().ToUnixTimeMilliseconds()); reader.ReadInt32().Should().Be(10); reader.ReadString().Should().Be(item); }
public void Resize_performed_right_after_manual_position_change_should_not_lose_recent_data() { var writer = new BinaryBufferWriter(8); writer.Write(1); BitConverter.GetBytes(2).CopyTo(writer.Buffer, 4); writer.Position += 4; writer.EnsureCapacity(100); writer.Position.Should().Be(8); writer.Length.Should().Be(8); var reader = new BinaryBufferReader(writer.Buffer, 0); reader.ReadInt32().Should().Be(1); reader.ReadInt32().Should().Be(2); }
public static ReplicaWeights Deserialize([NotNull] byte[] data) { var reader = new BinaryBufferReader(data, 0); var count = reader.ReadInt32(); var weights = new ReplicaWeights(count); for (var i = 0; i < count; i++) { var replica = ReadReplica(reader); var weight = ReadWeight(reader); weights[replica] = weight; } return(weights); }
public static EnvironmentInfo Deserialize([NotNull] string environment, [CanBeNull] byte[] data) { if (data == null || data.Length == 0) { return(new EnvironmentInfo(environment, null, null)); } var reader = new BinaryBufferReader(data, 0); var version = reader.ReadInt32(); var parentEnvironment = reader.ReadNullable(r => r.ReadString()); var properties = version >= WithPropertiesVersion ? DeserializeProperties(reader) : null; return(new EnvironmentInfo(environment, parentEnvironment, properties)); }
private static int[] BuildSatSecIdChain(BinaryBufferReader reader, int msatExtraSectorCount, int firstSecIdExtendedMsat, int satSectorCount, int sectorSize, int secIdsPerSector) { #if DEBUG var msat = new int[1 + msatExtraSectorCount + 1]; var sat = new int[satSectorCount + 1]; msat[0] = SECID_MSAT; #else var sat = new int[satSectorCount]; #endif var firstPartMsatSatSectorCount = Math.Min(satSectorCount, HEADER_MSAT_SAT_SECID_COUNT); var remainder = firstPartMsatSatSectorCount % 4; for (var i = 0; i < remainder; i++) { sat[i] = reader.ReadInt32(); } if (firstPartMsatSatSectorCount >= 4) { var remainingSecIdCount = firstPartMsatSatSectorCount - remainder; for (var i = 0; i < remainingSecIdCount; i += 4) { sat[remainder + i] = reader.ReadInt32(); sat[remainder + i + 1] = reader.ReadInt32(); sat[remainder + i + 2] = reader.ReadInt32(); sat[remainder + i + 3] = reader.ReadInt32(); } } if (firstPartMsatSatSectorCount < satSectorCount) { var satSectorIndex = (int)HEADER_MSAT_SAT_SECID_COUNT; var remainingMsatSatSectorCount = satSectorCount - HEADER_MSAT_SAT_SECID_COUNT; var currentSecIdMsat = firstSecIdExtendedMsat; var currentSectorPosMsat = HEADER_SIZE + currentSecIdMsat * sectorSize; for (var i = 0; i < msatExtraSectorCount; i++) { #if DEBUG msat[i + 1] = currentSecIdMsat; #endif reader.Position = currentSectorPosMsat; var remainingSecIdsInCurrentSector = Math.Min(remainingMsatSatSectorCount, secIdsPerSector - 1); remainder = remainingSecIdsInCurrentSector % 4; for (var j = 0; j < remainder; j++) { sat[satSectorIndex++] = reader.ReadInt32(); remainingMsatSatSectorCount--; } if (remainingSecIdsInCurrentSector >= 4) { var remainingSecIdCount = remainingSecIdsInCurrentSector - remainder; for (var j = 0; j < remainingSecIdCount; j += 4) { sat[satSectorIndex] = reader.ReadInt32(); sat[satSectorIndex + 1] = reader.ReadInt32(); sat[satSectorIndex + 2] = reader.ReadInt32(); sat[satSectorIndex + 3] = reader.ReadInt32(); remainingMsatSatSectorCount -= 4; satSectorIndex += 4; } } if (remainingMsatSatSectorCount > 0) { currentSecIdMsat = reader.ReadInt32(); currentSectorPosMsat = HEADER_SIZE + currentSecIdMsat * sectorSize; } #if DEBUG else { msat[1 + i + 1] = SECID_END_OF_CHAIN; sat[satSectorIndex] = SECID_END_OF_CHAIN; } #endif } } #if DEBUG else { msat[^ 1] = SECID_END_OF_CHAIN;