Exemple #1
0
		public Fields(FieldPacket[] fieldPackets)
		{
			FieldPackets = fieldPackets;
			for (int i = 0; i < FieldPackets.Length; i++) {
				dict[FieldPackets[i].Name] = i;
			}
		}
Exemple #2
0
		object Convert(FieldPacket field, string val)
		{
			if (val == null) {
				return null;
			}

			if ((field.Flags & ColumnFlags.UNSIGNED) > 0) {
				switch (field.Type) {
				case MySqlDbType.Int16:
					return UInt16.Parse(val);
				case MySqlDbType.Int24:
					return UInt32.Parse(val);
				case MySqlDbType.Int32:
					return UInt32.Parse(val);
				case MySqlDbType.Int64:
					return UInt64.Parse(val);
				case MySqlDbType.Byte:
					return val == "1";
				default:
					throw new Exception(string.Format("(Unsigned) Not supported type {0}:{1}", field.Type, val));
				}
			} else {
				switch (field.Type) {
				case MySqlDbType.Int16:
					return Int16.Parse(val);
				case MySqlDbType.Int24:
					return Int32.Parse(val);
				case MySqlDbType.Int32:
					return Int32.Parse(val);
				case MySqlDbType.Int64:
					return Int64.Parse(val);
				case MySqlDbType.Byte:
					return Byte.Parse(val);
				case MySqlDbType.Float:
					return float.Parse(val);
				case MySqlDbType.Date:
					return DateTime.Parse(val);
				case MySqlDbType.DateTime:
					return DateTime.Parse(val);
				case MySqlDbType.String:
				case MySqlDbType.VarChar:
				case MySqlDbType.Blob:
					return val;
				default:
					throw new Exception(string.Format("Not supported type {0}:{1}", field.Type, val));
				}
			}
		}
Exemple #3
0
        IEnumerable <bool> ProcessRequest(byte packetNumber, byte[] packet)
        {
            var queryCommand = commands.Peek().Callback;

            packetReader.NewPacket(packet);

            var type = ResponsePacket.GetType(packet);

            if (type != ResponsePacketType.Other)
            {
                var responsePacket = ResponsePacket.Parse(packetReader);

                queryCommand.FireResponse(responsePacket);
                FireNextCommand();
                yield return(true);

                yield break;
            }

            long length = packetReader.ReadLength();

            byte[] data;
            byte   num;

            FieldPacket[] fields = new FieldPacket[length];

            for (int i = 0; i < length; i++)
            {
                while (!ReadPacket(out num, out data))
                {
                    yield return(false);
                }

                packetReader.NewPacket(data);
                var field = FieldPacket.Parse(packetReader);
                fields[i] = field;
            }

            var f = new Fields(fields);

            while (!ReadPacket(out num, out data))
            {
                yield return(false);
            }

            queryCommand.FireFields(f.FieldPackets);

            packetReader.NewPacket(data);
            // TODO: check if the packet is in place
            EOFPacket.Parse(packetReader);


            while (true)
            {
                while (!ReadPacket(out num, out data))
                {
                    yield return(false);
                }

                if (ResponsePacket.GetType(data) == ResponsePacketType.EOF)
                {
                    queryCommand.FireEnd();
                    FireNextCommand();
                    yield return(true);

                    yield break;
                }

                packetReader.NewPacket(data);
                string[] values = new string[length];
                for (int i = 0; i < length; i++)
                {
                    values[i] = packetReader.ReadLengthString();
                }

                queryCommand.FireRow(new Row(f, values));
            }
        }
Exemple #4
0
		IEnumerable<bool> ProcessRequest(byte packetNumber, byte[] packet)
		{
			var queryCommand = commands.Peek().Callback;

			packetReader.NewPacket(packet);

			var type = ResponsePacket.GetType(packet);

			if (type != ResponsePacketType.Other) {
				var responsePacket = ResponsePacket.Parse(packetReader);

				queryCommand.FireResponse(responsePacket);
				FireNextCommand();
				yield return true;
				yield break;
			}

			long length = packetReader.ReadLength();

			byte[] data;
			byte num;

			FieldPacket[] fields = new FieldPacket[length];

			for (int i = 0; i < length; i++) {
				while (!ReadPacket(out num, out data)) {
					yield return false;
				}

				packetReader.NewPacket(data);
				var field = FieldPacket.Parse(packetReader);
				fields[i] = field;
			}

			var f = new Fields(fields);

			while (!ReadPacket(out num, out data)) {
				yield return false;
			}

			queryCommand.FireFields(f.FieldPackets);

			packetReader.NewPacket(data);
			// TODO: check if the packet is in place
			EOFPacket.Parse(packetReader);


			while (true) {
				while (!ReadPacket(out num, out data)) {
					yield return false;
				}

				if (ResponsePacket.GetType(data) == ResponsePacketType.EOF) {
					queryCommand.FireEnd();
					FireNextCommand();
					yield return true;
					yield break;
				}

				packetReader.NewPacket(data);
				string[] values = new string[length];
				for (int i = 0; i < length; i++) {
					values[i] = packetReader.ReadLengthString();
				}

				queryCommand.FireRow(new Row(f, values));
			}
		}
Exemple #5
0
        object Convert(FieldPacket field, string val)
        {
            if (val == null)
            {
                return(null);
            }

            if ((field.Flags & ColumnFlags.UNSIGNED) > 0)
            {
                switch (field.Type)
                {
                case MySqlDbType.Int16:
                    return(UInt16.Parse(val));

                case MySqlDbType.Int24:
                    return(UInt32.Parse(val));

                case MySqlDbType.Int32:
                    return(UInt32.Parse(val));

                case MySqlDbType.Int64:
                    return(UInt64.Parse(val));

                case MySqlDbType.Byte:
                    return(val == "1");

                default:
                    throw new Exception(string.Format("(Unsigned) Not supported type {0}:{1}", field.Type, val));
                }
            }
            else
            {
                switch (field.Type)
                {
                case MySqlDbType.Int16:
                    return(Int16.Parse(val));

                case MySqlDbType.Int24:
                    return(Int32.Parse(val));

                case MySqlDbType.Int32:
                    return(Int32.Parse(val));

                case MySqlDbType.Int64:
                    return(Int64.Parse(val));

                case MySqlDbType.Byte:
                    return(Byte.Parse(val));

                case MySqlDbType.Float:
                    return(float.Parse(val));

                case MySqlDbType.Date:
                    return(DateTime.Parse(val));

                case MySqlDbType.DateTime:
                    return(DateTime.Parse(val));

                case MySqlDbType.String:
                case MySqlDbType.VarChar:
                case MySqlDbType.Blob:
                    return(val);

                default:
                    throw new Exception(string.Format("Not supported type {0}:{1}", field.Type, val));
                }
            }
        }