aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2015-10-24 00:19:25 +0200
committerLinus Jahn <lnj@kaidan.im>2018-10-29 21:41:31 +0100
commit5559ed29681d031f36e7a7d011e3ec4bec3635f5 (patch)
treeb639a8c68f1d1255b5528bde34412ffc64a34fb6 /src/base
parent3e2ca3c04a5a681fa97ebabf6f31b301ec9753a0 (diff)
downloadqxmpp-5559ed29681d031f36e7a7d011e3ec4bec3635f5.tar.gz
Implement XEP-0352: Client State Indication
This commit is based on a pull request by fbeutel (GitHub) (see #87) and was rebased and slightly modified by me.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppConstants.cpp2
-rw-r--r--src/base/QXmppConstants_p.h2
-rw-r--r--src/base/QXmppStreamFeatures.cpp15
-rw-r--r--src/base/QXmppStreamFeatures.h9
4 files changed, 27 insertions, 1 deletions
diff --git a/src/base/QXmppConstants.cpp b/src/base/QXmppConstants.cpp
index 7813b144..1ab2c70d 100644
--- a/src/base/QXmppConstants.cpp
+++ b/src/base/QXmppConstants.cpp
@@ -124,3 +124,5 @@ const char* ns_forwarding = "urn:xmpp:forward:0";
const char* ns_mam = "urn:xmpp:mam:1";
// XEP-0333: Chat Markers
const char* ns_chat_markers = "urn:xmpp:chat-markers:0";
+// XEP-0352: Client State Indication
+const char* ns_csi = "urn:xmpp:csi:0";
diff --git a/src/base/QXmppConstants_p.h b/src/base/QXmppConstants_p.h
index 853f8222..cc113e3d 100644
--- a/src/base/QXmppConstants_p.h
+++ b/src/base/QXmppConstants_p.h
@@ -136,5 +136,7 @@ extern const char* ns_forwarding;
extern const char* ns_mam;
// XEP-0333: Char Markers
extern const char* ns_chat_markers;
+// XEP-0352: Client State Indication
+extern const char* ns_csi;
#endif // QXMPPCONSTANTS_H
diff --git a/src/base/QXmppStreamFeatures.cpp b/src/base/QXmppStreamFeatures.cpp
index fd2832dc..b4b51cfc 100644
--- a/src/base/QXmppStreamFeatures.cpp
+++ b/src/base/QXmppStreamFeatures.cpp
@@ -31,7 +31,8 @@ QXmppStreamFeatures::QXmppStreamFeatures()
m_sessionMode(Disabled),
m_nonSaslAuthMode(Disabled),
m_tlsMode(Disabled),
- m_streamManagementMode(Disabled)
+ m_streamManagementMode(Disabled),
+ m_csiMode(Disabled)
{
}
@@ -105,6 +106,16 @@ void QXmppStreamFeatures::setStreamManagementMode(QXmppStreamFeatures::Mode mode
m_streamManagementMode = mode;
}
+QXmppStreamFeatures::Mode QXmppStreamFeatures::clientStateIndicationMode() const
+{
+ return m_csiMode;
+}
+
+void QXmppStreamFeatures::setClientStateIndicationMode(QXmppStreamFeatures::Mode mode)
+{
+ m_csiMode = mode;
+}
+
/// \cond
bool QXmppStreamFeatures::isStreamFeatures(const QDomElement &element)
{
@@ -136,6 +147,7 @@ void QXmppStreamFeatures::parse(const QDomElement &element)
m_nonSaslAuthMode = readFeature(element, "auth", ns_authFeature);
m_tlsMode = readFeature(element, "starttls", ns_tls);
m_streamManagementMode = readFeature(element, "sm", ns_stream_management);
+ m_csiMode = readFeature(element, "csi", ns_csi);
// parse advertised compression methods
QDomElement compression = element.firstChildElement("compression");
@@ -181,6 +193,7 @@ void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const
writeFeature(writer, "auth", ns_authFeature, m_nonSaslAuthMode);
writeFeature(writer, "starttls", ns_tls, m_tlsMode);
writeFeature(writer, "sm", ns_stream_management, m_streamManagementMode);
+ writeFeature(writer, "csi", ns_csi, m_csiMode);
if (!m_compressionMethods.isEmpty())
{
diff --git a/src/base/QXmppStreamFeatures.h b/src/base/QXmppStreamFeatures.h
index 242f748c..20507364 100644
--- a/src/base/QXmppStreamFeatures.h
+++ b/src/base/QXmppStreamFeatures.h
@@ -65,6 +65,14 @@ public:
/// \pa mode The mode to set.
void setStreamManagementMode(Mode mode);
+ /// Returns the mode for XEP-0352: Client State Indication
+ Mode clientStateIndicationMode() const;
+
+ /// Sets the mode for XEP-0352: Client State Indication
+ ///
+ /// \pa mode The mode to set.
+ void setClientStateIndicationMode(Mode mode);
+
/// \cond
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
@@ -78,6 +86,7 @@ private:
Mode m_nonSaslAuthMode;
Mode m_tlsMode;
Mode m_streamManagementMode;
+ Mode m_csiMode;
QStringList m_authMechanisms;
QStringList m_compressionMethods;
};