Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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);
         }
     }
 }
Esempio n. 5
0
 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);
         }
     }
 }
Esempio n. 6
0
        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);
                }
            }
        }