Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        private static int GetEncodeSize(Array array, bool arrayEncoding, out int width)
        {
            int valueSize = 1 + ArrayEncoding.GetValueSize(array, null);

            width     = (arrayEncoding ? 4 : AmqpEncoding.GetEncodeWidthByCountAndSize(array.Length, valueSize));
            valueSize = valueSize + 1 + width + width;
            return(valueSize);
        }
Exemplo n.º 3
0
 public static int GetEncodeSize <T>(T[] value)
 {
     if (value == null)
     {
         return(1);
     }
     return(ArrayEncoding.GetEncodeSize(value, false));
 }
Exemplo n.º 4
0
        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 ? (byte)FormatCode.Array8 : (byte)FormatCode.Array32);
            ArrayEncoding.Encode(array, width, encodeSize, buffer);
        }
Exemplo n.º 5
0
        public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer)
        {
            int   num;
            Array arrays     = (Array)value;
            int   encodeSize = ArrayEncoding.GetEncodeSize(arrays, arrayEncoding, out num);

            AmqpBitConverter.WriteUByte(buffer, (byte)((num == 1 ? 224 : 240)));
            ArrayEncoding.Encode(arrays, num, encodeSize, buffer);
        }
Exemplo n.º 6
0
 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 ? (byte)FormatCode.Array8 : (byte)FormatCode.Array32);
         ArrayEncoding.Encode(value, width, encodeSize, buffer);
     }
 }
Exemplo n.º 7
0
        public static void Encode <T>(T[] value, ByteBuffer buffer)
        {
            int num;

            if (value == null)
            {
                AmqpEncoding.EncodeNull(buffer);
                return;
            }
            int encodeSize = ArrayEncoding.GetEncodeSize(value, false, out num);

            AmqpBitConverter.WriteUByte(buffer, (byte)((num == 1 ? 224 : 240)));
            ArrayEncoding.Encode(value, num, encodeSize, buffer);
        }
Exemplo n.º 8
0
        public static T[] Decode <T>(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);
            return(ArrayEncoding.Decode <T>(buffer, size, count, formatCode));
        }
Exemplo n.º 9
0
        public static T[] Decode <T>(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode)
        {
            int num;
            int num1;

            if (formatCode == 0)
            {
                Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode1 = AmqpEncoding.ReadFormatCode(buffer);
                formatCode = formatCode1;
                if (formatCode1 == 64)
                {
                    return(null);
                }
            }
            AmqpEncoding.ReadSizeAndCount(buffer, formatCode, 224, 240, out num, out num1);
            formatCode = AmqpEncoding.ReadFormatCode(buffer);
            return(ArrayEncoding.Decode <T>(buffer, num, num1, formatCode));
        }
