From de378e0ed56084086b6face87f61b6354c0cb3f9 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Thu, 8 Apr 2021 18:48:39 +0200 Subject: [PATCH] RTMP client: speed up initialization by moving code into the client routine --- internal/clientman/clientman.go | 10 +++++----- internal/clientrtmp/client.go | 4 ++-- internal/serverrtmp/server.go | 11 +++++------ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/internal/clientman/clientman.go b/internal/clientman/clientman.go index 4e973420..9e2f1910 100644 --- a/internal/clientman/clientman.go +++ b/internal/clientman/clientman.go @@ -1,6 +1,7 @@ package clientman import ( + "net" "sync" "time" @@ -11,7 +12,6 @@ import ( "github.com/aler9/rtsp-simple-server/internal/clientrtmp" "github.com/aler9/rtsp-simple-server/internal/clientrtsp" "github.com/aler9/rtsp-simple-server/internal/logger" - "github.com/aler9/rtsp-simple-server/internal/rtmp" "github.com/aler9/rtsp-simple-server/internal/serverrtmp" "github.com/aler9/rtsp-simple-server/internal/serverrtsp" "github.com/aler9/rtsp-simple-server/internal/stats" @@ -126,11 +126,11 @@ func (cm *ClientManager) run() { return make(chan *gortsplib.ServerConn) }() - rtmpAccept := func() chan *rtmp.Conn { + rtmpAccept := func() chan net.Conn { if cm.serverRTMP != nil { return cm.serverRTMP.Accept() } - return make(chan *rtmp.Conn) + return make(chan net.Conn) }() outer: @@ -166,7 +166,7 @@ outer: cm) cm.clients[c] = struct{}{} - case conn := <-rtmpAccept: + case nconn := <-rtmpAccept: c := clientrtmp.New( cm.rtspPort, cm.readTimeout, @@ -176,7 +176,7 @@ outer: cm.runOnConnectRestart, &cm.wg, cm.stats, - conn, + nconn, cm.pathMan, cm) cm.clients[c] = struct{}{} diff --git a/internal/clientrtmp/client.go b/internal/clientrtmp/client.go index eff3d6c3..1ba40c28 100644 --- a/internal/clientrtmp/client.go +++ b/internal/clientrtmp/client.go @@ -105,7 +105,7 @@ func New( runOnConnectRestart bool, wg *sync.WaitGroup, stats *stats.Stats, - conn *rtmp.Conn, + nconn net.Conn, pathMan PathMan, parent Parent) *Client { @@ -118,7 +118,7 @@ func New( runOnConnectRestart: runOnConnectRestart, wg: wg, stats: stats, - conn: conn, + conn: rtmp.NewServerConn(nconn), pathMan: pathMan, parent: parent, terminate: make(chan struct{}), diff --git a/internal/serverrtmp/server.go b/internal/serverrtmp/server.go index ec9f8769..d035d23c 100644 --- a/internal/serverrtmp/server.go +++ b/internal/serverrtmp/server.go @@ -6,7 +6,6 @@ import ( "sync/atomic" "github.com/aler9/rtsp-simple-server/internal/logger" - "github.com/aler9/rtsp-simple-server/internal/rtmp" ) // Parent is implemented by program. @@ -22,7 +21,7 @@ type Server struct { closed uint32 // out - accept chan *rtmp.Conn + accept chan net.Conn done chan struct{} } @@ -41,7 +40,7 @@ func New( s := &Server{ parent: parent, l: l, - accept: make(chan *rtmp.Conn), + accept: make(chan net.Conn), done: make(chan struct{}), } @@ -60,7 +59,7 @@ func (s *Server) log(level logger.Level, format string, args ...interface{}) { func (s *Server) Close() { go func() { for co := range s.accept { - co.NetConn().Close() + co.Close() } }() atomic.StoreUint32(&s.closed, 1) @@ -81,13 +80,13 @@ func (s *Server) run() { continue } - s.accept <- rtmp.NewServerConn(nconn) + s.accept <- nconn } close(s.accept) } // Accept returns a channel to accept incoming connections. -func (s *Server) Accept() chan *rtmp.Conn { +func (s *Server) Accept() chan net.Conn { return s.accept }