static decimal DecodeValue(ByteBuffer buffer, FormatCode formatCode) { decimal value = 0; switch (formatCode) { case FormatCode.Decimal32: value = DecimalEncoding.DecodeDecimal32(buffer); break; case FormatCode.Decimal64: value = DecimalEncoding.DecodeDecimal64(buffer); break; case FormatCode.Decimal128: value = DecimalEncoding.DecodeDecimal128(buffer); break; default: throw AmqpEncoding.GetInvalidFormatCodeException(formatCode, buffer.Offset); } ; return(value); }
private static decimal DecodeDecimal64(ByteBuffer buffer) { byte[] numArray = new byte[8]; AmqpBitConverter.ReadBytes(buffer, numArray, 0, (int)numArray.Length); int num = 1; int num1 = 0; num = ((numArray[0] & 128) != 0 ? -1 : 1); if ((numArray[0] & 96) != 96) { num1 = (numArray[0] & 127) << 3 | (numArray[1] & 224) >> 5; numArray[0] = 0; numArray[1] = (byte)(numArray[1] & 31); } else if ((numArray[0] & 120) == 0) { num1 = (numArray[0] & 31) << 8 | (numArray[1] & 248) >> 3; numArray[0] = 0; numArray[1] = (byte)(numArray[1] & 7); numArray[1] = (byte)(numArray[1] | 32); } int num2 = (int)AmqpBitConverter.ReadUInt(numArray, 0, 4); int num3 = (int)AmqpBitConverter.ReadUInt(numArray, 4, 4); return(DecimalEncoding.CreateDecimal(num3, num2, 0, num, num1 - 398)); }
public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer) { if (arrayEncoding) { DecimalEncoding.EncodeValue((decimal)value, buffer); return; } DecimalEncoding.Encode(new decimal?((decimal)value), buffer); }
public static decimal?Decode(ByteBuffer buffer, FormatCode formatCode) { if (formatCode == 0 && (formatCode = AmqpEncoding.ReadFormatCode(buffer)) == FormatCode.Null) { return(null); } return(DecimalEncoding.DecodeValue(buffer, formatCode)); }
public static void Encode(decimal?value, ByteBuffer buffer) { if (!value.HasValue) { AmqpEncoding.EncodeNull(buffer); return; } AmqpBitConverter.WriteUByte(buffer, 148); DecimalEncoding.EncodeValue(value.Value, buffer); }
public override void EncodeObject(object value, bool arrayEncoding, ByteBuffer buffer) { if (arrayEncoding) { DecimalEncoding.EncodeValue((decimal)value, buffer); } else { DecimalEncoding.Encode((decimal)value, buffer); } }
public static void Encode(decimal?value, ByteBuffer buffer) { if (value.HasValue) { AmqpBitConverter.WriteUByte(buffer, (byte)FormatCode.Decimal128); DecimalEncoding.EncodeValue(value.Value, buffer); } else { AmqpEncoding.EncodeNull(buffer); } }
public static decimal?Decode(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); } } return(new decimal?(DecimalEncoding.DecodeValue(buffer, formatCode))); }
private static decimal DecodeValue(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode) { decimal num = new decimal(0); byte num1 = formatCode; if (num1 == 116) { num = DecimalEncoding.DecodeDecimal32(buffer); } else if (num1 == 132) { num = DecimalEncoding.DecodeDecimal64(buffer); } else { if (num1 != 148) { throw AmqpEncoding.GetEncodingException(SRAmqp.AmqpInvalidFormatCode(formatCode, buffer.Offset)); } num = DecimalEncoding.DecodeDecimal128(buffer); } return(num); }
private static decimal DecodeDecimal128(ByteBuffer buffer) { byte[] numArray = new byte[16]; AmqpBitConverter.ReadBytes(buffer, numArray, 0, (int)numArray.Length); int num = 1; int num1 = 0; num = ((numArray[0] & 128) != 0 ? -1 : 1); if ((numArray[0] & 96) != 96) { num1 = (numArray[0] & 127) << 7 | (numArray[1] & 254) >> 1; numArray[0] = 0; numArray[1] = (byte)(numArray[1] & 1); } else if ((numArray[0] & 120) == 0) { return(new decimal(0)); } int num2 = (int)AmqpBitConverter.ReadUInt(numArray, 4, 4); int num3 = (int)AmqpBitConverter.ReadUInt(numArray, 8, 4); int num4 = (int)AmqpBitConverter.ReadUInt(numArray, 12, 4); return(DecimalEncoding.CreateDecimal(num4, num3, num2, num, num1 - 6176)); }
public override object DecodeObject(ByteBuffer buffer, Microsoft.ServiceBus.Messaging.Amqp.Encoding.FormatCode formatCode) { return(DecimalEncoding.Decode(buffer, formatCode)); }
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; }
public override object DecodeObject(ByteBuffer buffer, FormatCode formatCode) { return(DecimalEncoding.Decode(buffer, formatCode)); }