summary refs log tree commit diff
path: root/src/WebRTCSession.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/WebRTCSession.h')
-rw-r--r--src/WebRTCSession.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/WebRTCSession.h b/src/WebRTCSession.h

index fffefb25..42db204d 100644 --- a/src/WebRTCSession.h +++ b/src/WebRTCSession.h
@@ -14,6 +14,15 @@ class WebRTCSession : public QObject Q_OBJECT public: + enum class State { + DISCONNECTED, + INITIATING, + INITIATED, + OFFERSENT, + CONNECTING, + CONNECTED + }; + static WebRTCSession& instance() { static WebRTCSession instance; @@ -27,7 +36,7 @@ public: bool acceptAnswer(const std::string &sdp); void acceptICECandidates(const std::vector<mtx::events::msg::CallCandidates::Candidate>&); - bool isActive() { return pipe_ != nullptr; } + State state() const {return state_;} bool toggleMuteAudioSrc(bool &isMuted); void end(); @@ -37,12 +46,16 @@ public: signals: void offerCreated(const std::string &sdp, const std::vector<mtx::events::msg::CallCandidates::Candidate>&); void answerCreated(const std::string &sdp, const std::vector<mtx::events::msg::CallCandidates::Candidate>&); - void pipelineChanged(bool started); + void stateChanged(WebRTCSession::State); // explicit qualifier necessary for Qt + +private slots: + void setState(State state) {state_ = state;} private: - WebRTCSession() : QObject() {} + WebRTCSession(); bool initialised_ = false; + State state_ = State::DISCONNECTED; GstElement *pipe_ = nullptr; GstElement *webrtc_ = nullptr; std::string stunServer_; @@ -50,7 +63,6 @@ private: bool startPipeline(int opusPayloadType); bool createPipeline(int opusPayloadType); - void addTurnServers(); public: WebRTCSession(WebRTCSession const&) = delete;