summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2016-01-12 17:23:05 (GMT)
committerKevin Smith <kevin.smith@isode.com>2016-02-02 11:33:06 (GMT)
commit1b9ccc1fef6104eaf951153ddccdc6bb15899e9a (patch)
tree428232448e9846265605820db6f380a5b98c018a /Swiften/Elements/Message.h
parent3afd061b713ce5fff604dee62dec8410a1de6a9c (diff)
downloadswift-1b9ccc1fef6104eaf951153ddccdc6bb15899e9a.zip
swift-1b9ccc1fef6104eaf951153ddccdc6bb15899e9a.tar.bz2
Change stanza body to boost::optional<std::string> type
Changed MUCController to only handle message stanzas as subject change if <subject/> is present and neither <body/> nor <thread/> is present in the message stanza. Test-Information: Added unit tests verifying behavior described in XEP-0045 section 8.1. Unit tests pass on OS X 10.11.2. Change-Id: I1d22272da1675176be131ab360b214a98f20533f
Diffstat (limited to 'Swiften/Elements/Message.h')
-rw-r--r--Swiften/Elements/Message.h29
1 files changed, 20 insertions, 9 deletions
diff --git a/Swiften/Elements/Message.h b/Swiften/Elements/Message.h
index f6c16e4..0f0d380 100644
--- a/Swiften/Elements/Message.h
+++ b/Swiften/Elements/Message.h
@@ -1,22 +1,23 @@
/*
- * Copyright (c) 2010-2015 Isode Limited.
+ * Copyright (c) 2010-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
+#include <string>
+
#include <boost/optional.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/smart_ptr/make_shared.hpp>
-#include <string>
#include <Swiften/Base/API.h>
#include <Swiften/Elements/Body.h>
-#include <Swiften/Elements/Subject.h>
#include <Swiften/Elements/ErrorPayload.h>
-#include <Swiften/Elements/Stanza.h>
#include <Swiften/Elements/Replace.h>
+#include <Swiften/Elements/Stanza.h>
+#include <Swiften/Elements/Subject.h>
namespace Swift {
class SWIFTEN_API Message : public Stanza {
@@ -45,16 +46,26 @@ namespace Swift {
return static_cast<bool>(getPayload<Subject>());
}
- std::string getBody() const {
+ boost::optional<std::string> getBody() const {
boost::shared_ptr<Body> body(getPayload<Body>());
+ boost::optional<std::string> bodyData;
if (body) {
- return body->getText();
+ bodyData = body->getText();
}
- return "";
+ return bodyData;
+ }
+
+ void setBody(const std::string& body) {
+ setBody(boost::optional<std::string>(body));
}
- void setBody(const std::string& body) {
- updatePayload(boost::make_shared<Body>(body));
+ void setBody(const boost::optional<std::string>& body) {
+ if (body) {
+ updatePayload(boost::make_shared<Body>(body.get()));
+ }
+ else {
+ removePayloadOfSameType(boost::make_shared<Body>());
+ }
}
bool isError() {