mirror of
https://github.com/aler9/gortsplib
synced 2025-10-27 01:00:32 +08:00
move interleaved frames into dedicated struct
This commit is contained in:
74
connclient.go
Normal file
74
connclient.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package gortsplib
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"net"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ConnClient struct {
|
||||
nconn net.Conn
|
||||
bw *bufio.Writer
|
||||
session string
|
||||
cseqEnabled bool
|
||||
cseq int
|
||||
authProv *authClientProvider
|
||||
}
|
||||
|
||||
func NewConnClient(nconn net.Conn) *ConnClient {
|
||||
return &ConnClient{
|
||||
nconn: nconn,
|
||||
bw: bufio.NewWriterSize(nconn, _INTERLEAVED_FRAME_MAX_SIZE),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ConnClient) NetConn() net.Conn {
|
||||
return c.nconn
|
||||
}
|
||||
|
||||
func (c *ConnClient) SetSession(v string) {
|
||||
c.session = v
|
||||
}
|
||||
|
||||
func (c *ConnClient) EnableCseq() {
|
||||
c.cseqEnabled = true
|
||||
}
|
||||
|
||||
func (c *ConnClient) SetCredentials(user string, pass string, realm string, nonce string) {
|
||||
c.authProv = newAuthClientProvider(user, pass, realm, nonce)
|
||||
}
|
||||
|
||||
func (c *ConnClient) WriteRequest(req *Request) error {
|
||||
if c.session != "" {
|
||||
if req.Header == nil {
|
||||
req.Header = make(Header)
|
||||
}
|
||||
req.Header["Session"] = []string{c.session}
|
||||
}
|
||||
if c.cseqEnabled {
|
||||
if req.Header == nil {
|
||||
req.Header = make(Header)
|
||||
}
|
||||
c.cseq += 1
|
||||
req.Header["CSeq"] = []string{strconv.FormatInt(int64(c.cseq), 10)}
|
||||
}
|
||||
if c.authProv != nil {
|
||||
if req.Header == nil {
|
||||
req.Header = make(Header)
|
||||
}
|
||||
req.Header["Authorization"] = []string{c.authProv.generateHeader(req.Method, req.Url)}
|
||||
}
|
||||
return req.write(c.nconn)
|
||||
}
|
||||
|
||||
func (c *ConnClient) ReadResponse() (*Response, error) {
|
||||
return readResponse(c.nconn)
|
||||
}
|
||||
|
||||
func (c *ConnClient) ReadInterleavedFrame() (*InterleavedFrame, error) {
|
||||
return readInterleavedFrame(c.nconn)
|
||||
}
|
||||
|
||||
func (c *ConnClient) WriteInterleavedFrame(frame *InterleavedFrame) error {
|
||||
return frame.write(c.bw)
|
||||
}
|
||||
Reference in New Issue
Block a user