Exemplo n.º 10
0
        static AmqpEncoding()
        {
            AmqpEncoding.booleanEncoding       = new BooleanEncoding();
            AmqpEncoding.ubyteEncoding         = new UByteEncoding();
            AmqpEncoding.ushortEncoding        = new UShortEncoding();
            AmqpEncoding.uintEncoding          = new UIntEncoding();
            AmqpEncoding.ulongEncoding         = new ULongEncoding();
            AmqpEncoding.byteEncoding          = new ByteEncoding();
            AmqpEncoding.shortEncoding         = new ShortEncoding();
            AmqpEncoding.intEncoding           = new IntEncoding();
            AmqpEncoding.longEncoding          = new LongEncoding();
            AmqpEncoding.floatEncoding         = new FloatEncoding();
            AmqpEncoding.doubleEncoding        = new DoubleEncoding();
            AmqpEncoding.decimal128Encoding    = new DecimalEncoding();
            AmqpEncoding.charEncoding          = new CharEncoding();
            AmqpEncoding.timeStampEncoding     = new TimeStampEncoding();
            AmqpEncoding.uuidEncoding          = new UuidEncoding();
            AmqpEncoding.binaryEncoding        = new BinaryEncoding();
            AmqpEncoding.symbolEncoding        = new SymbolEncoding();
            AmqpEncoding.stringEncoding        = new StringEncoding();
            AmqpEncoding.listEncoding          = new ListEncoding();
            AmqpEncoding.mapEncoding           = new MapEncoding();
            AmqpEncoding.arrayEncoding         = new ArrayEncoding();
            AmqpEncoding.describedTypeEncoding = new DescribedEncoding();
            Dictionary <Type, EncodingBase> types = new Dictionary <Type, EncodingBase>()
            {
                { typeof(bool), AmqpEncoding.booleanEncoding },
                { typeof(byte), AmqpEncoding.ubyteEncoding },
                { typeof(ushort), AmqpEncoding.ushortEncoding },
                { typeof(uint), AmqpEncoding.uintEncoding },
                { typeof(ulong), AmqpEncoding.ulongEncoding },
                { typeof(sbyte), AmqpEncoding.byteEncoding },
                { typeof(short), AmqpEncoding.shortEncoding },
                { typeof(int), AmqpEncoding.intEncoding },
                { typeof(long), AmqpEncoding.longEncoding },
                { typeof(float), AmqpEncoding.floatEncoding },
                { typeof(double), AmqpEncoding.doubleEncoding },
                { typeof(decimal), AmqpEncoding.decimal128Encoding },
                { typeof(char), AmqpEncoding.charEncoding },
                { typeof(DateTime), AmqpEncoding.timeStampEncoding },
                { typeof(Guid), AmqpEncoding.uuidEncoding },
                { typeof(ArraySegment <byte>), AmqpEncoding.binaryEncoding },
                { typeof(AmqpSymbol), AmqpEncoding.symbolEncoding },
                { typeof(string), AmqpEncoding.stringEncoding },
                { typeof(AmqpMap), AmqpEncoding.mapEncoding }
            };

            AmqpEncoding.encodingsByType = types;
            Dictionary <FormatCode, EncodingBase> formatCodes = new Dictionary <FormatCode, EncodingBase>()
            {
                { 66, AmqpEncoding.booleanEncoding },
                { 65, AmqpEncoding.booleanEncoding },
                { 86, AmqpEncoding.booleanEncoding },
                { 80, AmqpEncoding.ubyteEncoding },
                { 96, AmqpEncoding.ushortEncoding },
                { 112, AmqpEncoding.uintEncoding },
                { 82, AmqpEncoding.uintEncoding },
                { 67, AmqpEncoding.uintEncoding },
                { 128, AmqpEncoding.ulongEncoding },
                { 83, AmqpEncoding.ulongEncoding },
                { 68, AmqpEncoding.ulongEncoding },
                { 81, AmqpEncoding.byteEncoding },
                { 97, AmqpEncoding.shortEncoding },
                { 113, AmqpEncoding.intEncoding },
                { 84, AmqpEncoding.intEncoding },
                { 129, AmqpEncoding.longEncoding },
                { 85, AmqpEncoding.longEncoding },
                { 114, AmqpEncoding.floatEncoding },
                { 130, AmqpEncoding.doubleEncoding },
                { 148, AmqpEncoding.decimal128Encoding },
                { 115, AmqpEncoding.charEncoding },
                { 131, AmqpEncoding.timeStampEncoding },
                { 152, AmqpEncoding.uuidEncoding },
                { 160, AmqpEncoding.binaryEncoding },
                { 176, AmqpEncoding.binaryEncoding },
                { 163, AmqpEncoding.symbolEncoding },
                { 179, AmqpEncoding.symbolEncoding },
                { 161, AmqpEncoding.stringEncoding },
                { 177, AmqpEncoding.stringEncoding },
                { 69, AmqpEncoding.listEncoding },
                { 192, AmqpEncoding.listEncoding },
                { 208, AmqpEncoding.listEncoding },
                { 193, AmqpEncoding.mapEncoding },
                { 209, AmqpEncoding.mapEncoding },
                { 224, AmqpEncoding.arrayEncoding },
                { 240, AmqpEncoding.arrayEncoding },
                { 0, AmqpEncoding.describedTypeEncoding }
            };

            AmqpEncoding.encodingsByCode = formatCodes;
        }
Exemplo n.º 11
0
        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(SRClient.NotSupportFrameCode(formatCode));
            }
            ;

            return(array);
        }
Exemplo n.º 12
0
 public override int GetObjectEncodeSize(object value, bool arrayEncoding)
 {
     return(ArrayEncoding.GetEncodeSize((Array)value, arrayEncoding));
 }
Exemplo n.º 13
0
        static int GetEncodeSize(Array array, bool arrayEncoding)
        {
            int unused;

            return(ArrayEncoding.GetEncodeSize(array, arrayEncoding, out unused));
        }
Exemplo n.º 14
0
 public static int GetEncodeSize <T>(T[] value)
 {
     return(value == null ? FixedWidth.NullEncoded : ArrayEncoding.GetEncodeSize(value, false));
 }
