StreamManager refactoring
[platform/core/ml/aitt.git] / modules / webrtc / StreamManager.h
index a613a4a..98677b7 100644 (file)
@@ -27,36 +27,42 @@ namespace AittWebRTCNamespace {
 
 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