diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-10-23 21:08:19 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-11-03 12:17:40 (GMT) |
commit | 9d9fb66aefef85a1c5ad432391014d15011747d1 (patch) | |
tree | 55b1ebe7dcb0108008a28ebf8fee773b27e60547 /Swiften/Presence/PayloadAddingPresenceSender.cpp | |
parent | d509598b0f0edf5e103caedbab8662edc834445e (diff) | |
download | swift-contrib-9d9fb66aefef85a1c5ad432391014d15011747d1.zip swift-contrib-9d9fb66aefef85a1c5ad432391014d15011747d1.tar.bz2 |
Added ClientDiscoManager.
Diffstat (limited to 'Swiften/Presence/PayloadAddingPresenceSender.cpp')
-rw-r--r-- | Swiften/Presence/PayloadAddingPresenceSender.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Swiften/Presence/PayloadAddingPresenceSender.cpp b/Swiften/Presence/PayloadAddingPresenceSender.cpp new file mode 100644 index 0000000..c3d1638 --- /dev/null +++ b/Swiften/Presence/PayloadAddingPresenceSender.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Presence/PayloadAddingPresenceSender.h" + +namespace Swift { + +PayloadAddingPresenceSender::PayloadAddingPresenceSender(PresenceSender* sender) : sender(sender) { +} + +void PayloadAddingPresenceSender::sendPresence(Presence::ref presence) { + if (presence->isAvailable()) { + if (!presence->getTo().isValid()) { + lastSentPresence = presence; + } + } + else { + lastSentPresence.reset(); + } + if (payload) { + Presence::ref sentPresence = Presence::create(presence); + sentPresence->updatePayload(payload); + sender->sendPresence(sentPresence); + } + else { + sender->sendPresence(presence); + } +} + +bool PayloadAddingPresenceSender::isAvailable() const { + return sender->isAvailable(); +} + +void PayloadAddingPresenceSender::setPayload(Payload::ref payload) { + this->payload = payload; + if (lastSentPresence) { + sendPresence(lastSentPresence); + } +} + +} |