64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2011 Jan Kaluza
|
|
* Licensed under the Simplified BSD license.
|
|
* See Documentation/Licenses/BSD-simplified.txt for more information.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
|
#include <Swiften/Elements/Payload.h>
|
|
|
|
namespace Swift {
|
|
class PubSubItem : public Payload {
|
|
public:
|
|
PubSubItem();
|
|
|
|
void addPayload(boost::shared_ptr<Payload> payload) {
|
|
payloads.push_back(payload);
|
|
}
|
|
|
|
const std::vector<boost::shared_ptr<Payload> > getPayloads() const {
|
|
return payloads;
|
|
}
|
|
|
|
template<typename T>
|
|
const std::vector<boost::shared_ptr<T> > getPayloads() const {
|
|
std::vector<boost::shared_ptr<T> > matched_payloads;
|
|
for (std::vector<boost::shared_ptr<Payload> >::const_iterator i = payloads.begin(); i != payloads.end(); ++i) {
|
|
boost::shared_ptr<T> result = boost::dynamic_pointer_cast<T>(*i);
|
|
if (result) {
|
|
matched_payloads.push_back(result);
|
|
}
|
|
}
|
|
|
|
return matched_payloads;
|
|
|
|
}
|
|
|
|
template<typename T>
|
|
const boost::shared_ptr<T> getPayload() const {
|
|
boost::shared_ptr<T> result;
|
|
for (std::vector<boost::shared_ptr<Payload> >::const_iterator i = payloads.begin(); i != payloads.end(); ++i) {
|
|
result = boost::dynamic_pointer_cast<T>(*i);
|
|
if (result) {
|
|
return result;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
const std::string& getId() const { return id; }
|
|
|
|
void setId(const std::string& id) {
|
|
this->id = id;
|
|
}
|
|
|
|
private:
|
|
std::vector<boost::shared_ptr<Payload> > payloads;
|
|
std::string id;
|
|
};
|
|
}
|