summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Jingle/JingleSession.h')
-rw-r--r--Swiften/Jingle/JingleSession.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/Swiften/Jingle/JingleSession.h b/Swiften/Jingle/JingleSession.h
new file mode 100644
index 0000000..7ed86c2
--- /dev/null
+++ b/Swiften/Jingle/JingleSession.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Base/boost_bsignals.h>
+#include <Swiften/Base/String.h>
+#include <Swiften/Elements/JinglePayload.h>
+#include <Swiften/Elements/JingleContent.h>
+#include <Swiften/Base/foreach.h>
+
+namespace Swift {
+ class JingleSession {
+ friend class JingleResponder;
+ public:
+ typedef boost::shared_ptr<JingleSession> ref;
+
+ JingleSession(const String& id, const std::vector<JingleContent::ref>& contents);
+ virtual ~JingleSession();
+
+ String getID() const {
+ return id;
+ }
+
+ template<typename T>
+ JingleContent::ref getContentWithDescription() const {
+ foreach (JingleContent::ref content, contents) {
+ if (content->getDescription<T>()) {
+ return content;
+ }
+ }
+ return JingleContent::ref();
+ }
+
+ const std::vector<JingleContent::ref> getContents() const {
+ return contents;
+ }
+
+ void terminate(JinglePayload::Reason::Type reason);
+
+ private:
+ void handleIncomingAction(JinglePayload::ref);
+
+ private:
+ String id;
+ std::vector<JingleContent::ref> contents;
+ };
+}