diff options
author | Tobias Markmann <tm@ayena.de> | 2016-01-12 17:23:05 (GMT) |
---|---|---|
committer | Kevin Smith <kevin.smith@isode.com> | 2016-02-02 11:33:06 (GMT) |
commit | 1b9ccc1fef6104eaf951153ddccdc6bb15899e9a (patch) | |
tree | 428232448e9846265605820db6f380a5b98c018a /Swiften/Elements/Stanza.h | |
parent | 3afd061b713ce5fff604dee62dec8410a1de6a9c (diff) | |
download | swift-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/Stanza.h')
-rw-r--r-- | Swiften/Elements/Stanza.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Swiften/Elements/Stanza.h b/Swiften/Elements/Stanza.h index 41df894..8da6280 100644 --- a/Swiften/Elements/Stanza.h +++ b/Swiften/Elements/Stanza.h @@ -1,94 +1,96 @@ /* - * Copyright (c) 2010-2014 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once -#include <vector> #include <string> -#include <boost/shared_ptr.hpp> -#include <boost/optional/optional_fwd.hpp> +#include <vector> + #include <boost/date_time/posix_time/ptime.hpp> +#include <boost/optional/optional_fwd.hpp> +#include <boost/shared_ptr.hpp> #include <Swiften/Base/API.h> #include <Swiften/Elements/ToplevelElement.h> #include <Swiften/JID/JID.h> namespace Swift { class Payload; class SWIFTEN_API Stanza : public ToplevelElement { public: typedef boost::shared_ptr<Stanza> ref; protected: Stanza(); public: virtual ~Stanza(); SWIFTEN_DEFAULT_COPY_CONSTRUCTOR(Stanza) template<typename T> boost::shared_ptr<T> getPayload() const { for (size_t i = 0; i < payloads_.size(); ++i) { boost::shared_ptr<T> result(boost::dynamic_pointer_cast<T>(payloads_[i])); if (result) { return result; } } return boost::shared_ptr<T>(); } template<typename T> std::vector< boost::shared_ptr<T> > getPayloads() const { std::vector< boost::shared_ptr<T> > results; for (size_t i = 0; i < payloads_.size(); ++i) { boost::shared_ptr<T> result(boost::dynamic_pointer_cast<T>(payloads_[i])); if (result) { results.push_back(result); } } return results; } const std::vector< boost::shared_ptr<Payload> >& getPayloads() const { return payloads_; } void addPayload(boost::shared_ptr<Payload> payload) { payloads_.push_back(payload); } template<typename InputIterator> void addPayloads(InputIterator begin, InputIterator end) { payloads_.insert(payloads_.end(), begin, end); } void updatePayload(boost::shared_ptr<Payload> payload); + void removePayloadOfSameType(boost::shared_ptr<Payload>); boost::shared_ptr<Payload> getPayloadOfSameType(boost::shared_ptr<Payload>) const; const JID& getFrom() const { return from_; } void setFrom(const JID& from) { from_ = from; } const JID& getTo() const { return to_; } void setTo(const JID& to) { to_ = to; } const std::string& getID() const { return id_; } void setID(const std::string& id) { id_ = id; } boost::optional<boost::posix_time::ptime> getTimestamp() const; // Falls back to any timestamp if no specific timestamp for the given JID is found. boost::optional<boost::posix_time::ptime> getTimestampFrom(const JID& jid) const; private: std::string id_; JID from_; JID to_; std::vector< boost::shared_ptr<Payload> > payloads_; }; } |