Remove global API for settings engine

Limit global API to the basics needed to construct a PeerConnection.
This commit is contained in:
backkem
2019-02-21 19:24:24 +01:00
committed by Michiel De Backker
parent 585f50ef86
commit 4fe2728721
3 changed files with 24 additions and 36 deletions

24
api.go
View File

@@ -1,9 +1,5 @@
package webrtc package webrtc
import (
"time"
)
// API bundles the global funcions of the WebRTC and ORTC API. // API bundles the global funcions of the WebRTC and ORTC API.
// Some of these functions are also exported globally using the // Some of these functions are also exported globally using the
// defaultAPI object. Note that the global version of the API // defaultAPI object. Note that the global version of the API
@@ -53,26 +49,6 @@ func WithSettingEngine(s SettingEngine) func(a *API) {
// in the future. // in the future.
var defaultAPI = NewAPI() var defaultAPI = NewAPI()
// Setting engine API
// SetEphemeralUDPPortRange on the default API.
// See SettingEngine for details.
func SetEphemeralUDPPortRange(portMin, portMax uint16) error {
return defaultAPI.settingEngine.SetEphemeralUDPPortRange(portMin, portMax)
}
// DetachDataChannels on the default API.
// See SettingEngine for details.
func DetachDataChannels() {
defaultAPI.settingEngine.DetachDataChannels()
}
// SetConnectionTimeout on the default API.
// See SettingEngine for details.
func SetConnectionTimeout(connectionTimeout, keepAlive time.Duration) {
defaultAPI.settingEngine.SetConnectionTimeout(connectionTimeout, keepAlive)
}
// Media Engine API // Media Engine API
// RegisterCodec on the default API. // RegisterCodec on the default API.

View File

@@ -14,9 +14,15 @@ const messageSize = 15
func main() { func main() {
// Since this behavior diverges from the WebRTC API it has to be // Since this behavior diverges from the WebRTC API it has to be
// enabled using global switch. // enabled using a settings engine. Mixing both detached and the
// Mixing both behaviors is not supported. // OnMessage DataChannel API is not supported.
webrtc.DetachDataChannels()
// Create a SettingEngine and enable Detach
s := webrtc.SettingEngine{}
s.DetachDataChannels()
// Create an API object with the engine
api := webrtc.NewAPI(webrtc.WithSettingEngine(s))
// Everything below is the pion-WebRTC API! Thanks for using it ❤️. // Everything below is the pion-WebRTC API! Thanks for using it ❤️.
@@ -29,8 +35,8 @@ func main() {
}, },
} }
// Create a new RTCPeerConnection // Create a new RTCPeerConnection using the API object
peerConnection, err := webrtc.NewPeerConnection(config) peerConnection, err := api.NewPeerConnection(config)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -81,7 +87,7 @@ func main() {
// Wait for the answer to be pasted // Wait for the answer to be pasted
answer := webrtc.SessionDescription{} answer := webrtc.SessionDescription{}
signal.Decode(signal.MustReadStdin(), answer) signal.Decode(signal.MustReadStdin(), &answer)
// Apply the answer as the remote description // Apply the answer as the remote description
err = peerConnection.SetRemoteDescription(answer) err = peerConnection.SetRemoteDescription(answer)

View File

@@ -14,9 +14,15 @@ const messageSize = 15
func main() { func main() {
// Since this behavior diverges from the WebRTC API it has to be // Since this behavior diverges from the WebRTC API it has to be
// enabled using global switch. // enabled using a settings engine. Mixing both detached and the
// Mixing both behaviors is not supported. // OnMessage DataChannel API is not supported.
webrtc.DetachDataChannels()
// Create a SettingEngine and enable Detach
s := webrtc.SettingEngine{}
s.DetachDataChannels()
// Create an API object with the engine
api := webrtc.NewAPI(webrtc.WithSettingEngine(s))
// Everything below is the pion-WebRTC API! Thanks for using it ❤️. // Everything below is the pion-WebRTC API! Thanks for using it ❤️.
@@ -29,8 +35,8 @@ func main() {
}, },
} }
// Create a new RTCPeerConnection // Create a new RTCPeerConnection using the API object
peerConnection, err := webrtc.NewPeerConnection(config) peerConnection, err := api.NewPeerConnection(config)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -65,7 +71,7 @@ func main() {
// Wait for the offer to be pasted // Wait for the offer to be pasted
offer := webrtc.SessionDescription{} offer := webrtc.SessionDescription{}
signal.Decode(signal.MustReadStdin(), offer) signal.Decode(signal.MustReadStdin(), &offer)
// Set the remote SessionDescription // Set the remote SessionDescription
err = peerConnection.SetRemoteDescription(offer) err = peerConnection.SetRemoteDescription(offer)