KVIrc 5.2.0
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
77 LoginNickNameState m_eLoginNickNameState = UsedConnectionSpecificNickName;
78
79 bool m_bInsideInitialCapLs = false; // true if there's a CAP LS request pending
88 bool m_bInsideInitialStartTls = false;
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 {
116 return m_eLoginNickNameState;
117 }
118
119 const QStringList & enabledCaps() const { return m_lEnabledCaps; }
120 void changeEnabledCapList(const QString & szCapList);
121
123 {
124 return m_bIdentifyMsgCapabilityEnabled;
125 }
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; }
131 void setSentStartTls() { m_bSentStartTls = true; }
132
133 bool isInsideAuthenticate() const { return m_bInsideAuthenticate; }
134 void setInsideAuthenticate(bool bInside) { m_bInsideAuthenticate = bInside; }
135
136 bool isInsideInitialCapLs() const { return m_bInsideInitialCapLs; }
137 void setInsideInitialCapLs(bool bInside) { m_bInsideInitialCapLs = bInside; }
138
139 bool isInsideInitialStartTls() const { return m_bInsideInitialStartTls; }
140 void setInsideInitialStartTls(bool bInside) { m_bInsideInitialStartTls = bInside; }
141
143 {
144 m_bIgnoreOneYouHaveNotRegisteredError = bIgnore;
145 }
147 {
148 return m_bIgnoreOneYouHaveNotRegisteredError;
149 }
150
151 bool isInsideInitialCapReq() const { return m_bInsideInitialCapReq; }
152 void setInsideInitialCapReq(bool bInside) { m_bInsideInitialCapReq = bInside; }
153
154 bool sentQuit() const { return m_bSentQuit; }
155 void setSentQuit() { m_bSentQuit = true; }
156
157 kvi_time_t lastReceivedChannelWhoReply() const { return m_tLastReceivedChannelWhoReply; }
158 void setLastReceivedChannelWhoReply(kvi_time_t tTime) { m_tLastReceivedChannelWhoReply = tTime; }
159
160 kvi_time_t lastSentChannelWhoRequest() const { return m_tLastSentChannelWhoRequest; }
161 void setLastSentChannelWhoRequest(kvi_time_t tTime) { m_tLastSentChannelWhoRequest = tTime; }
162
163 kvi_time_t lastReceivedWhoisReply() const { return m_tLastReceivedWhoisReply; }
164 void setLastReceivedWhoisReply(kvi_time_t tTime) { m_tLastReceivedWhoisReply = tTime; }
165
166 bool simulateUnexpectedDisconnect() const { return m_bSimulateUnexpectedDisconnect; }
167 void setSimulateUnexpectedDisconnect(bool bSimulate) { m_bSimulateUnexpectedDisconnect = bSimulate; }
168
169 const QString & commandToExecAfterConnect() const { return m_szCommandToExecAfterConnect; }
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
Definition KviIrcConnectionStateData.h:41
kvi_time_t lastSentChannelWhoRequest() const
Definition KviIrcConnectionStateData.h:160
void setLastReceivedWhoisReply(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:164
void setLastSentChannelWhoRequest(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:161
bool isInsideInitialCapReq() const
Definition KviIrcConnectionStateData.h:151
kvi_time_t m_tLastSentChannelWhoRequest
Definition KviIrcConnectionStateData.h:97
void setSentStartTls()
Definition KviIrcConnectionStateData.h:131
bool sentQuit() const
Definition KviIrcConnectionStateData.h:154
void setLastReceivedChannelWhoReply(kvi_time_t tTime)
Definition KviIrcConnectionStateData.h:158
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
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
const QString & sentSaslMethod() const
Definition KviIrcConnectionStateData.h:127
kvi_time_t m_tLastReceivedChannelWhoReply
Definition KviIrcConnectionStateData.h:96
void setSentSaslMethod(const QString &szMethod)
Definition KviIrcConnectionStateData.h:128
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
bool sentStartTls() const
Definition KviIrcConnectionStateData.h:130
bool ignoreOneYouHaveNotRegisteredError() const
Definition KviIrcConnectionStateData.h:146
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 simulateUnexpectedDisconnect() const
Definition KviIrcConnectionStateData.h:166
bool isInsideAuthenticate() const
Definition KviIrcConnectionStateData.h:133
bool identifyMsgCapabilityEnabled() const
Definition KviIrcConnectionStateData.h:122
An abstraction of a connection to an IRC server.
Definition KviIrcConnection.h:97
Definition KviIrcServerParser.h:114
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127