diff --git a/examples/server-tls/main.go b/examples/server-tls/main.go index b7684036..58a39c1f 100644 --- a/examples/server-tls/main.go +++ b/examples/server-tls/main.go @@ -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() diff --git a/examples/server-udp/main.go b/examples/server-udp/main.go index 0b9a84d4..f2eb2f39 100644 --- a/examples/server-udp/main.go +++ b/examples/server-udp/main.go @@ -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() diff --git a/examples/server/main.go b/examples/server/main.go index 982024f2..b2eae2c3 100644 --- a/examples/server/main.go +++ b/examples/server/main.go @@ -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() diff --git a/serverconn.go b/serverconn.go index 384c83cb..191b69d3 100644 --- a/serverconn.go +++ b/serverconn.go @@ -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{ diff --git a/serverconn_test.go b/serverconn_test.go index ff680b59..dda6cb66 100644 --- a/serverconn_test.go +++ b/serverconn_test.go @@ -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() diff --git a/serverconnpublish_test.go b/serverconnpublish_test.go index eb344e00..19ea49b7 100644 --- a/serverconnpublish_test.go +++ b/serverconnpublish_test.go @@ -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 diff --git a/serverconnread_test.go b/serverconnread_test.go index 1b24e6c1..073b7b9f 100644 --- a/serverconnread_test.go +++ b/serverconnread_test.go @@ -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