Пример #1
0
        public static IList Decode(ByteBuffer buffer, FormatCode formatCode)
        {
            if (formatCode == 0 && (formatCode = AmqpEncoding.ReadFormatCode(buffer)) == FormatCode.Null)
            {
                return(null);
            }

            IList list = new List <object>();

            if (formatCode == FormatCode.List0)
            {
                return(list);
            }

            int size  = 0;
            int count = 0;

            AmqpEncoding.ReadSizeAndCount(buffer, formatCode, FormatCode.List8, FormatCode.List32, out size, out count);

            for (; count > 0; --count)
            {
                object item = AmqpEncoding.DecodeObject(buffer);
                list.Add(item);
            }

            return(list);
        }
Пример #2
0
        static T[] Decode <T>(ByteBuffer buffer, int size, int count, FormatCode formatCode)
        {
            T[]          array      = new T[count];
            EncodingBase encoding   = AmqpEncoding.GetEncoding(formatCode);
            object       descriptor = null;

            if (formatCode == FormatCode.Described)
            {
                descriptor = AmqpEncoding.DecodeObject(buffer);
                formatCode = AmqpEncoding.ReadFormatCode(buffer);
            }

            for (int i = 0; i < count; ++i)
            {
                object value = encoding.DecodeObject(buffer, formatCode);
                if (descriptor != null)
                {
                    value = new DescribedType(descriptor, value);
                }

                array[i] = (T)value;
            }

            return(array);
        }
Пример #3
0
        public static IList Decode(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);
                }
            }
            IList objs = new List <object>();

            if (formatCode == 69)
            {
                return(objs);
            }
            AmqpEncoding.ReadSizeAndCount(buffer, formatCode, 192, 208, out num, out num1);
            while (num1 > 0)
            {
                objs.Add(AmqpEncoding.DecodeObject(buffer));
                num1--;
            }
            return(objs);
        }
Пример #4
0
 public override object DecodeObject(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode)
 {
     if (formatCode == 0)
     {
         return(DescribedEncoding.Decode(buffer, formatCode));
     }
     return(AmqpEncoding.DecodeObject(buffer, formatCode));
 }
Пример #5
0
 public static void ReadMapValue(ByteBuffer buffer, AmqpMap map, int size, int count)
 {
     for (; count > 0; count -= 2)
     {
         object key  = AmqpEncoding.DecodeObject(buffer);
         object item = AmqpEncoding.DecodeObject(buffer);
         map[new MapKey(key)] = item;
     }
 }
Пример #6
0
 public static void ReadMapValue(ByteBuffer buffer, AmqpMap map, int size, int count)
 {
     while (count > 0)
     {
         object obj  = AmqpEncoding.DecodeObject(buffer);
         object obj1 = AmqpCodec.DecodeObject(buffer);
         map[new MapKey(obj)] = obj1;
         count = count - 2;
     }
 }
Пример #7
0
        private static DescribedType Decode(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode)
        {
            if (formatCode != 0)
            {
                throw AmqpEncoding.GetEncodingException(SRAmqp.AmqpInvalidFormatCode(formatCode, buffer.Offset));
            }
            object obj = AmqpEncoding.DecodeObject(buffer);

            return(new DescribedType(obj, AmqpEncoding.DecodeObject(buffer)));
        }
Пример #8
0
        public static object DecodeObject(ByteBuffer buffer)
        {
            FormatCode formatCode = AmqpEncoding.ReadFormatCode(buffer);

            if (formatCode == 64)
            {
                return(null);
            }
            return(AmqpEncoding.DecodeObject(buffer, formatCode));
        }
Пример #9
0
        private static T[] Decode <T>(ByteBuffer buffer, int size, int count, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode)
        {
            T[]          tArray   = new T[count];
            EncodingBase encoding = AmqpEncoding.GetEncoding(formatCode);
            object       obj      = null;

            if (formatCode == 0)
            {
                obj        = AmqpEncoding.DecodeObject(buffer);
                formatCode = AmqpEncoding.ReadFormatCode(buffer);
            }
            for (int i = 0; i < count; i++)
            {
                object describedType = encoding.DecodeObject(buffer, formatCode);
                if (obj != null)
                {
                    describedType = new DescribedType(obj, describedType);
                }
                tArray[i] = (T)describedType;
            }
            return(tArray);
        }