Skip to content

Commit 36dfd57

Browse files
committed
add GetConnectionState, GetSignalingState, GetIceConnectionState, GetIceGatheringState methods in cpp part.
1 parent 8d59b30 commit 36dfd57

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

python-webrtc/cpp/src/interfaces/rtc_peer_connection.cpp

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ namespace python_webrtc {
8484
.def_property_readonly("sctp", &RTCPeerConnection::GetSctp)
8585
.def("restartIce", &RTCPeerConnection::RestartIce)
8686
.def("removeTrack", &RTCPeerConnection::RemoveTrack)
87-
.def("close", &RTCPeerConnection::Close);
87+
.def("close", &RTCPeerConnection::Close)
88+
.def_property_readonly("connectionState", &RTCPeerConnection::GetConnectionState);
89+
// TODO bind enums
90+
// .def_property_readonly("signalingState", &RTCPeerConnection::GetSignalingState)
91+
// .def_property_readonly("iceConnectionState", &RTCPeerConnection::GetIceConnectionState)
92+
// .def_property_readonly("iceGatheringState", &RTCPeerConnection::GetIceGatheringState);
8893
}
8994

9095
void RTCPeerConnection::SaveLastSdp(const RTCSessionDescriptionInit &lastSdp) {
@@ -339,6 +344,38 @@ namespace python_webrtc {
339344
}
340345
}
341346

347+
webrtc::PeerConnectionInterface::PeerConnectionState RTCPeerConnection::GetConnectionState() {
348+
if (_jinglePeerConnection) {
349+
return _jinglePeerConnection->peer_connection_state();
350+
} else {
351+
return webrtc::PeerConnectionInterface::PeerConnectionState::kClosed;
352+
}
353+
}
354+
355+
webrtc::PeerConnectionInterface::SignalingState RTCPeerConnection::GetSignalingState() {
356+
if (_jinglePeerConnection) {
357+
return _jinglePeerConnection->signaling_state();
358+
} else {
359+
return webrtc::PeerConnectionInterface::SignalingState::kClosed;
360+
}
361+
}
362+
363+
webrtc::PeerConnectionInterface::IceConnectionState RTCPeerConnection::GetIceConnectionState() {
364+
if (_jinglePeerConnection) {
365+
return _jinglePeerConnection->standardized_ice_connection_state();
366+
} else {
367+
return webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionClosed;
368+
}
369+
}
370+
371+
webrtc::PeerConnectionInterface::IceGatheringState RTCPeerConnection::GetIceGatheringState() {
372+
if (_jinglePeerConnection) {
373+
return _jinglePeerConnection->ice_gathering_state();
374+
} else {
375+
return webrtc::PeerConnectionInterface::IceGatheringState::kIceGatheringComplete;
376+
}
377+
}
378+
342379
void RTCPeerConnection::OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) {
343380
// TODO call python callback
344381
if (new_state == webrtc::PeerConnectionInterface::kClosed) {

python-webrtc/cpp/src/interfaces/rtc_peer_connection.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ namespace python_webrtc {
7676

7777
void Close();
7878

79+
webrtc::PeerConnectionInterface::PeerConnectionState GetConnectionState();
80+
81+
webrtc::PeerConnectionInterface::SignalingState GetSignalingState();
82+
83+
webrtc::PeerConnectionInterface::IceConnectionState GetIceConnectionState();
84+
85+
webrtc::PeerConnectionInterface::IceGatheringState GetIceGatheringState();
86+
7987
// PeerConnectionObserver implementation.
8088
void OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) override;
8189

0 commit comments

Comments
 (0)