Exemplo n.º 15
0
        public override object DecodeObject(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode)
        {
            if (formatCode == 0)
            {
                Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode1 = AmqpEncoding.ReadFormatCode(buffer);
                formatCode = formatCode1;
                if (formatCode1 == 64)
                {
                    return(null);
                }
            }
            int num  = 0;
            int num1 = 0;

            AmqpEncoding.ReadSizeAndCount(buffer, formatCode, 224, 240, out num, out num1);
            formatCode = AmqpEncoding.ReadFormatCode(buffer);
            Array arrays = null;
            byte  num2   = formatCode;

            if (num2 > 152)
            {
                if (num2 > 193)
                {
                    switch (num2)
                    {
                    case 208:
                    {
                        arrays = ArrayEncoding.Decode <IList>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 209:
                    {
                        break;
                    }

                    default:
                    {
                        if (num2 == 224 || num2 == 240)
                        {
                            arrays = ArrayEncoding.Decode <Array>(buffer, num, num1, formatCode);
                            return(arrays);
                        }
                        else
                        {
                            throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                        }
                    }
                    }
                }
                else
                {
                    switch (num2)
                    {
                    case 160:
                    {
                        arrays = ArrayEncoding.Decode <ArraySegment <byte> >(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 161:
                    {
                        arrays = ArrayEncoding.Decode <string>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 162:
                    {
                        throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                    }

                    case 163:
                    {
                        arrays = ArrayEncoding.Decode <AmqpSymbol>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    default:
                    {
                        switch (num2)
                        {
                        case 176:
                        {
                            arrays = ArrayEncoding.Decode <ArraySegment <byte> >(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        case 177:
                        {
                            arrays = ArrayEncoding.Decode <string>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        case 178:
                        {
                            throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                        }

                        case 179:
                        {
                            arrays = ArrayEncoding.Decode <AmqpSymbol>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        default:
                        {
                            switch (num2)
                            {
                            case 192:
                            {
                                arrays = ArrayEncoding.Decode <IList>(buffer, num, num1, formatCode);
                                return(arrays);
                            }

                            case 193:
                            {
                                break;
                            }

                            default:
                            {
                                throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                            }
                            }
                            break;
                        }
                        }
                        break;
                    }
                    }
                }
                arrays = ArrayEncoding.Decode <AmqpMap>(buffer, num, num1, formatCode);
            }
            else
            {
                if (num2 > 97)
                {
                    switch (num2)
                    {
                    case 112:
                    {
                        arrays = ArrayEncoding.Decode <uint>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 113:
                    {
                        arrays = ArrayEncoding.Decode <int>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 114:
                    {
                        arrays = ArrayEncoding.Decode <float>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 115:
                    {
                        arrays = ArrayEncoding.Decode <char>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    default:
                    {
                        switch (num2)
                        {
                        case 128:
                        {
                            arrays = ArrayEncoding.Decode <ulong>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        case 129:
                        {
                            break;
                        }

                        case 130:
                        {
                            arrays = ArrayEncoding.Decode <double>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        case 131:
                        {
                            arrays = ArrayEncoding.Decode <DateTime>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        default:
                        {
                            if (num2 == 152)
                            {
                                arrays = ArrayEncoding.Decode <Guid>(buffer, num, num1, formatCode);
                                return(arrays);
                            }
                            else
                            {
                                throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                            }
                        }
                        }
                        break;
                    }
                    }
                }
                else
                {
                    switch (num2)
                    {
                    case 80:
                    {
                        arrays = ArrayEncoding.Decode <byte>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 81:
                    {
                        arrays = ArrayEncoding.Decode <sbyte>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 82:
                    {
                        arrays = ArrayEncoding.Decode <uint>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 83:
                    {
                        arrays = ArrayEncoding.Decode <ulong>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 84:
                    {
                        arrays = ArrayEncoding.Decode <int>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    case 85:
                    {
                        break;
                    }

                    case 86:
                    {
                        arrays = ArrayEncoding.Decode <bool>(buffer, num, num1, formatCode);
                        return(arrays);
                    }

                    default:
                    {
                        switch (num2)
                        {
                        case 96:
                        {
                            arrays = ArrayEncoding.Decode <ushort>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        case 97:
                        {
                            arrays = ArrayEncoding.Decode <short>(buffer, num, num1, formatCode);
                            return(arrays);
                        }

                        default:
                        {
                            throw new NotSupportedException(SRClient.NotSupportFrameCode(formatCode));
                        }
                        }
                        break;
                    }
                    }
                }
                arrays = ArrayEncoding.Decode <long>(buffer, num, num1, formatCode);
            }
            return(arrays);
        }
Exemplo n.º 16
0
        private static int GetEncodeSize(Array array, bool arrayEncoding)
        {
            int num;

            return(ArrayEncoding.GetEncodeSize(array, arrayEncoding, out num));
        }