mirror of
https://github.com/flavioribeiro/donut.git
synced 2025-09-30 21:02:13 +08:00
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/flavioribeiro/donut/internal/entity"
|
|
"github.com/pion/webrtc/v3"
|
|
)
|
|
|
|
func NewTCPICEServer(c *entity.Config) (*net.TCPListener, error) {
|
|
tcpListener, err := net.ListenTCP("tcp", &net.TCPAddr{
|
|
IP: net.IP{0, 0, 0, 0},
|
|
Port: c.TCPICEPort,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return tcpListener, nil
|
|
}
|
|
|
|
func NewUDPICEServer(c *entity.Config) (*net.UDPConn, error) {
|
|
|
|
udpListener, err := net.ListenUDP("udp", &net.UDPAddr{
|
|
IP: net.IP{0, 0, 0, 0},
|
|
Port: c.UDPICEPort,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return udpListener, nil
|
|
}
|
|
|
|
func NewWebRTCSettingsEngine(c *entity.Config, tcpListener *net.TCPListener, udpListener *net.UDPConn) *webrtc.SettingEngine {
|
|
settingEngine := &webrtc.SettingEngine{}
|
|
|
|
settingEngine.SetNAT1To1IPs(c.ICEExternalIPsDNAT, webrtc.ICECandidateTypeHost)
|
|
settingEngine.SetICETCPMux(webrtc.NewICETCPMux(nil, tcpListener, c.ICEReadBufferSize))
|
|
settingEngine.SetICEUDPMux(webrtc.NewICEUDPMux(nil, udpListener))
|
|
|
|
return settingEngine
|
|
}
|
|
|
|
func NewWebRTCMediaEngine() (*webrtc.MediaEngine, error) {
|
|
mediaEngine := &webrtc.MediaEngine{}
|
|
if err := mediaEngine.RegisterDefaultCodecs(); err != nil {
|
|
return nil, err
|
|
}
|
|
return mediaEngine, nil
|
|
}
|