JD2022-TU1/main/tools/extern/Bloomberg/Code/Libraries/Bloomberg.Message/Reader/AttributeReader.cs

46 lines
No EOL
1.5 KiB
C#

using System.Collections.Generic;
using System.IO;
using Bloomberg.Message.Entities;
using Bloomberg.Message.Utils;
namespace Bloomberg.Message.Reader
{
public class AttributeReader
{
public List<DataAttribute> Read(Stream currentStream)
{
var dataAttributesList = new List<DataAttribute>();
ReaderHelper.ValidateMarker(MessageConstants.AttributeStartMarker, ReaderHelper.ReadUInt(currentStream), "AttributeStartMarker");
uint length;
while (true)
{
length = ReaderHelper.ReadUInt(currentStream);
// Verify if we've reach the end
if (length == MessageConstants.AttributeEndMarker)
break;
string name = "";
string value = "";
// Name
if (length > 0)
{
name = ReaderHelper.ReadString(currentStream, length);
}
// Value
length = ReaderHelper.ReadUInt(currentStream);
if (length > 0)
{
value = ReaderHelper.ReadString(currentStream, length);
}
dataAttributesList.Add(new DataAttribute {Name = name, Value = value});
}
ReaderHelper.ValidateMarker(MessageConstants.AttributeEndMarker, length, "AttributeEndMarker");
return dataAttributesList;
}
}
}