#ifndef KADU_DNS_HANDLER_H
#define KADU_DNS_HANDLER_H

#include <qdns.h>
#include <qhostaddress.h>
#include <qobject.h>
#include <qstring.h>

/**
	Tłumaczy adres IP na nazwę domeny (DNS). Kiedy proces zostanie zakończony,
	emituje odpowiedni sygnał zawierający informację o nazwie domeny.
	\class DNSHandler
	\brief Klasa tłumacząca adres IP na nazwę domeny.
**/
class DNSHandler : public QObject
{
	Q_OBJECT

	public:
		/**
			\fn DNSHandler(const QString &marker, const QHostAddress &addr)
			Konstruktor wywołujący zapytanie o domenę dla danego adresu IP.
			\param marker znacznik (np. identyfikator protokołu)
			\param addr adres IP
		**/
		DNSHandler(const QString &marker, const QHostAddress &addr);

		/**
			\fn ~DNSHandler()
			Destruktor klasy
		**/
		~DNSHandler();

		static int counter; /*!< licznik obiektów tej klasy */

	private:
		QDns DNSResolver; /*!< obiekt zajmujący się translacją adresu na nazwę domeny */
		QString marker; /*!< znacznik (np. identyfikator protokołu) */

	private slots:
		/**
			\fn void resultsReady()
			Funkcja wywoływana, gdy proces tłumaczenia został zakończony.
		**/
		void resultsReady();

	signals:
		/**
			\fn void result(const QString &marker, const QString &hostname)
			Sygnał emitowany, gdy proces tłumaczenia został zakończony.
			\param marker znacznik (np. identyfikator protokołu)
			\param hostname nazwa domeny odpowiadająca adresowi IP o który pytano
		**/
		void result(const QString &marker, const QString &hostname);
};
#endif
