public override int GetObjectEncodeSize(object value, bool arrayEncoding) { IList array = (IList)value; Type itemType = array.Count > 0 ? array[0].GetType() : null; return(ArrayEncoding.GetEncodeSize(array, array.Count, itemType, arrayEncoding, out _)); }
internal static int GetEncodeSize(IList array, int count, Type itemType, bool arrayEncoding, out int width) { int size = FixedWidth.FormatCode + ArrayEncoding.GetValueSize(array, count, itemType); width = arrayEncoding ? FixedWidth.UInt : AmqpEncoding.GetEncodeWidthByCountAndSize(count, size); size += FixedWidth.FormatCode + width + width; return(size); }
internal static void Encode(IList value, int count, Type itemType, ByteBuffer buffer) { int width; int encodeSize = ArrayEncoding.GetEncodeSize(value, count, itemType, false, out width); AmqpBitConverter.WriteUByte(buffer, width == FixedWidth.UByte ? FormatCode.Array8 : FormatCode.Array32); ArrayEncoding.Encode(value, count, itemType, width, encodeSize, buffer); }
static int GetEncodeSize(Array array, bool arrayEncoding, out int width) { int size = FixedWidth.FormatCode + ArrayEncoding.GetValueSize(array, null); width = arrayEncoding ? FixedWidth.UInt : AmqpEncoding.GetEncodeWidthByCountAndSize(array.Length, size); size += FixedWidth.FormatCode + width + width; return(size); }
public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer) { Array array = (Array)value; int width; int encodeSize = ArrayEncoding.GetEncodeSize(array, arrayEncoding, out width); AmqpBitConverter.WriteUByte(buffer, width == FixedWidth.UByte ? FormatCode.Array8 : FormatCode.Array32); ArrayEncoding.Encode(array, width, encodeSize, buffer); }
public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer) { IList array = (IList)value; Type itemType = array.Count > 0 ? array[0].GetType() : null; int width; int encodeSize = ArrayEncoding.GetEncodeSize(array, array.Count, itemType, arrayEncoding, out width); AmqpBitConverter.WriteUByte(buffer, width == FixedWidth.UByte ? FormatCode.Array8 : FormatCode.Array32); ArrayEncoding.Encode(array, array.Count, itemType, width, encodeSize, buffer); }
public static void Encode <T>(T[] value, ByteBuffer buffer) { if (value == null) { AmqpEncoding.EncodeNull(buffer); } else { ArrayEncoding.Encode(value, value.Length, typeof(T), buffer); } }
public static void Encode <T>(T[] value, ByteBuffer buffer) { if (value == null) { AmqpEncoding.EncodeNull(buffer); } else { int width; int encodeSize = ArrayEncoding.GetEncodeSize(value, false, out width); AmqpBitConverter.WriteUByte(buffer, width == FixedWidth.UByte ? FormatCode.Array8 : FormatCode.Array32); ArrayEncoding.Encode(value, width, encodeSize, buffer); } }
public static T[] Decode <T>(ByteBuffer buffer, FormatCode formatCode) { if (formatCode == 0 && (formatCode = AmqpEncoding.ReadFormatCode(buffer)) == FormatCode.Null) { return(null); } int size; int count; AmqpEncoding.ReadSizeAndCount(buffer, formatCode, FormatCode.Array8, FormatCode.Array32, out size, out count); formatCode = AmqpEncoding.ReadFormatCode(buffer); return(ArrayEncoding.Decode <T>(buffer, size, count, formatCode)); }
public override object DecodeObject(ByteBuffer buffer, FormatCode formatCode) { if (formatCode == 0 && (formatCode = AmqpEncoding.ReadFormatCode(buffer)) == FormatCode.Null) { return(null); } int size = 0; int count = 0; AmqpEncoding.ReadSizeAndCount(buffer, formatCode, FormatCode.Array8, FormatCode.Array32, out size, out count); formatCode = AmqpEncoding.ReadFormatCode(buffer); Array array = null; switch (formatCode) { case FormatCode.Boolean: array = ArrayEncoding.Decode <bool>(buffer, size, count, formatCode); break; case FormatCode.UByte: array = ArrayEncoding.Decode <byte>(buffer, size, count, formatCode); break; case FormatCode.UShort: array = ArrayEncoding.Decode <ushort>(buffer, size, count, formatCode); break; case FormatCode.UInt: case FormatCode.SmallUInt: array = ArrayEncoding.Decode <uint>(buffer, size, count, formatCode); break; case FormatCode.ULong: case FormatCode.SmallULong: array = ArrayEncoding.Decode <ulong>(buffer, size, count, formatCode); break; case FormatCode.Byte: array = ArrayEncoding.Decode <sbyte>(buffer, size, count, formatCode); break; case FormatCode.Short: array = ArrayEncoding.Decode <short>(buffer, size, count, formatCode); break; case FormatCode.Int: case FormatCode.SmallInt: array = ArrayEncoding.Decode <int>(buffer, size, count, formatCode); break; case FormatCode.Long: case FormatCode.SmallLong: array = ArrayEncoding.Decode <long>(buffer, size, count, formatCode); break; case FormatCode.Float: array = ArrayEncoding.Decode <float>(buffer, size, count, formatCode); break; case FormatCode.Double: array = ArrayEncoding.Decode <double>(buffer, size, count, formatCode); break; case FormatCode.Char: array = ArrayEncoding.Decode <char>(buffer, size, count, formatCode); break; case FormatCode.TimeStamp: array = ArrayEncoding.Decode <DateTime>(buffer, size, count, formatCode); break; case FormatCode.Uuid: array = ArrayEncoding.Decode <Guid>(buffer, size, count, formatCode); break; case FormatCode.Binary32: case FormatCode.Binary8: array = ArrayEncoding.Decode <ArraySegment <byte> >(buffer, size, count, formatCode); break; case FormatCode.String32Utf8: case FormatCode.String8Utf8: array = ArrayEncoding.Decode <string>(buffer, size, count, formatCode); break; case FormatCode.Symbol32: case FormatCode.Symbol8: array = ArrayEncoding.Decode <AmqpSymbol>(buffer, size, count, formatCode); break; case FormatCode.List32: case FormatCode.List8: array = ArrayEncoding.Decode <IList>(buffer, size, count, formatCode); break; case FormatCode.Map32: case FormatCode.Map8: array = ArrayEncoding.Decode <AmqpMap>(buffer, size, count, formatCode); break; case FormatCode.Array32: case FormatCode.Array8: array = ArrayEncoding.Decode <Array>(buffer, size, count, formatCode); break; default: throw new NotSupportedException(CommonResources.GetString(CommonResources.NotSupportFrameCode, formatCode)); } return(array); }
public static int GetEncodeSize <T>(T[] value) { return(value == null ? FixedWidth.NullEncoded : ArrayEncoding.GetEncodeSize(value, value.Length, typeof(T), false, out _)); }
public override int GetObjectEncodeSize(object value, bool arrayEncoding) { return(ArrayEncoding.GetEncodeSize((Array)value, arrayEncoding)); }
static int GetEncodeSize(Array array, bool arrayEncoding) { int unused; return(ArrayEncoding.GetEncodeSize(array, arrayEncoding, out unused)); }
public static int GetEncodeSize <T>(T[] value) { return(value == null ? FixedWidth.NullEncoded : ArrayEncoding.GetEncodeSize(value, false)); }