KVIrc 5.2.6
Developer APIs
KviDnsResolverNew.h
Go to the documentation of this file.
1#ifndef _KviDnsResolver_h_
2#define _KviDnsResolver_h_
3//=============================================================================
4//
5// File : KviDnsResolverNew.h
6// Creation date : Sat Jul 21 2000 13:59:11 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27// This is a nicely working DNS resolver that uses the QHostInfo interface
28// and thus gets rid of all the ugly OS dependencies we have.
29// It should be sufficient to rename this file and use this class
30// instead of the old KviDnsResolver.
31
32// However at present time (04.01.2010) QHostInfo doesn't seem to support
33// IPv6. Despite the documentation saying that IPv6 addresses are supported
34// the query performed by QHostInfo::lookupHost() asks only for the A record.
35//
36// Check it again with newer Qt versions and verify.
37
38#include "kvi_settings.h"
39#include "KviError.h" // FIXME: Get rid of this at all..
40#include "KviPointerList.h"
41
42#include <QObject>
43
45class QHostInfo;
46class QString;
47
54class KVILIB_API KviDnsResolver : public QObject
55{
56 Q_OBJECT
57public:
61 KviDnsResolver(QObject * pParent = nullptr);
62
68
69public:
71 {
72 IPv4,
73 IPv6,
74 Any
75 };
76
77 enum State
78 {
79 Idle,
80 Busy,
81 Failure,
83 };
84
85private:
87
88public:
92 State state() const;
93
98 bool lookup(const QString & szQuery, QueryType eType);
99
100 // Results (return always non null-data..but valid results only if state() == Success or Failure)
101 KviError::Code error() const; // DEPRECATED use errorString()
102 const QString & errorString() const;
103
104 const QString & hostName() const;
105 const QString & firstIpAddress();
106 int ipAddressCount() const;
108 const QString & query() const;
109 bool isRunning() const;
110
111private slots:
112 void slotHostLookupTerminated(const QHostInfo & oHostInfo);
113
114signals:
116
117}; // class KviDnsResolver
118
119#endif
Error List.
C++ Template based double linked pointer list class.
Definition KviDnsResolverNew.cpp:33
The KviDnsResolver class.
Definition KviDnsResolver.h:90
KviPointerList< QString > * ipAddressList()
bool lookup(const QString &szQuery, QueryType eType)
bool isRunning() const
QueryType
Definition KviDnsResolver.h:99
@ IPv6
Definition KviDnsResolver.h:101
@ IPv4
Definition KviDnsResolver.h:100
@ Any
Definition KviDnsResolver.h:102
const QString & firstIpAddress()
const QString & hostName()
Definition KviDnsResolver.cpp:450
State
Definition KviDnsResolver.h:105
@ Idle
Definition KviDnsResolver.h:106
@ Failure
Definition KviDnsResolver.h:108
@ Busy
Definition KviDnsResolver.h:107
@ Success
Definition KviDnsResolver.h:109
std::size_t ipAddressCount()
Definition KviDnsResolver.cpp:445
void slotHostLookupTerminated(const QHostInfo &oHostInfo)
Definition KviDnsResolverNew.cpp:94
void lookupDone(KviDnsResolver *)
QString errorString()
Definition KviDnsResolver.cpp:418
KviDnsResolverPrivate * m_pPrivateData
Definition KviDnsResolverNew.h:86
const QString & query()
Definition KviDnsResolver.cpp:462
KviError::Code error()
Definition KviDnsResolver.cpp:411
KviDnsResolver()
Definition KviDnsResolver.cpp:376
State state()
Definition KviDnsResolver.h:126
A template double linked list of pointers.
Definition KviPointerList.h:371
This file contains compile time settings.
#define KVILIB_API
Definition kvi_settings.h:124
Code
Contains all error codes.
Definition KviError.h:48