static void Encode(Array value, int width, int encodeSize, ByteBuffer buffer) { encodeSize -= (FixedWidth.FormatCode + width); if (width == FixedWidth.UByte) { AmqpBitConverter.WriteUByte(buffer, (byte)encodeSize); AmqpBitConverter.WriteUByte(buffer, (byte)value.Length); } else { AmqpBitConverter.WriteUInt(buffer, (uint)encodeSize); AmqpBitConverter.WriteUInt(buffer, (uint)value.Length); } if (value.Length > 0) { object firstItem = value.GetValue(0); EncodingBase encoding = AmqpEncoding.GetEncoding(firstItem); AmqpBitConverter.WriteUByte(buffer, (byte)encoding.FormatCode); if (encoding.FormatCode == FormatCode.Described) { DescribedType describedValue = (DescribedType)firstItem; AmqpEncoding.EncodeObject(describedValue.Descriptor, buffer); AmqpBitConverter.WriteUByte(buffer, (byte)AmqpEncoding.GetEncoding(describedValue.Value).FormatCode); } foreach (object item in value) { encoding.EncodeObject(item, true, buffer); } } }
private static void Encode(Array value, int width, int encodeSize, ByteBuffer buffer) { encodeSize = encodeSize - (1 + width); if (width != 1) { AmqpBitConverter.WriteUInt(buffer, (uint)encodeSize); AmqpBitConverter.WriteUInt(buffer, (uint)value.Length); } else { AmqpBitConverter.WriteUByte(buffer, (byte)encodeSize); AmqpBitConverter.WriteUByte(buffer, (byte)value.Length); } if (value.Length > 0) { object obj = value.GetValue(0); EncodingBase encoding = AmqpEncoding.GetEncoding(obj); AmqpBitConverter.WriteUByte(buffer, encoding.FormatCode); if (encoding.FormatCode == 0) { DescribedType describedType = (DescribedType)obj; AmqpEncoding.EncodeObject(describedType.Descriptor, buffer); AmqpBitConverter.WriteUByte(buffer, AmqpEncoding.GetEncoding(describedType.Value).FormatCode); } foreach (object obj1 in value) { encoding.EncodeObject(obj1, true, buffer); } } }
public static void Encode(DescribedType value, ByteBuffer buffer) { if (value.Value == null) { AmqpEncoding.EncodeNull(buffer); return; } AmqpBitConverter.WriteUByte(buffer, 0); AmqpEncoding.EncodeObject(value.Descriptor, buffer); AmqpEncoding.EncodeObject(value.Value, buffer); }
private static void Encode(IList value, int width, int size, ByteBuffer buffer) { if (width != 1) { AmqpBitConverter.WriteUInt(buffer, (uint)size); AmqpBitConverter.WriteUInt(buffer, (uint)value.Count); } else { AmqpBitConverter.WriteUByte(buffer, (byte)size); AmqpBitConverter.WriteUByte(buffer, (byte)value.Count); } if (value.Count > 0) { foreach (object obj in value) { AmqpEncoding.EncodeObject(obj, buffer); } } }
private static void Encode(AmqpMap value, int width, int size, ByteBuffer buffer) { if (width != 1) { AmqpBitConverter.WriteUInt(buffer, (uint)size); AmqpBitConverter.WriteUInt(buffer, (uint)(value.Count * 2)); } else { AmqpBitConverter.WriteUByte(buffer, (byte)size); AmqpBitConverter.WriteUByte(buffer, (byte)(value.Count * 2)); } if (value.Count > 0) { foreach (KeyValuePair <MapKey, object> keyValuePair in (IEnumerable <KeyValuePair <MapKey, object> >)value) { AmqpEncoding.EncodeObject(keyValuePair.Key.Key, buffer); AmqpEncoding.EncodeObject(keyValuePair.Value, buffer); } } }
static void Encode(AmqpMap value, int width, int size, ByteBuffer buffer) { if (width == FixedWidth.UByte) { AmqpBitConverter.WriteUByte(buffer, (byte)size); AmqpBitConverter.WriteUByte(buffer, (byte)(value.Count * 2)); } else { AmqpBitConverter.WriteUInt(buffer, (uint)size); AmqpBitConverter.WriteUInt(buffer, (uint)(value.Count * 2)); } if (value.Count > 0) { foreach (KeyValuePair <MapKey, object> item in value) { AmqpEncoding.EncodeObject(item.Key.Key, buffer); AmqpEncoding.EncodeObject(item.Value, buffer); } } }