22#include "api/peer_connection_interface.h"
29namespace webrtc_streaming {
37 webrtc::PeerConnectionObserver& observer,
38 const std::vector<webrtc::PeerConnectionInterface::IceServer>&
39 per_connection_servers) = 0;
68 rtc::scoped_refptr<webrtc::RtpTransceiverInterface> transceiver) = 0;
71 rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver) = 0;
74 rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) = 0;
85 const std::vector<webrtc::PeerConnectionInterface::IceServer>&
101 webrtc::PeerConnectionInterface::SignalingState new_state)
override;
103 rtc::scoped_refptr<webrtc::MediaStreamInterface> stream)
override;
105 rtc::scoped_refptr<webrtc::MediaStreamInterface> stream)
override;
107 rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel)
override;
110 webrtc::PeerConnectionInterface::IceConnectionState new_state)
override;
112 webrtc::PeerConnectionInterface::PeerConnectionState new_state)
override;
114 webrtc::PeerConnectionInterface::IceGatheringState new_state)
override;
115 void OnIceCandidate(
const webrtc::IceCandidateInterface* candidate)
override;
117 const std::string& url,
int error_code,
118 const std::string& error_text)
override;
120 const std::vector<cricket::Candidate>& candidates)
override;
130 rtc::scoped_refptr<webrtc::RtpTransceiverInterface> transceiver)
override;
132 rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver)
override;
146 const std::vector<webrtc::PeerConnectionInterface::IceServer>&
149 std::unique_ptr<webrtc::SessionDescriptionInterface> offer);
151 std::unique_ptr<webrtc::SessionDescriptionInterface> answer);
153 std::unique_ptr<webrtc::IceCandidateInterface> ice_candidate);
158 rtc::scoped_refptr<webrtc::SetRemoteDescriptionObserverInterface>
173 std::vector<std::unique_ptr<webrtc::IceCandidateInterface>>
Definition: connection_controller.h:59
virtual void OnTrack(rtc::scoped_refptr< webrtc::RtpTransceiverInterface > transceiver)=0
virtual void OnRemoveTrack(rtc::scoped_refptr< webrtc::RtpReceiverInterface > receiver)=0
virtual ~Observer()=default
virtual void OnConnectionStateChange(Result< webrtc::PeerConnectionInterface::PeerConnectionState > status)=0
virtual void OnDataChannel(rtc::scoped_refptr< webrtc::DataChannelInterface > data_channel)=0
Definition: connection_controller.h:47
Observer & observer_
Definition: connection_controller.h:169
rtc::scoped_refptr< webrtc::PeerConnectionInterface > peer_connection_
Definition: connection_controller.h:172
Result< void > OnCreateSDPSuccess(webrtc::SessionDescriptionInterface *desc)
Definition: connection_controller.cpp:197
void OnIceCandidate(const webrtc::IceCandidateInterface *candidate) override
Definition: connection_controller.cpp:407
void OnDataChannel(rtc::scoped_refptr< webrtc::DataChannelInterface > data_channel) override
Definition: connection_controller.cpp:331
Result< void > OnOfferMsg(std::unique_ptr< webrtc::SessionDescriptionInterface > offer)
Definition: connection_controller.cpp:157
void FailConnection(const std::string &message)
Definition: connection_controller.cpp:118
rtc::scoped_refptr< webrtc::SetRemoteDescriptionObserverInterface > ThisAsSetRemoteSDPObserver()
Definition: connection_controller.cpp:271
bool shutting_down_
Definition: connection_controller.h:171
std::condition_variable status_cond_var_
Definition: connection_controller.h:178
void OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) override
Definition: connection_controller.cpp:313
std::vector< std::unique_ptr< webrtc::IceCandidateInterface > > pending_ice_candidates_
Definition: connection_controller.h:174
Result< void > OnAnswerMsg(std::unique_ptr< webrtc::SessionDescriptionInterface > answer)
Definition: connection_controller.cpp:164
void OnSetLocalDescriptionSuccess()
Definition: connection_controller.cpp:221
void OnIceCandidatesRemoved(const std::vector< cricket::Candidate > &candidates) override
Definition: connection_controller.cpp:438
webrtc::CreateSessionDescriptionObserver * ThisAsCreateSDPObserver()
Definition: connection_controller.cpp:261
std::mutex status_mtx_
Definition: connection_controller.h:177
void AddPendingIceCandidates()
Definition: connection_controller.cpp:134
void OnIceCandidateError(const std::string &address, int port, const std::string &url, int error_code, const std::string &error_text) override
Definition: connection_controller.cpp:428
webrtc::SetSessionDescriptionObserver * ThisAsSetSDPObserver()
Definition: connection_controller.cpp:266
void Shutdown()
Definition: connection_controller.h:134
Result< void > HandleSignalingMessageInner(const Json::Value &message)
Definition: connection_controller.cpp:285
void OnIceGatheringChange(webrtc::PeerConnectionInterface::IceGatheringState new_state) override
Definition: connection_controller.cpp:385
void OnTrack(rtc::scoped_refptr< webrtc::RtpTransceiverInterface > transceiver) override
Definition: connection_controller.cpp:451
void OnStandardizedIceConnectionChange(webrtc::PeerConnectionInterface::IceConnectionState new_state) override
Definition: connection_controller.cpp:346
Result< void > RequestOffer(const std::vector< webrtc::PeerConnectionInterface::IceServer > &ice_servers)
Definition: connection_controller.cpp:102
PeerSignalingHandler & sig_handler_
Definition: connection_controller.h:167
Result< void > OnIceCandidateMsg(std::unique_ptr< webrtc::IceCandidateInterface > ice_candidate)
Definition: connection_controller.cpp:171
Result< webrtc::PeerConnectionInterface::PeerConnectionState > connection_status_
Definition: connection_controller.h:180
void OnSetLocalDescriptionFailure(const webrtc::RTCError &error)
Definition: connection_controller.cpp:225
void HandleSignalingMessage(const Json::Value &msg)
Definition: connection_controller.cpp:277
void OnAddStream(rtc::scoped_refptr< webrtc::MediaStreamInterface > stream) override
Definition: connection_controller.cpp:319
void OnRemoveTrack(rtc::scoped_refptr< webrtc::RtpReceiverInterface > receiver) override
Definition: connection_controller.cpp:463
rtc::scoped_refptr< webrtc::PeerConnectionInterface > peer_connection()
Definition: connection_controller.h:95
PeerConnectionBuilder & connection_builder_
Definition: connection_controller.h:168
void OnRenegotiationNeeded() override
Definition: connection_controller.cpp:338
void OnSetRemoteDescriptionComplete(const webrtc::RTCError &error)
Definition: connection_controller.cpp:234
~ConnectionController() override=default
Result< void > OnOfferRequestMsg(const std::vector< webrtc::PeerConnectionInterface::IceServer > &ice_servers)
Definition: connection_controller.cpp:148
void OnConnectionChange(webrtc::PeerConnectionInterface::PeerConnectionState new_state) override
Definition: connection_controller.cpp:379
void OnRemoveStream(rtc::scoped_refptr< webrtc::MediaStreamInterface > stream) override
Definition: connection_controller.cpp:325
void OnCreateSDPFailure(const webrtc::RTCError &error)
Definition: connection_controller.cpp:216
ConnectionController(PeerSignalingHandler &sig_handler, PeerConnectionBuilder &connection_builder, Observer &observer)
Definition: connection_controller.cpp:87
Result< void > OnErrorMsg(const std::string &msg)
Definition: connection_controller.cpp:192
void CreateOffer()
Definition: connection_controller.cpp:96
Definition: connection_controller.h:33
virtual Result< rtc::scoped_refptr< webrtc::PeerConnectionInterface > > Build(webrtc::PeerConnectionObserver &observer, const std::vector< webrtc::PeerConnectionInterface::IceServer > &per_connection_servers)=0
virtual ~PeerConnectionBuilder()=default
Definition: peer_signaling_handler.h:29
#define error(format, args...)
Definition: fec_private.h:201
int status()
Definition: health.cpp:44
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30