IMyCatValue IMyCatValue.ReadValue(MyCatPacket packet, long length, bool nullVal)
        {
            if (nullVal)
            {
                return(new MyCatTimeSpan(true));
            }

            if (length >= 0)
            {
                string value = packet.ReadString(length);
                ParseMyCat(value);
                return(this);
            }

            long bufLength = packet.ReadByte();
            int  negate    = 0;

            if (bufLength > 0)
            {
                negate = packet.ReadByte();
            }

            isNull = false;
            if (bufLength == 0)
            {
                isNull = true;
            }
            else if (bufLength == 5)
            {
                mValue = new TimeSpan(packet.ReadInteger(4), 0, 0, 0);
            }
            else if (bufLength == 8)
            {
                mValue = new TimeSpan(packet.ReadInteger(4),
                                      packet.ReadByte(), packet.ReadByte(), packet.ReadByte());
            }
            else
            {
                mValue = new TimeSpan(packet.ReadInteger(4),
                                      packet.ReadByte(), packet.ReadByte(), packet.ReadByte(),
                                      packet.ReadInteger(4) / 1000000);
            }

            if (negate == 1)
            {
                mValue = mValue.Negate();
            }
            return(this);
        }
        IMyCatValue IMyCatValue.ReadValue(MyCatPacket packet, long length, bool nullVal)
        {
            if (nullVal)
            {
                return(new MyCatUInt16(true));
            }

            if (length == -1)
            {
                return(new MyCatUInt16((ushort)packet.ReadInteger(2)));
            }
            else
            {
                return(new MyCatUInt16(UInt16.Parse(packet.ReadString(length))));
            }
        }
Exemplo n.º 3
0
        IMyCatValue IMyCatValue.ReadValue(MyCatPacket packet, long length, bool nullVal)
        {
            if (nullVal)
            {
                return(new MyCatUInt32((this as IMyCatValue).MyCatDbType, true));
            }

            if (length == -1)
            {
                return(new MyCatUInt32((this as IMyCatValue).MyCatDbType,
                                       (uint)packet.ReadInteger(4)));
            }
            else
            {
                return(new MyCatUInt32((this as IMyCatValue).MyCatDbType,
                                       UInt32.Parse(packet.ReadString(length), NumberStyles.Any, CultureInfo.InvariantCulture)));
            }
        }
        IMyCatValue IMyCatValue.ReadValue(MyCatPacket packet, long length, bool nullVal)
        {
            if (nullVal)
            {
                return(new MyCatDateTime(type, true));
            }

            if (length >= 0)
            {
                string value = packet.ReadString(length);
                return(ParseMyCat(value));
            }

            long bufLength = packet.ReadByte();
            int  year = 0, month = 0, day = 0;
            int  hour = 0, minute = 0, second = 0, microsecond = 0;

            if (bufLength >= 4)
            {
                year  = packet.ReadInteger(2);
                month = packet.ReadByte();
                day   = packet.ReadByte();
            }

            if (bufLength > 4)
            {
                hour   = packet.ReadByte();
                minute = packet.ReadByte();
                second = packet.ReadByte();
            }

            if (bufLength > 7)
            {
                microsecond = packet.Read3ByteInt();
                packet.ReadByte();
            }

            return(new MyCatDateTime(type, year, month, day, hour, minute, second, microsecond));
        }