KVIrc 5.2.6
Developer APIs
KviIrcConnectionStateData.h
Go to the documentation of this file.
1#ifndef _KVI_IRCCONNECTIONSTATEDATA_H_
2#define _KVI_IRCCONNECTIONSTATEDATA_H_
3//=============================================================================
4//
5// File : KviIrcConnectionStateData.h
6// Creation date : Sat 26 Jun 2004 09:31:52 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 "KviQString.h"
29#include "KviTimeUtils.h"
30
31#include <QStringList>
32
33//
34// This class is used as container for miscellaneous connection state variables
35// that do not have a class for their own.
36// If you need to add some "minor" variable to the connection state then
37// this is the right place for it.
38//
39
41{
42 friend class KviIrcConnection;
43 friend class KviIrcServerParser;
44 friend class KviUserParser;
45
46public:
49
50protected:
51 // The members of this enum must be in the correct
52 // order since the nickname selection algorithm
53 // uses their numeric values for comparisons.
73
78
79 bool m_bInsideInitialCapLs = false; // true if there's a CAP LS request pending
89 bool m_bIgnoreOneYouHaveNotRegisteredError = false; // true if we have sent a CAP LS request followed by a PING which will generate an error (and we need to ignore it)
90 bool m_bInsideInitialCapReq = false; // true if there's a CAP REQ request pending
91 bool m_bInsideAuthenticate = false; // true if there's a AUTHENTICATE request pending
92 bool m_bSentStartTls = false; // the state of STARTTLS protocol
93 bool m_bSentQuit = false; // have we sent the quit message for this connection ?
94 QString m_szCommandToExecAfterConnect; // yes.. this is a special command to execute after connection
95 bool m_bSimulateUnexpectedDisconnect = false; // this is set to true if we have to simulate an unexpected disconnect even if we have sent a normal quit message
96 kvi_time_t m_tLastReceivedChannelWhoReply; // the time that we have received our last channel who reply
97 kvi_time_t m_tLastSentChannelWhoRequest; // the time that we have sent our last channel who request
98 kvi_time_t m_tLastReceivedWhoisReply = 0; // the time that we have received the last whois reply, reset to 0 when we receive an /END OF WHOIS
99 QStringList m_lEnabledCaps; // the CAPs currently enabled
100 bool m_bIdentifyMsgCapabilityEnabled = false; // do we have the msg-identity CAP enabled ?
102public:
106 void setLoginNickNameState(const LoginNickNameState & eLoginNickNameState)
107 {
108 m_eLoginNickNameState = eLoginNickNameState;
109 }
110
115 {
117 }
118
119 const QStringList & enabledCaps() const { return m_lEnabledCaps; }
120 void changeEnabledCapList(const QString & szCapList);
121
126
127 const QString & sentSaslMethod() const { return m_szSentSaslMethod; }
128 void setSentSaslMethod(const QString& szMethod) { m_szSentSaslMethod = szMethod; }
129
130 bool sentStartTls() const { return m_bSentStartTls; }
132
134 void setInsideAuthenticate(bool bInside) { m_bInsideAuthenticate = bInside; }
135
137 void setInsideInitialCapLs(bool bInside) { m_bInsideInitialCapLs = bInside; }
138
140 void setInsideInitialStartTls(bool bInside) { m_bInsideInitialStartTls = bInside; }
141
150
152 void setInsideInitialCapReq(bool bInside) { m_bInsideInitialCapReq = bInside; }
153
154 bool sentQuit() const { return m_bSentQuit; }
155 void setSentQuit() { m_bSentQuit = true; }
156
159
162
165
168
170 void setCommandToExecAfterConnect(const QString & szCmd) { m_szCommandToExecAfterConnect = szCmd; }
171};
172
173#endif
Helper functions for the QString class.
Time management.
#define kvi_time_t
Definition KviTimeUtils.h:43
friend class KviIrcServerParser
Definition KviIrcConnectionStateData.h:43
bool m_bInsideInitialCapLs
Definition KviIrcConnectionStateData.h:79
kvi_time_t lastSentChannelWhoRequest() const
Definition KviIrcConnectionStateData.h:160
bool m_bIgnoreOneYouHaveNotRegisteredError
Definition KviIrcConnectionStateData.h:89
void setLastReceivedWhoisReply(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:164
void setLastSentChannelWhoRequest(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:161
friend class KviIrcConnection
Definition KviIrcConnectionStateData.h:42
bool isInsideInitialCapReq() const
Definition KviIrcConnectionStateData.h:151
kvi_time_t m_tLastSentChannelWhoRequest
Definition KviIrcConnectionStateData.h:97
bool m_bSentStartTls
Definition KviIrcConnectionStateData.h:92
void setSentStartTls()
Definition KviIrcConnectionStateData.h:131
bool sentQuit() const
Definition KviIrcConnectionStateData.h:154
void setLastReceivedChannelWhoReply(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:158
bool m_bSimulateUnexpectedDisconnect
Definition KviIrcConnectionStateData.h:95
const LoginNickNameState & loginNickNameState() const
Definition KviIrcConnectionStateData.h:114
kvi_time_t lastReceivedWhoisReply() const
Definition KviIrcConnectionStateData.h:163
void setIgnoreOneYouHaveNotRegisteredError(bool bIgnore)
Definition KviIrcConnectionStateData.h:142
bool m_bIdentifyMsgCapabilityEnabled
Definition KviIrcConnectionStateData.h:100
QString m_szCommandToExecAfterConnect
Definition KviIrcConnectionStateData.h:94
QStringList m_lEnabledCaps
Definition KviIrcConnectionStateData.h:99
void setSimulateUnexpectedDisconnect(bool bSimulate)
Definition KviIrcConnectionStateData.h:167
void setSentQuit()
Definition KviIrcConnectionStateData.h:155
bool isInsideInitialCapLs() const
Definition KviIrcConnectionStateData.h:136
kvi_time_t lastReceivedChannelWhoReply() const
Definition KviIrcConnectionStateData.h:157
void setInsideInitialCapLs(bool bInside)
Definition KviIrcConnectionStateData.h:137
bool m_bSentQuit
Definition KviIrcConnectionStateData.h:93
const QString & sentSaslMethod() const
Definition KviIrcConnectionStateData.h:127
friend class KviUserParser
Definition KviIrcConnectionStateData.h:44
bool m_bInsideInitialCapReq
Definition KviIrcConnectionStateData.h:90
kvi_time_t m_tLastReceivedChannelWhoReply
Definition KviIrcConnectionStateData.h:96
void setSentSaslMethod(const QString &szMethod)
Definition KviIrcConnectionStateData.h:128
KviIrcConnectionStateData()
Definition KviIrcConnectionStateData.cpp:27
void setInsideInitialStartTls(bool bInside)
Definition KviIrcConnectionStateData.h:140
const QStringList & enabledCaps() const
Definition KviIrcConnectionStateData.h:119
LoginNickNameState
Definition KviIrcConnectionStateData.h:55
@ UsedGlobalNickName4
Definition KviIrcConnectionStateData.h:66
@ UsedAlternativeNetworkSpecificNickName
Definition KviIrcConnectionStateData.h:62
@ UsedRandomNickName2
Definition KviIrcConnectionStateData.h:68
@ UsedRandomNickName4
Definition KviIrcConnectionStateData.h:70
@ UsedRandomNickName1
Definition KviIrcConnectionStateData.h:67
@ UsedAlternativeServerSpecificNickName
Definition KviIrcConnectionStateData.h:60
@ UsedServerSpecificNickName
Definition KviIrcConnectionStateData.h:59
@ UsedConnectionSpecificNickName
Definition KviIrcConnectionStateData.h:56
@ UsedProfileSpecificNickName
Definition KviIrcConnectionStateData.h:57
@ UsedGlobalNickName1
Definition KviIrcConnectionStateData.h:63
@ UsedRandomNickName3
Definition KviIrcConnectionStateData.h:69
@ UsedAlternativeProfileSpecificNickName
Definition KviIrcConnectionStateData.h:58
@ UsedNetworkSpecificNickName
Definition KviIrcConnectionStateData.h:61
@ UsedGlobalNickName2
Definition KviIrcConnectionStateData.h:64
@ UsedGlobalNickName3
Definition KviIrcConnectionStateData.h:65
@ UsedManualNickname
Definition KviIrcConnectionStateData.h:71
bool sentStartTls() const
Definition KviIrcConnectionStateData.h:130
bool ignoreOneYouHaveNotRegisteredError() const
Definition KviIrcConnectionStateData.h:146
LoginNickNameState m_eLoginNickNameState
Definition KviIrcConnectionStateData.h:77
void setLoginNickNameState(const LoginNickNameState &eLoginNickNameState)
Definition KviIrcConnectionStateData.h:106
bool isInsideInitialStartTls() const
Definition KviIrcConnectionStateData.h:139
QString m_szSentSaslMethod
Definition KviIrcConnectionStateData.h:101
void setInsideAuthenticate(bool bInside)
Definition KviIrcConnectionStateData.h:134
const QString & commandToExecAfterConnect() const
Definition KviIrcConnectionStateData.h:169
void setInsideInitialCapReq(bool bInside)
Definition KviIrcConnectionStateData.h:152
void setCommandToExecAfterConnect(const QString &szCmd)
Definition KviIrcConnectionStateData.h:170
bool m_bInsideAuthenticate
Definition KviIrcConnectionStateData.h:91
bool m_bInsideInitialStartTls
Definition KviIrcConnectionStateData.h:88
bool simulateUnexpectedDisconnect() const
Definition KviIrcConnectionStateData.h:166
kvi_time_t m_tLastReceivedWhoisReply
Definition KviIrcConnectionStateData.h:98
bool isInsideAuthenticate() const
Definition KviIrcConnectionStateData.h:133
bool identifyMsgCapabilityEnabled() const
Definition KviIrcConnectionStateData.h:122
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127