mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 06:46:42 +08:00
42 lines
758 B
Go
42 lines
758 B
Go
package gortsplib
|
|
|
|
import (
|
|
"bufio"
|
|
"crypto/tls"
|
|
"net"
|
|
)
|
|
|
|
// Server is a RTSP server.
|
|
type Server struct {
|
|
conf ServerConf
|
|
listener net.Listener
|
|
}
|
|
|
|
// Close closes the server.
|
|
func (s *Server) Close() error {
|
|
return s.listener.Close()
|
|
}
|
|
|
|
// Accept accepts a connection.
|
|
func (s *Server) Accept() (*ServerConn, error) {
|
|
nconn, err := s.listener.Accept()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
conn := func() net.Conn {
|
|
if s.conf.TLSConfig != nil {
|
|
return tls.Server(nconn, s.conf.TLSConfig)
|
|
}
|
|
return nconn
|
|
}()
|
|
|
|
return &ServerConn{
|
|
s: s,
|
|
nconn: nconn,
|
|
br: bufio.NewReaderSize(conn, serverReadBufferSize),
|
|
bw: bufio.NewWriterSize(conn, serverWriteBufferSize),
|
|
terminate: make(chan struct{}),
|
|
}, nil
|
|
}
|