1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Refine names.

This commit is contained in:
winlin 2024-09-09 11:12:28 +08:00
parent 62c280cbb3
commit 79161b91f0
6 changed files with 64 additions and 47 deletions

View file

@ -16,26 +16,28 @@ import (
"srs-proxy/logger"
)
type httpAPI struct {
// srsHTTPAPIServer is the proxy for SRS HTTP API, to proxy the WebRTC HTTP API like WHIP and WHEP,
// to proxy other HTTP API of SRS like the streams and clients, etc.
type srsHTTPAPIServer struct {
// The underlayer HTTP server.
server *http.Server
// The WebRTC server.
rtc *rtcServer
rtc *srsWebRTCServer
// The gracefully quit timeout, wait server to quit.
gracefulQuitTimeout time.Duration
// The wait group for all goroutines.
wg sync.WaitGroup
}
func NewHttpAPI(opts ...func(*httpAPI)) *httpAPI {
v := &httpAPI{}
func NewSRSHTTPAPIServer(opts ...func(*srsHTTPAPIServer)) *srsHTTPAPIServer {
v := &srsHTTPAPIServer{}
for _, opt := range opts {
opt(v)
}
return v
}
func (v *httpAPI) Close() error {
func (v *srsHTTPAPIServer) Close() error {
ctx, cancel := context.WithTimeout(context.Background(), v.gracefulQuitTimeout)
defer cancel()
v.server.Shutdown(ctx)
@ -44,7 +46,7 @@ func (v *httpAPI) Close() error {
return nil
}
func (v *httpAPI) Run(ctx context.Context) error {
func (v *srsHTTPAPIServer) Run(ctx context.Context) error {
// Parse address to listen.
addr := envHttpAPI()
if !strings.Contains(addr, ":") {
@ -111,6 +113,9 @@ func (v *httpAPI) Run(ctx context.Context) error {
return nil
}
// systemAPI is the system HTTP API of the proxy server, for SRS media server to register the service
// to proxy server. It also provides some other system APIs like the status of proxy server, like exporter
// for Prometheus metrics.
type systemAPI struct {
// The underlayer HTTP server.
server *http.Server

View file

@ -19,7 +19,10 @@ import (
"srs-proxy/logger"
)
type httpServer struct {
// srsHTTPStreamServer is the proxy server for SRS HTTP stream server, for HTTP-FLV, HTTP-TS,
// HLS, etc. The proxy server will figure out which SRS origin server to proxy to, then proxy
// the request to the origin server.
type srsHTTPStreamServer struct {
// The underlayer HTTP server.
server *http.Server
// The gracefully quit timeout, wait server to quit.
@ -28,15 +31,15 @@ type httpServer struct {
wg stdSync.WaitGroup
}
func NewHttpServer(opts ...func(*httpServer)) *httpServer {
v := &httpServer{}
func NewSRSHTTPStreamServer(opts ...func(*srsHTTPStreamServer)) *srsHTTPStreamServer {
v := &srsHTTPStreamServer{}
for _, opt := range opts {
opt(v)
}
return v
}
func (v *httpServer) Close() error {
func (v *srsHTTPStreamServer) Close() error {
ctx, cancel := context.WithTimeout(context.Background(), v.gracefulQuitTimeout)
defer cancel()
v.server.Shutdown(ctx)
@ -45,7 +48,7 @@ func (v *httpServer) Close() error {
return nil
}
func (v *httpServer) Run(ctx context.Context) error {
func (v *srsHTTPStreamServer) Run(ctx context.Context) error {
// Parse address to listen.
addr := envHttpServer()
if !strings.Contains(addr, ":") {

View file

@ -68,32 +68,32 @@ func doMain(ctx context.Context) error {
}
// Start the RTMP server.
rtmpServer := NewRtmpServer()
defer rtmpServer.Close()
if err := rtmpServer.Run(ctx); err != nil {
srsRTMPServer := NewSRSRTMPServer()
defer srsRTMPServer.Close()
if err := srsRTMPServer.Run(ctx); err != nil {
return errors.Wrapf(err, "rtmp server")
}
// Start the WebRTC server.
rtcServer := newRTCServer()
defer rtcServer.Close()
if err := rtcServer.Run(ctx); err != nil {
srsWebRTCServer := NewSRSWebRTCServer()
defer srsWebRTCServer.Close()
if err := srsWebRTCServer.Run(ctx); err != nil {
return errors.Wrapf(err, "rtc server")
}
// Start the HTTP API server.
httpAPI := NewHttpAPI(func(server *httpAPI) {
server.gracefulQuitTimeout, server.rtc = gracefulQuitTimeout, rtcServer
srsHTTPAPIServer := NewSRSHTTPAPIServer(func(server *srsHTTPAPIServer) {
server.gracefulQuitTimeout, server.rtc = gracefulQuitTimeout, srsWebRTCServer
})
defer httpAPI.Close()
if err := httpAPI.Run(ctx); err != nil {
defer srsHTTPAPIServer.Close()
if err := srsHTTPAPIServer.Run(ctx); err != nil {
return errors.Wrapf(err, "http api server")
}
// Start the SRT server.
srtServer := newSRTServer()
defer srtServer.Close()
if err := srtServer.Run(ctx); err != nil {
srsSRTServer := NewSRSSRTServer()
defer srsSRTServer.Close()
if err := srsSRTServer.Run(ctx); err != nil {
return errors.Wrapf(err, "srt server")
}
@ -107,11 +107,11 @@ func doMain(ctx context.Context) error {
}
// Start the HTTP web server.
httpServer := NewHttpServer(func(server *httpServer) {
srsHTTPStreamServer := NewSRSHTTPStreamServer(func(server *srsHTTPStreamServer) {
server.gracefulQuitTimeout = gracefulQuitTimeout
})
defer httpServer.Close()
if err := httpServer.Run(ctx); err != nil {
defer srsHTTPStreamServer.Close()
if err := srsHTTPStreamServer.Run(ctx); err != nil {
return errors.Wrapf(err, "http server")
}

View file

@ -19,7 +19,10 @@ import (
"srs-proxy/sync"
)
type rtcServer struct {
// srsWebRTCServer is the proxy for SRS WebRTC server via WHIP or WHEP protocol. It will figure out
// which backend server to proxy to. It will also replace the UDP port to the proxy server's in the
// SDP answer.
type srsWebRTCServer struct {
// The UDP listener for WebRTC server.
listener *net.UDPConn
@ -35,15 +38,15 @@ type rtcServer struct {
wg stdSync.WaitGroup
}
func newRTCServer(opts ...func(*rtcServer)) *rtcServer {
v := &rtcServer{}
func NewSRSWebRTCServer(opts ...func(*srsWebRTCServer)) *srsWebRTCServer {
v := &srsWebRTCServer{}
for _, opt := range opts {
opt(v)
}
return v
}
func (v *rtcServer) Close() error {
func (v *srsWebRTCServer) Close() error {
if v.listener != nil {
_ = v.listener.Close()
}
@ -52,7 +55,7 @@ func (v *rtcServer) Close() error {
return nil
}
func (v *rtcServer) HandleApiForWHIP(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
func (v *srsWebRTCServer) HandleApiForWHIP(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
defer r.Body.Close()
ctx = logger.WithContext(ctx)
@ -89,7 +92,7 @@ func (v *rtcServer) HandleApiForWHIP(ctx context.Context, w http.ResponseWriter,
return nil
}
func (v *rtcServer) HandleApiForWHEP(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
func (v *srsWebRTCServer) HandleApiForWHEP(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
defer r.Body.Close()
ctx = logger.WithContext(ctx)
@ -126,7 +129,7 @@ func (v *rtcServer) HandleApiForWHEP(ctx context.Context, w http.ResponseWriter,
return nil
}
func (v *rtcServer) proxyApiToBackend(
func (v *srsWebRTCServer) proxyApiToBackend(
ctx context.Context, w http.ResponseWriter, r *http.Request, backend *SRSServer,
remoteSDPOffer string, streamURL string,
) error {
@ -226,7 +229,7 @@ func (v *rtcServer) proxyApiToBackend(
return nil
}
func (v *rtcServer) Run(ctx context.Context) error {
func (v *srsWebRTCServer) Run(ctx context.Context) error {
// Parse address to listen.
endpoint := envWebRTCServer()
if !strings.Contains(endpoint, ":") {
@ -268,7 +271,7 @@ func (v *rtcServer) Run(ctx context.Context) error {
return nil
}
func (v *rtcServer) handleClientUDP(ctx context.Context, addr *net.UDPAddr, data []byte) error {
func (v *srsWebRTCServer) handleClientUDP(ctx context.Context, addr *net.UDPAddr, data []byte) error {
var connection *RTCConnection
// If STUN binding request, parse the ufrag and identify the connection.

View file

@ -18,7 +18,10 @@ import (
"srs-proxy/rtmp"
)
type rtmpServer struct {
// srsRTMPServer is the proxy for SRS RTMP server, to proxy the RTMP stream to backend SRS
// server. It will figure out the backend server to proxy to. Unlike the edge server, it will
// not cache the stream, but just proxy the stream to backend.
type srsRTMPServer struct {
// The TCP listener for RTMP server.
listener *net.TCPListener
// The random number generator.
@ -27,8 +30,8 @@ type rtmpServer struct {
wg sync.WaitGroup
}
func NewRtmpServer(opts ...func(*rtmpServer)) *rtmpServer {
v := &rtmpServer{
func NewSRSRTMPServer(opts ...func(*srsRTMPServer)) *srsRTMPServer {
v := &srsRTMPServer{
rd: rand.New(rand.NewSource(time.Now().UnixNano())),
}
for _, opt := range opts {
@ -37,7 +40,7 @@ func NewRtmpServer(opts ...func(*rtmpServer)) *rtmpServer {
return v
}
func (v *rtmpServer) Close() error {
func (v *srsRTMPServer) Close() error {
if v.listener != nil {
v.listener.Close()
}
@ -46,7 +49,7 @@ func (v *rtmpServer) Close() error {
return nil
}
func (v *rtmpServer) Run(ctx context.Context) error {
func (v *srsRTMPServer) Run(ctx context.Context) error {
endpoint := envRtmpServer()
if !strings.Contains(endpoint, ":") {
endpoint = ":" + endpoint

View file

@ -18,7 +18,10 @@ import (
"srs-proxy/sync"
)
type srtServer struct {
// srsSRTServer is the proxy for SRS server via SRT. It will figure out which backend server to
// proxy to. It only parses the SRT handshake messages, parses the stream id, and proxy to the
// backend server.
type srsSRTServer struct {
// The UDP listener for SRT server.
listener *net.UDPConn
@ -31,8 +34,8 @@ type srtServer struct {
wg stdSync.WaitGroup
}
func newSRTServer(opts ...func(*srtServer)) *srtServer {
v := &srtServer{
func NewSRSSRTServer(opts ...func(*srsSRTServer)) *srsSRTServer {
v := &srsSRTServer{
start: time.Now(),
}
@ -42,7 +45,7 @@ func newSRTServer(opts ...func(*srtServer)) *srtServer {
return v
}
func (v *srtServer) Close() error {
func (v *srsSRTServer) Close() error {
if v.listener != nil {
v.listener.Close()
}
@ -51,7 +54,7 @@ func (v *srtServer) Close() error {
return nil
}
func (v *srtServer) Run(ctx context.Context) error {
func (v *srsSRTServer) Run(ctx context.Context) error {
// Parse address to listen.
endpoint := envSRTServer()
if !strings.Contains(endpoint, ":") {
@ -93,7 +96,7 @@ func (v *srtServer) Run(ctx context.Context) error {
return nil
}
func (v *srtServer) handleClientUDP(ctx context.Context, addr *net.UDPAddr, data []byte) error {
func (v *srsSRTServer) handleClientUDP(ctx context.Context, addr *net.UDPAddr, data []byte) error {
socketID := srtParseSocketID(data)
var pkt *SRTHandshakePacket