in src/Proton/Codec/Encoders/Transport/TransferTypeEncoder.cs [57:171]
protected override void WriteElement(Transfer transfer, 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 (transfer.HasHandle())
{
state.Encoder.WriteUnsignedInteger(buffer, state, transfer.Handle);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 1:
if (transfer.HasDeliveryId())
{
state.Encoder.WriteUnsignedInteger(buffer, state, transfer.DeliveryId);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 2:
if (transfer.HasDeliveryTag())
{
state.Encoder.WriteDeliveryTag(buffer, state, transfer.DeliveryTag);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 3:
if (transfer.HasMessageFormat())
{
state.Encoder.WriteUnsignedInteger(buffer, state, transfer.MessageFormat);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 4:
if (transfer.HasSettled())
{
buffer.WriteUnsignedByte((byte)(transfer.Settled ? EncodingCodes.BooleanTrue : EncodingCodes.BooleanFalse));
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 5:
if (transfer.HasMore())
{
buffer.WriteUnsignedByte((byte)(transfer.More ? EncodingCodes.BooleanTrue : EncodingCodes.BooleanFalse));
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 6:
if (transfer.HasReceiverSettleMode())
{
state.Encoder.WriteUnsignedByte(buffer, state, (byte)transfer.ReceiverSettleMode);
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 7:
state.Encoder.WriteObject(buffer, state, transfer.DeliveryState);
break;
case 8:
if (transfer.HasResume())
{
buffer.WriteUnsignedByte((byte)(transfer.Resume ? EncodingCodes.BooleanTrue : EncodingCodes.BooleanFalse));
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 9:
if (transfer.HasAborted())
{
buffer.WriteUnsignedByte((byte)(transfer.Aborted ? EncodingCodes.BooleanTrue : EncodingCodes.BooleanFalse));
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
case 10:
if (transfer.HasBatchable())
{
buffer.WriteUnsignedByte((byte)(transfer.Batchable ? EncodingCodes.BooleanTrue : EncodingCodes.BooleanFalse));
}
else
{
buffer.WriteUnsignedByte((byte)EncodingCodes.Null);
}
break;
default:
throw new ArgumentOutOfRangeException("Unknown Transfer value index: " + index);
}
}