summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/MIX/MIXImpl.h')
-rw-r--r--Swiften/MIX/MIXImpl.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/Swiften/MIX/MIXImpl.h b/Swiften/MIX/MIXImpl.h
new file mode 100644
index 0000000..58b33f4
--- /dev/null
+++ b/Swiften/MIX/MIXImpl.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2017 Tarun Gupta
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/MIX/MIX.h>
+
+namespace Swift {
+ class StanzaChannel;
+ class IQRouter;
+
+ class SWIFTEN_API MIXImpl : public MIX {
+ public:
+ using ref = std::shared_ptr<MIXImpl>;
+
+ public:
+ MIXImpl(const JID& ownJID, const JID& channelJID, IQRouter* iqRouter);
+ virtual ~MIXImpl();
+
+ /**
+ * Returns the (bare) JID of the user.
+ */
+ virtual JID getJID() const {
+ return ownJID_.toBare();
+ }
+
+ /**
+ * Returns the JID of MIX channel.
+ */
+ virtual JID getChannelJID() const {
+ return channelJID_;
+ }
+
+ virtual void joinChannel(const std::unordered_set<std::string>& nodes) override;
+
+ virtual void joinChannelWithPreferences(const std::unordered_set<std::string>& nodes, Form::ref form) override;
+
+ virtual void updateSubscription(const std::unordered_set<std::string>& nodes) override;
+
+ virtual void leaveChannel() override;
+
+ virtual void requestPreferencesForm() override;
+
+ virtual void updatePreferences(Form::ref form) override;
+
+ private:
+ void handleJoinResponse(MIXJoin::ref, ErrorPayload::ref);
+ void handleLeaveResponse(MIXLeave::ref, ErrorPayload::ref);
+ void handleUpdateSubscriptionResponse(MIXUpdateSubscription::ref, ErrorPayload::ref);
+ void handlePreferencesFormReceived(MIXUserPreference::ref, ErrorPayload::ref);
+ void handlePreferencesResultReceived(MIXUserPreference::ref /*payload*/, ErrorPayload::ref error);
+
+ private:
+ JID ownJID_;
+ JID channelJID_;
+ IQRouter* iqRouter_;
+ };
+}