public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer) { if (arrayEncoding) { IList listValue = (IList)value; int size = FixedWidth.UInt + GetValueSize(listValue); ListEncoding.Encode(listValue, FixedWidth.UInt, size, buffer); } else { ListEncoding.Encode((IList)value, buffer); } }
public static void Encode(IList value, ByteBuffer buffer) { if (value == null) { AmqpEncoding.EncodeNull(buffer); } else if (value.Count == 0) { AmqpBitConverter.WriteUByte(buffer, FormatCode.List0); } else { int valueSize = ListEncoding.GetValueSize(value); int width = AmqpEncoding.GetEncodeWidthByCountAndSize(value.Count, valueSize); AmqpBitConverter.WriteUByte(buffer, width == FixedWidth.UByte ? FormatCode.List8 : FormatCode.List32); int size = width + valueSize; ListEncoding.Encode(value, width, size, buffer); } }