/* * Copyright (c) 2011-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include #include #include #include namespace Swift { class SWIFTEN_API JingleContentPayload : public Payload { public: typedef std::shared_ptr ref; enum Creator { UnknownCreator, InitiatorCreator, ResponderCreator }; JingleContentPayload() : creator(UnknownCreator) { } /*enum Senders { NoSenders, InitiatorSender, ResponderSender, BothSenders, };*/ Creator getCreator() const { return creator; } void setCreator(Creator creator) { this->creator = creator; } const std::string& getName() const { return name; } void setName(const std::string& name) { this->name = name; } const std::vector& getDescriptions() const { return descriptions; } void addDescription(JingleDescription::ref description) { descriptions.push_back(description); } const std::vector >& getTransports() const { return transports; } void addTransport(std::shared_ptr transport) { transports.push_back(transport); } template std::shared_ptr getDescription() const { for (size_t i = 0; i < descriptions.size(); ++i) { std::shared_ptr result(std::dynamic_pointer_cast(descriptions[i])); if (result) { return result; } } return std::shared_ptr(); } template std::shared_ptr getTransport() const { for (size_t i = 0; i < transports.size(); ++i) { std::shared_ptr result(std::dynamic_pointer_cast(transports[i])); if (result) { return result; } } return std::shared_ptr(); } private: Creator creator; std::string name; //Senders senders; std::vector descriptions; std::vector > transports; }; }