46 lines
No EOL
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |