private void SendPacket(MySqlPacket p)
 {
   driver.SendPacket(p);
 }
示例#2
0
 private void WritePassword(MySqlPacket packet)
 {
   bool secure = (Flags & ClientFlags.SECURE_CONNECTION) != 0;
   object password = GetPassword();
   if (password is string)
   {
     if (secure)
       packet.WriteLenString((string)password);
     else
       packet.WriteString((string)password);
   }
   else if (password == null)
     packet.WriteByte(0);
   else if (password is byte[])
     packet.Write(password as byte[]);
   else throw new MySqlException("Unexpected password format: " + password.GetType());
 }
    private void HandleAuthChange(MySqlPacket packet)
    {
      var b = packet.ReadByte();
      Debug.Assert(b == 0xfe);

      var method = packet.ReadString();
      var authData = new byte[packet.Length - packet.Position];
      Array.Copy(packet.Buffer, packet.Position, authData, 0, authData.Length);

      var plugin = GetPlugin(method, driver, authData);
      plugin.AuthenticationChange();
    }
示例#4
0
        void IMySqlValue.SkipValue(MySqlPacket packet)
        {
            int len = (int)packet.ReadFieldLength();

            packet.Position += len;
        }
 void IMySqlValue.SkipValue(MySqlPacket packet)
 {
     packet.Position += 4;
 }
示例#6
0
        void IMySqlValue.SkipValue(MySqlPacket packet)
        {
            int num = packet.ReadByte();

            packet.Position += num;
        }
示例#7
0
        void IMySqlValue.SkipValue(MySqlPacket packet)
        {
            int len = packet.ReadByte();

            packet.Position += len;
        }
示例#8
0
        public void SkipValue(MySqlPacket packet)
        {
            int len = packet.ReadFieldLength();

            packet.Position += len;
        }
 private void SendPacket(MySqlPacket p)
 {
     driver.SendPacket(p);
 }
示例#10
0
 void IMySqlValue.SkipValue(MySqlPacket packet)
 {
     packet.ReadByte();
 }
示例#11
0
        void IMySqlValue.WriteValue(MySqlPacket packet, bool binary, object value, int length)
        {
            MySqlDateTime dtValue;

            string valueAsString = value as string;

            if (value is DateTime)
            {
                dtValue = new MySqlDateTime(type, (DateTime)value);
            }
            else if (valueAsString != null)
            {
                dtValue = MySqlDateTime.Parse(valueAsString);
            }
            else if (value is MySqlDateTime)
            {
                dtValue = (MySqlDateTime)value;
            }
            else
            {
                throw new MySqlException("Unable to serialize date/time value.");
            }

            if (!binary)
            {
                SerializeText(packet, dtValue);
                return;
            }

            if (dtValue.Microsecond > 0)
            {
                packet.WriteByte(11);
            }
            else
            {
                packet.WriteByte(7);
            }

            packet.WriteInteger(dtValue.Year, 2);
            packet.WriteByte((byte)dtValue.Month);
            packet.WriteByte((byte)dtValue.Day);
            if (type == MySqlDbType.Date)
            {
                packet.WriteByte(0);
                packet.WriteByte(0);
                packet.WriteByte(0);
            }
            else
            {
                packet.WriteByte((byte)dtValue.Hour);
                packet.WriteByte((byte)dtValue.Minute);
                packet.WriteByte((byte)dtValue.Second);
            }

            if (dtValue.Microsecond > 0)
            {
                long val = dtValue.Microsecond;
                for (int x = 0; x < 4; x++)
                {
                    packet.WriteByte((byte)(val & 0xff));
                    val >>= 8;
                }
            }
        }
示例#12
0
        public void SkipValue(MySqlPacket packet)
        {
            int num = (int)packet.ReadFieldLength();

            packet.Position += num;
        }