00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef KEXTSOCKLOOKUP_H
00022
#define KEXTSOCKLOOKUP_H
00023
00024
#include <qdns.h>
00025
#include "kidna.h"
00026
#include "netsupp.h"
00027
00039
class KExtendedSocketLookup:
public QObject
00040 {
00041 Q_OBJECT
00042
public:
00043
QDns dnsIpv4, dnsIpv6;
00044
int workingCount;
00045
const QString& servname;
00046 addrinfo hint;
00047
00048 KExtendedSocketLookup(
const QString& hostname,
const QString& servname,
const addrinfo& hint) :
00049 dnsIpv4(KIDNA::toAscii(hostname),
QDns::A), dnsIpv6(KIDNA::toAscii(hostname),
QDns::Aaaa), workingCount(2),
00050 servname(servname), hint(hint)
00051 {
00052 connect(&dnsIpv4, SIGNAL(resultsReady()),
this, SLOT(slotResultsReady()));
00053 connect(&dnsIpv6, SIGNAL(resultsReady()),
this, SLOT(slotResultsReady()));
00054 }
00055
00056
inline bool isWorking()
const
00057
{
return workingCount; }
00058
00059 kde_addrinfo *results();
00060
static void freeresults(kde_addrinfo* res);
00061
00062
public slots:
00063
void slotResultsReady()
00064 {
00065
if (--workingCount == 0)
00066 emit resultsReady();
00067 }
00068
00069 signals:
00070
void resultsReady();
00071
00072
public:
00073
friend class KExtendedSocket;
00074 };
00075
00076
#endif