Exemplo n.º 1
0
 public void ReadFrom(IXdrReader reader)
 {
     BoolValue     = reader.ReadBool();
     Int8Value     = reader.ReadByte();
     Int16Value    = reader.ReadShort();
     Int32Value    = reader.ReadInt();
     Int64Value    = reader.ReadLong();
     UInt16Value   = reader.ReadUShort();
     UInt32Value   = reader.ReadUInt();
     UInt64Value   = reader.ReadULong();
     Float64Value  = reader.ReadDouble();
     Float32Value  = reader.ReadFloat();
     BoolValue2    = reader.ReadBoolArray();
     Int8Value2    = reader.ReadByteArray();
     Int16Value2   = reader.ReadShortArray();
     Int32Value2   = reader.ReadIntArray();
     Int64Value2   = reader.ReadLongArray();
     UInt16Value2  = reader.ReadUShortArray();
     UInt32Value2  = reader.ReadUIntArray();
     UInt64Value2  = reader.ReadULongArray();
     Float64Value2 = reader.ReadDoubleArray();
     Float32Value2 = reader.ReadFloatArray();
     reader.ReadBoolArray(BoolValue3);
     reader.ReadByteArray(Int8Value3);
     reader.ReadShortArray(Int16Value3);
     reader.ReadIntArray(Int32Value3);
     reader.ReadLongArray(Int64Value3);
     reader.ReadUShortArray(UInt16Value3);
     reader.ReadUIntArray(UInt32Value3);
     reader.ReadULongArray(UInt64Value3);
     reader.ReadDoubleArray(Float64Value3);
     reader.ReadFloatArray(Float32Value3);
 }
        protected async Task <object> ReadRawValue(IXdrReader xdr, DbField field, AsyncWrappingCommonArgs async)
        {
            var innerCharset = !_database.Charset.IsNoneCharset ? _database.Charset : field.Charset;

            switch (field.DbDataType)
            {
            case DbDataType.Char:
                if (field.Charset.IsOctetsCharset)
                {
                    return(await xdr.ReadOpaque(field.Length, async).ConfigureAwait(false));
                }
                else
                {
                    var s = await xdr.ReadString(innerCharset, field.Length, async).ConfigureAwait(false);

                    if ((field.Length % field.Charset.BytesPerCharacter) == 0 &&
                        s.Length > field.CharCount)
                    {
                        return(s.Substring(0, field.CharCount));
                    }
                    else
                    {
                        return(s);
                    }
                }

            case DbDataType.VarChar:
                if (field.Charset.IsOctetsCharset)
                {
                    return(await xdr.ReadBuffer(async).ConfigureAwait(false));
                }
                else
                {
                    return(await xdr.ReadString(innerCharset, async).ConfigureAwait(false));
                }

            case DbDataType.SmallInt:
                return(await xdr.ReadInt16(async).ConfigureAwait(false));

            case DbDataType.Integer:
                return(await xdr.ReadInt32(async).ConfigureAwait(false));

            case DbDataType.Array:
            case DbDataType.Binary:
            case DbDataType.Text:
            case DbDataType.BigInt:
                return(await xdr.ReadInt64(async).ConfigureAwait(false));

            case DbDataType.Decimal:
            case DbDataType.Numeric:
                return(await xdr.ReadDecimal(field.DataType, field.NumericScale, async).ConfigureAwait(false));

            case DbDataType.Float:
                return(await xdr.ReadSingle(async).ConfigureAwait(false));

            case DbDataType.Guid:
                return(await xdr.ReadGuid(async).ConfigureAwait(false));

            case DbDataType.Double:
                return(await xdr.ReadDouble(async).ConfigureAwait(false));

            case DbDataType.Date:
                return(await xdr.ReadDate(async).ConfigureAwait(false));

            case DbDataType.Time:
                return(await xdr.ReadTime(async).ConfigureAwait(false));

            case DbDataType.TimeStamp:
                return(await xdr.ReadDateTime(async).ConfigureAwait(false));

            case DbDataType.Boolean:
                return(await xdr.ReadBoolean(async).ConfigureAwait(false));

            case DbDataType.TimeStampTZ:
                return(await xdr.ReadZonedDateTime(false, async).ConfigureAwait(false));

            case DbDataType.TimeStampTZEx:
                return(await xdr.ReadZonedDateTime(true, async).ConfigureAwait(false));

            case DbDataType.TimeTZ:
                return(await xdr.ReadZonedTime(false, async).ConfigureAwait(false));

            case DbDataType.TimeTZEx:
                return(await xdr.ReadZonedTime(true, async).ConfigureAwait(false));

            case DbDataType.Dec16:
                return(await xdr.ReadDec16(async).ConfigureAwait(false));

            case DbDataType.Dec34:
                return(await xdr.ReadDec34(async).ConfigureAwait(false));

            case DbDataType.Int128:
                return(await xdr.ReadInt128(async).ConfigureAwait(false));

            default:
                throw TypeHelper.InvalidDataType((int)field.DbDataType);
            }
        }