1
#ifndef _KVI_IRCCONNECTIONTARGETRESOLVER_H_
2
#define _KVI_IRCCONNECTIONTARGETRESOLVER_H_
3
//=============================================================================
5
// File : KviIrcConnectionTargetResolver.h
6
// Creation date : Fri 11 May 2004 23:17:42 by Szymon Stefanek
8
// This file is part of the KVIrc IRC client distribution
9
// Copyright (C) 2004-2010 Szymon Stefanek <pragma at kvirc dot net>
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 opinion) any later version.
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.
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.
25
//=============================================================================
27
#include "kvi_settings.h"
28
#include "KviQString.h"
32
class KviConsoleWindow;
34
class KviIrcConnection;
35
class KviIrcConnectionTarget;
39
class KVIRC_API KviIrcConnectionTargetResolver : public QObject
41
friend class KviIrcLink; // upper protocol in the stack
44
KviIrcConnectionTargetResolver(KviIrcConnection * pConnection);
45
~KviIrcConnectionTargetResolver();
47
enum Status { Success, Error };
48
enum State { Idle, Running, Terminated };
50
KviIrcConnection * m_pConnection; // shallow, never null
51
KviIrcConnectionTarget * m_pTarget; // shallow, never null
52
KviConsoleWindow * m_pConsole; // shallow, never null
57
QTimer * m_pStartTimer; // timer used to start the connection
58
KviDnsResolver * m_pProxyDns; // the dns object for the proxy hostnames
59
KviDnsResolver * m_pServerDns; // the dns object for the server hostnames
62
unsigned int m_uReadBufferLen;
63
unsigned int m_uReadPackets;
67
void start(KviIrcConnectionTarget * t);
68
// valid only after the terminated() signal
69
Status status(){ return m_eStatus; };
70
int lastError(){ return m_iLastError; };
71
// causes the resolver to terminate with iLastError == KviError_operationAborted
72
// the terminated() signal is emitted.
75
void asyncStartResolve();
76
void serverLookupTerminated(KviDnsResolver *);
77
void proxyLookupTerminated(KviDnsResolver *);
80
void lookupProxyHostname();
81
void lookupServerHostname();
83
bool validateLocalAddress(const QString &szAddress,QString &szBuffer);
84
void terminate(Status s,int iLastError);
89
#endif //!_KVI_IRCCONNECTIONTARGETRESOLVER_H_