server: use contexts instead of arguments

This commit is contained in:
aler9
2021-03-16 21:38:04 +01:00
parent b3a3121350
commit 1fc6c9e661
7 changed files with 162 additions and 88 deletions

View File

@@ -8,7 +8,6 @@ import (
"github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
)
// This example shows how to
@@ -28,7 +27,7 @@ func handleConn(conn *gortsplib.ServerConn) {
log.Printf("client connected")
// called after receiving a DESCRIBE request.
onDescribe := func(req *base.Request) (*base.Response, []byte, error) {
onDescribe := func(ctx *gortsplib.ServerConnDescribeCtx) (*base.Response, []byte, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -45,7 +44,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving an ANNOUNCE request.
onAnnounce := func(req *base.Request, tracks gortsplib.Tracks) (*base.Response, error) {
onAnnounce := func(ctx *gortsplib.ServerConnAnnounceCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -56,7 +55,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
publisher = conn
sdp = tracks.Write()
sdp = ctx.Tracks.Write()
return &base.Response{
StatusCode: base.StatusOK,
@@ -67,7 +66,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a SETUP request.
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *gortsplib.ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
Header: base.Header{
@@ -77,7 +76,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a PLAY request.
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *gortsplib.ServerConnPlayCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -92,7 +91,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a RECORD request.
onRecord := func(req *base.Request) (*base.Response, error) {
onRecord := func(ctx *gortsplib.ServerConnRecordCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()

View File

@@ -7,7 +7,6 @@ import (
"github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
)
// This example shows how to
@@ -27,7 +26,7 @@ func handleConn(conn *gortsplib.ServerConn) {
log.Printf("client connected")
// called after receiving a DESCRIBE request.
onDescribe := func(req *base.Request) (*base.Response, []byte, error) {
onDescribe := func(ctx *gortsplib.ServerConnDescribeCtx) (*base.Response, []byte, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -44,7 +43,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving an ANNOUNCE request.
onAnnounce := func(req *base.Request, tracks gortsplib.Tracks) (*base.Response, error) {
onAnnounce := func(ctx *gortsplib.ServerConnAnnounceCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -55,7 +54,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
publisher = conn
sdp = tracks.Write()
sdp = ctx.Tracks.Write()
return &base.Response{
StatusCode: base.StatusOK,
@@ -66,7 +65,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a SETUP request.
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *gortsplib.ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
Header: base.Header{
@@ -76,7 +75,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a PLAY request.
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *gortsplib.ServerConnPlayCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -91,7 +90,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a RECORD request.
onRecord := func(req *base.Request) (*base.Response, error) {
onRecord := func(ctx *gortsplib.ServerConnRecordCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()

View File

@@ -7,7 +7,6 @@ import (
"github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
)
// This example shows how to
@@ -27,7 +26,7 @@ func handleConn(conn *gortsplib.ServerConn) {
log.Printf("client connected")
// called after receiving a DESCRIBE request.
onDescribe := func(req *base.Request) (*base.Response, []byte, error) {
onDescribe := func(ctx *gortsplib.ServerConnDescribeCtx) (*base.Response, []byte, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -44,7 +43,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving an ANNOUNCE request.
onAnnounce := func(req *base.Request, tracks gortsplib.Tracks) (*base.Response, error) {
onAnnounce := func(ctx *gortsplib.ServerConnAnnounceCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -55,7 +54,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
publisher = conn
sdp = tracks.Write()
sdp = ctx.Tracks.Write()
return &base.Response{
StatusCode: base.StatusOK,
@@ -66,7 +65,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a SETUP request.
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *gortsplib.ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
Header: base.Header{
@@ -76,7 +75,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a PLAY request.
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *gortsplib.ServerConnPlayCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()
@@ -91,7 +90,7 @@ func handleConn(conn *gortsplib.ServerConn) {
}
// called after receiving a RECORD request.
onRecord := func(req *base.Request) (*base.Response, error) {
onRecord := func(ctx *gortsplib.ServerConnRecordCtx) (*base.Response, error) {
mutex.Lock()
defer mutex.Unlock()

View File

@@ -132,6 +132,60 @@ type ServerConnAnnouncedTrack struct {
udpLastFrameTime *int64
}
// ServerConnOptionsCtx is the context of a OPTIONS request.
type ServerConnOptionsCtx struct {
Req *base.Request
}
// ServerConnDescribeCtx is the context of a DESCRIBE request.
type ServerConnDescribeCtx struct {
Req *base.Request
}
// ServerConnAnnounceCtx is the context of a ANNOUNCE request.
type ServerConnAnnounceCtx struct {
Req *base.Request
Tracks Tracks
}
// ServerConnSetupCtx is the context of a OPTIONS request.
type ServerConnSetupCtx struct {
Req *base.Request
Transport *headers.Transport
Path string
TrackID int
}
// ServerConnPlayCtx is the context of a PLAY request.
type ServerConnPlayCtx struct {
Req *base.Request
}
// ServerConnRecordCtx is the context of a RECORD request.
type ServerConnRecordCtx struct {
Req *base.Request
}
// ServerConnPauseCtx is the context of a PAUSE request.
type ServerConnPauseCtx struct {
Req *base.Request
}
// ServerConnGetParameterCtx is the context of a GET_PARAMETER request.
type ServerConnGetParameterCtx struct {
Req *base.Request
}
// ServerConnSetParameterCtx is the context of a SET_PARAMETER request.
type ServerConnSetParameterCtx struct {
Req *base.Request
}
// ServerConnTeardownCtx is the context of a TEARDOWN request.
type ServerConnTeardownCtx struct {
Req *base.Request
}
// ServerConnReadHandlers allows to set the handlers required by ServerConn.Read.
// all fields are optional.
type ServerConnReadHandlers struct {
@@ -143,37 +197,37 @@ type ServerConnReadHandlers struct {
// called after receiving a OPTIONS request.
// if nil, it is generated automatically.
OnOptions func(req *base.Request) (*base.Response, error)
OnOptions func(ctx *ServerConnOptionsCtx) (*base.Response, error)
// called after receiving a DESCRIBE request.
// the 2nd return value is a SDP, that is inserted into the response.
OnDescribe func(req *base.Request) (*base.Response, []byte, error)
OnDescribe func(ctx *ServerConnDescribeCtx) (*base.Response, []byte, error)
// called after receiving an ANNOUNCE request.
OnAnnounce func(req *base.Request, tracks Tracks) (*base.Response, error)
OnAnnounce func(ctx *ServerConnAnnounceCtx) (*base.Response, error)
// called after receiving a SETUP request.
OnSetup func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error)
OnSetup func(ctx *ServerConnSetupCtx) (*base.Response, error)
// called after receiving a PLAY request.
OnPlay func(req *base.Request) (*base.Response, error)
OnPlay func(ctx *ServerConnPlayCtx) (*base.Response, error)
// called after receiving a RECORD request.
OnRecord func(req *base.Request) (*base.Response, error)
OnRecord func(ctx *ServerConnRecordCtx) (*base.Response, error)
// called after receiving a PAUSE request.
OnPause func(req *base.Request) (*base.Response, error)
OnPause func(ctx *ServerConnPauseCtx) (*base.Response, error)
// called after receiving a GET_PARAMETER request.
// if nil, it is generated automatically.
OnGetParameter func(req *base.Request) (*base.Response, error)
OnGetParameter func(ctx *ServerConnGetParameterCtx) (*base.Response, error)
// called after receiving a SET_PARAMETER request.
OnSetParameter func(req *base.Request) (*base.Response, error)
OnSetParameter func(ctx *ServerConnSetParameterCtx) (*base.Response, error)
// called after receiving a TEARDOWN request.
// if nil, it is generated automatically.
OnTeardown func(req *base.Request) (*base.Response, error)
OnTeardown func(ctx *ServerConnTeardownCtx) (*base.Response, error)
// called after receiving a frame.
OnFrame func(trackID int, streamType StreamType, payload []byte)
@@ -399,7 +453,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
switch req.Method {
case base.Options:
if sc.readHandlers.OnOptions != nil {
return sc.readHandlers.OnOptions(req)
return sc.readHandlers.OnOptions(&ServerConnOptionsCtx{
Req: req,
})
}
var methods []string
@@ -445,7 +501,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}, err
}
res, sdp, err := sc.readHandlers.OnDescribe(req)
res, sdp, err := sc.readHandlers.OnDescribe(&ServerConnDescribeCtx{
Req: req,
})
if res.StatusCode == base.StatusOK && sdp != nil {
if res.Header == nil {
@@ -527,7 +585,10 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}
}
res, err := sc.readHandlers.OnAnnounce(req, tracks)
res, err := sc.readHandlers.OnAnnounce(&ServerConnAnnounceCtx{
Req: req,
Tracks: tracks,
})
if res.StatusCode == base.StatusOK {
sc.state = ServerConnStatePreRecord
@@ -640,7 +701,12 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}, fmt.Errorf("can't setup tracks with different protocols")
}
res, err := sc.readHandlers.OnSetup(req, th, path, trackID)
res, err := sc.readHandlers.OnSetup(&ServerConnSetupCtx{
Req: req,
Transport: th,
Path: path,
TrackID: trackID,
})
if res.StatusCode == base.StatusOK {
sc.setupProtocol = &th.Protocol
@@ -721,7 +787,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}, fmt.Errorf("no tracks have been setup")
}
res, err := sc.readHandlers.OnPlay(req)
res, err := sc.readHandlers.OnPlay(&ServerConnPlayCtx{
Req: req,
})
if res.StatusCode == base.StatusOK && sc.state != ServerConnStatePlay {
sc.state = ServerConnStatePlay
@@ -754,7 +822,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}, fmt.Errorf("not all announced tracks have been setup")
}
res, err := sc.readHandlers.OnRecord(req)
res, err := sc.readHandlers.OnRecord(&ServerConnRecordCtx{
Req: req,
})
if res.StatusCode == base.StatusOK {
sc.state = ServerConnStateRecord
@@ -778,7 +848,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
}, err
}
res, err := sc.readHandlers.OnPause(req)
res, err := sc.readHandlers.OnPause(&ServerConnPauseCtx{
Req: req,
})
if res.StatusCode == base.StatusOK {
switch sc.state {
@@ -797,7 +869,9 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
case base.GetParameter:
if sc.readHandlers.OnGetParameter != nil {
return sc.readHandlers.OnGetParameter(req)
return sc.readHandlers.OnGetParameter(&ServerConnGetParameterCtx{
Req: req,
})
}
// GET_PARAMETER is used like a ping
@@ -811,12 +885,16 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) {
case base.SetParameter:
if sc.readHandlers.OnSetParameter != nil {
return sc.readHandlers.OnSetParameter(req)
return sc.readHandlers.OnSetParameter(&ServerConnSetParameterCtx{
Req: req,
})
}
case base.Teardown:
if sc.readHandlers.OnTeardown != nil {
return sc.readHandlers.OnTeardown(req)
return sc.readHandlers.OnTeardown(&ServerConnTeardownCtx{
Req: req,
})
}
return &base.Response{

View File

@@ -14,7 +14,6 @@ import (
"github.com/stretchr/testify/require"
"github.com/aler9/gortsplib/pkg/base"
"github.com/aler9/gortsplib/pkg/headers"
)
type testServ struct {
@@ -78,18 +77,18 @@ func (ts *testServ) handleConn(conn *ServerConn) {
defer ts.wg.Done()
defer conn.Close()
onDescribe := func(req *base.Request) (*base.Response, []byte, error) {
reqPath, ok := req.URL.RTSPPath()
onDescribe := func(ctx *ServerConnDescribeCtx) (*base.Response, []byte, error) {
reqPath, ok := ctx.Req.URL.RTSPPath()
if !ok {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, nil, fmt.Errorf("invalid path (%s)", req.URL)
}, nil, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
if reqPath != "teststream" {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, nil, fmt.Errorf("invalid path (%s)", req.URL)
}, nil, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
ts.mutex.Lock()
@@ -106,18 +105,18 @@ func (ts *testServ) handleConn(conn *ServerConn) {
}, ts.sdp, nil
}
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
reqPath, ok := req.URL.RTSPPath()
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
reqPath, ok := ctx.Req.URL.RTSPPath()
if !ok {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
if reqPath != "teststream" {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
ts.mutex.Lock()
@@ -130,7 +129,7 @@ func (ts *testServ) handleConn(conn *ServerConn) {
}
ts.publisher = conn
ts.sdp = tracks.Write()
ts.sdp = ctx.Tracks.Write()
return &base.Response{
StatusCode: base.StatusOK,
@@ -140,11 +139,11 @@ func (ts *testServ) handleConn(conn *ServerConn) {
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
if path != "teststream" {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
if ctx.Path != "teststream" {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
return &base.Response{
@@ -155,12 +154,12 @@ func (ts *testServ) handleConn(conn *ServerConn) {
}, nil
}
onPlay := func(req *base.Request) (*base.Response, error) {
reqPath, ok := req.URL.RTSPPath()
onPlay := func(ctx *ServerConnPlayCtx) (*base.Response, error) {
reqPath, ok := ctx.Req.URL.RTSPPath()
if !ok {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
// path can end with a slash, remove it
@@ -169,7 +168,7 @@ func (ts *testServ) handleConn(conn *ServerConn) {
if reqPath != "teststream" {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
ts.mutex.Lock()
@@ -185,12 +184,12 @@ func (ts *testServ) handleConn(conn *ServerConn) {
}, nil
}
onRecord := func(req *base.Request) (*base.Response, error) {
reqPath, ok := req.URL.RTSPPath()
onRecord := func(ctx *ServerConnRecordCtx) (*base.Response, error) {
reqPath, ok := ctx.Req.URL.RTSPPath()
if !ok {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
// path can end with a slash, remove it
@@ -199,7 +198,7 @@ func (ts *testServ) handleConn(conn *ServerConn) {
if reqPath != "teststream" {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, fmt.Errorf("invalid path (%s)", req.URL)
}, fmt.Errorf("invalid path (%s)", ctx.Req.URL)
}
ts.mutex.Lock()

View File

@@ -86,14 +86,14 @@ func TestServerConnPublishSetupPath(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
setupDone <- pathTrackIDPair{path, trackID}
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
setupDone <- pathTrackIDPair{ctx.Path, ctx.TrackID}
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -201,13 +201,13 @@ func TestServerConnPublishSetupDifferentPaths(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -299,13 +299,13 @@ func TestServerConnPublishSetupDouble(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -411,19 +411,19 @@ func TestServerConnPublishRecordPartialTracks(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onRecord := func(req *base.Request) (*base.Response, error) {
onRecord := func(ctx *ServerConnRecordCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -544,19 +544,19 @@ func TestServerConnPublishReceivePackets(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onAnnounce := func(req *base.Request, tracks Tracks) (*base.Response, error) {
onAnnounce := func(ctx *ServerConnAnnounceCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onRecord := func(req *base.Request) (*base.Response, error) {
onRecord := func(ctx *ServerConnRecordCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil

View File

@@ -77,8 +77,8 @@ func TestServerConnReadSetupPath(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
setupDone <- pathTrackIDPair{path, trackID}
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
setupDone <- pathTrackIDPair{ctx.Path, ctx.TrackID}
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -145,7 +145,7 @@ func TestServerConnReadSetupDifferentPaths(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -226,7 +226,7 @@ func TestServerConnReadSetupDouble(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -317,13 +317,13 @@ func TestServerConnReadReceivePackets(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *ServerConnPlayCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
@@ -442,13 +442,13 @@ func TestServerConnReadTCPResponseBeforeFrames(t *testing.T) {
writerTerminate := make(chan struct{})
defer close(writerTerminate)
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *ServerConnPlayCtx) (*base.Response, error) {
go func() {
defer close(writerDone)
@@ -549,13 +549,13 @@ func TestServerConnReadPlayMultiple(t *testing.T) {
writerTerminate := make(chan struct{})
defer close(writerTerminate)
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *ServerConnPlayCtx) (*base.Response, error) {
if conn.State() != ServerConnStatePlay {
go func() {
defer close(writerDone)
@@ -663,13 +663,13 @@ func TestServerConnReadPauseMultiple(t *testing.T) {
writerTerminate := make(chan struct{})
defer close(writerTerminate)
onSetup := func(req *base.Request, th *headers.Transport, path string, trackID int) (*base.Response, error) {
onSetup := func(ctx *ServerConnSetupCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
onPlay := func(req *base.Request) (*base.Response, error) {
onPlay := func(ctx *ServerConnPlayCtx) (*base.Response, error) {
go func() {
defer close(writerDone)
@@ -691,7 +691,7 @@ func TestServerConnReadPauseMultiple(t *testing.T) {
}, nil
}
onPause := func(req *base.Request) (*base.Response, error) {
onPause := func(ctx *ServerConnPauseCtx) (*base.Response, error) {
return &base.Response{
StatusCode: base.StatusOK,
}, nil