in src/Proton/Codec/Encoders/Transport/BeginTypeEncoder.cs [46:137]
protected override void WriteElement(Begin begin, int index, IProtonBuffer buffer, IEncoderState state)
{
// When encoding ensure that values that were never set are omitted and a simple
// NULL entry is written in the slot instead (don't write defaults).
buffer.EnsureWritable(sizeof(int));
switch (index)
{
case 0:
if (begin.HasRemoteChannel())
{
state.Encoder.WriteUnsignedShort(buffer, state, begin.RemoteChannel);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 1:
if (begin.HasNextOutgoingId())
{
state.Encoder.WriteUnsignedInteger(buffer, state, begin.NextOutgoingId);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 2:
if (begin.HasIncomingWindow())
{
state.Encoder.WriteUnsignedInteger(buffer, state, begin.IncomingWindow);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 3:
if (begin.HasOutgoingWindow())
{
state.Encoder.WriteUnsignedInteger(buffer, state, begin.OutgoingWindow);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 4:
if (begin.HasHandleMax())
{
state.Encoder.WriteUnsignedInteger(buffer, state, begin.HandleMax);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 5:
if (begin.HasOfferedCapabilities())
{
state.Encoder.WriteArray(buffer, state, begin.OfferedCapabilities);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 6:
if (begin.HasDesiredCapabilities())
{
state.Encoder.WriteArray(buffer, state, begin.DesiredCapabilities);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 7:
if (begin.HasProperties())
{
state.Encoder.WriteMap(buffer, state, begin.Properties);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
default:
throw new ArgumentOutOfRangeException("Unknown Begin value index: " + index);
}
}