class StreamManager {
public:
- using IceCandidateAddedCallback = std::function<void(WebRtcStream &stream)>;
- using StreamReadyCallback = std::function<void(WebRtcStream &stream)>;
+ using IceCandidateAddedCallback = std::function<void(void)>;
using StreamStartCallback = std::function<void(void)>;
using StreamStopCallback = std::function<void(void)>;
- explicit StreamManager(const std::string &topic, const std::string &aitt_id,
- const std::string &thread_id)
- : topic_(topic), aitt_id_(aitt_id), thread_id_(thread_id){};
+ explicit StreamManager(const std::string &topic, const std::string &watching_topic,
+ const std::string &aitt_id, const std::string &thread_id);
virtual ~StreamManager() = default;
- std::string GetTopic(void) const { return topic_; };
- std::string GetClientId(void) const { return aitt_id_; };
- virtual void HandleRemovedClient(const std::string &discovery_id) = 0;
- virtual void HandleMsg(const std::string &discovery_id,
- const std::vector<uint8_t> &message) = 0;
-
- virtual void Start(void) = 0;
- virtual void Stop(void) = 0;
- virtual void SetIceCandidateAddedCallback(IceCandidateAddedCallback cb) = 0;
- virtual void SetStreamReadyCallback(StreamReadyCallback cb) = 0;
- virtual void SetStreamStartCallback(StreamStartCallback cb) = 0;
- virtual void SetStreamStopCallback(StreamStopCallback cb) = 0;
virtual std::vector<uint8_t> GetDiscoveryMessage(void) = 0;
- virtual std::string GetWatchingTopic(void) = 0;
+
+ void Start(void);
+ void Stop(void);
+ void HandleRemovedClient(const std::string &discovery_id);
+ void HandleMsg(const std::string &discovery_id, const std::vector<uint8_t> &message);
+ void SetIceCandidateAddedCallback(IceCandidateAddedCallback cb);
+ void SetStreamStartCallback(StreamStartCallback cb);
+ void SetStreamStopCallback(StreamStopCallback cb);
+ std::string GetTopic(void) const;
+ std::string GetWatchingTopic(void) const;
protected:
std::string topic_;
+ std::string watching_topic_;
// TODO: why dont' we remove below
std::string aitt_id_;
std::string thread_id_;
+ // TODO: What if user copies the module?
+ // Think about that case with destructor
+ std::map<std::string /* Peer Aitt Discovery ID */, WebRtcStream *> streams_;
+ StreamStartCallback stream_start_cb_;
+ StreamStopCallback stream_stop_cb_;
+ IceCandidateAddedCallback ice_candidate_added_cb_;
private:
virtual void SetWebRtcStreamCallbacks(WebRtcStream &stream) = 0;
+ virtual void HandleStreamState(const std::string &discovery_id,
+ const std::vector<uint8_t> &message) = 0;
+ virtual void HandleStreamInfo(const std::string &discovery_id,
+ const std::vector<uint8_t> &message) = 0;
};
} // namespace AittWebRTCNamespace