/* * Copyright (c) 2017 Tarun Gupta * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace Swift { class SWIFTEN_API MIX { public: using ref = std::shared_ptr; public: virtual ~MIX(); /** * Join a MIX channel and subscribe to nodes. */ virtual void joinChannel(const std::unordered_set& nodes) = 0; /** * Join Channel with a set of preferences. */ virtual void joinChannelWithPreferences(const std::unordered_set& nodes, Form::ref form) = 0; /** * Update subscription of nodes. */ virtual void updateSubscription(const std::unordered_set& nodes) = 0; /** * Leave a MIX channel and unsubcribe nodes. */ virtual void leaveChannel() = 0; /** * Request a configuration form for updating preferences. */ virtual void requestPreferencesForm() = 0; /** * Update preferences after requesting preference form. */ virtual void updatePreferences(Form::ref form) = 0; public: boost::signals2::signal onJoinResponse; boost::signals2::signal onLeaveResponse; boost::signals2::signal onSubscriptionUpdateResponse; boost::signals2::signal onPreferencesFormResponse; boost::signals2::signal onPreferencesUpdateResponse; }; }