KVIrc 5.2.6
Developer APIs
KviIrcConnectionTargetResolver.h
Go to the documentation of this file.
1#ifndef _KVI_IRCCONNECTIONTARGETRESOLVER_H_
2#define _KVI_IRCCONNECTIONTARGETRESOLVER_H_
3//=============================================================================
4//
5// File : KviIrcConnectionTargetResolver.h
6// Creation date : Fri 11 May 2004 23:17:42 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2004-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#include "kvi_settings.h"
28#include "KviError.h"
29#include "KviQString.h"
30
31#include <QObject>
32
33#ifdef Status
34#undef Status
35#endif
36
37#ifdef Success
38#undef Success
39#endif
40
41#ifdef Error
42#undef Error
43#endif
44
46class KviDnsResolver;
49
50class QTimer;
51
53{
54 friend class KviIrcLink; // upper protocol in the stack
55 Q_OBJECT
56protected:
59
60public:
61 enum Status
62 {
65 };
72
73private:
74 KviIrcConnection * m_pConnection; // shallow, never null
75 KviIrcConnectionTarget * m_pTarget = nullptr; // shallow, never null
76 KviConsoleWindow * m_pConsole; // shallow, never null
79
80 // Auxiliary stuff
81 QTimer * m_pStartTimer = nullptr; // timer used to start the connection
82 KviDnsResolver * m_pProxyDns = nullptr; // the dns object for the proxy hostnames
83 KviDnsResolver * m_pServerDns = nullptr; // the dns object for the server hostnames
84
86
87public:
89 // valid only after the terminated() signal
90 Status status() const { return m_eStatus; }
91 int lastError() const { return m_iLastError; }
92 // causes the resolver to terminate with iLastError == KviError_operationAborted
93 // the terminated() signal is emitted.
94 void abort();
95protected slots:
96 void asyncStartResolve();
97 void serverLookupTerminated(KviDnsResolver *);
98 void proxyLookupTerminated(KviDnsResolver *);
99
100private:
101 void cleanup();
102 void lookupProxyHostname();
103 void lookupServerHostname();
104 void haveServerIp();
105 bool validateLocalAddress(const QString & szAddress, QString & szBuffer);
106 void terminate(Status s, int iLastError);
107signals:
109};
110
111#endif
Error List.
Helper functions for the QString class.
Definition KviConsoleWindow.h:74
The KviDnsResolver class.
Definition KviDnsResolver.h:90
KviDnsResolver * m_pServerDns
Definition KviIrcConnectionTargetResolver.h:83
KviIrcConnectionTarget * m_pTarget
Definition KviIrcConnectionTargetResolver.h:75
KviDnsResolver * m_pProxyDns
Definition KviIrcConnectionTargetResolver.h:82
KviIrcConnection * m_pConnection
Definition KviIrcConnectionTargetResolver.h:74
friend class KviIrcLink
Definition KviIrcConnectionTargetResolver.h:54
int m_iLastError
Definition KviIrcConnectionTargetResolver.h:85
void start(KviIrcConnectionTarget *t)
Definition KviIrcConnectionTargetResolver.cpp:104
Status m_eStatus
Definition KviIrcConnectionTargetResolver.h:77
QTimer * m_pStartTimer
Definition KviIrcConnectionTargetResolver.h:81
State
Definition KviIrcConnectionTargetResolver.h:67
@ Terminated
Definition KviIrcConnectionTargetResolver.h:70
@ Idle
Definition KviIrcConnectionTargetResolver.h:68
@ Running
Definition KviIrcConnectionTargetResolver.h:69
State m_eState
Definition KviIrcConnectionTargetResolver.h:78
Status status() const
Definition KviIrcConnectionTargetResolver.h:90
int lastError() const
Definition KviIrcConnectionTargetResolver.h:91
KviConsoleWindow * m_pConsole
Definition KviIrcConnectionTargetResolver.h:76
KviIrcConnectionTargetResolver(KviIrcConnection *pConnection)
Definition KviIrcConnectionTargetResolver.cpp:52
Status
Definition KviIrcConnectionTargetResolver.h:62
@ Success
Definition KviIrcConnectionTargetResolver.h:63
@ Error
Definition KviIrcConnectionTargetResolver.h:64
Definition KviIrcConnectionTarget.h:36
An abstraction of a connection to an IRC server.
Definition KviIrcConnection.h:97
#define t
Definition detector.cpp:85
#define s
Definition detector.cpp:84
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127
@ Success
Definition KviError.h:49
char szBuffer[4096]
Definition winamp.cpp:77