mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
server: allow to associate user data to sessions (#50)
This commit is contained in:
@@ -636,6 +636,7 @@ func TestServerGetSetParameter(t *testing.T) {
|
|||||||
s := &Server{
|
s := &Server{
|
||||||
Handler: &testServerHandler{
|
Handler: &testServerHandler{
|
||||||
onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, *ServerStream, error) {
|
onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, *ServerStream, error) {
|
||||||
|
ctx.Session.SetUserData(123)
|
||||||
return &base.Response{
|
return &base.Response{
|
||||||
StatusCode: base.StatusOK,
|
StatusCode: base.StatusOK,
|
||||||
}, stream, nil
|
}, stream, nil
|
||||||
@@ -643,6 +644,7 @@ func TestServerGetSetParameter(t *testing.T) {
|
|||||||
onSetParameter: func(ctx *ServerHandlerOnSetParameterCtx) (*base.Response, error) {
|
onSetParameter: func(ctx *ServerHandlerOnSetParameterCtx) (*base.Response, error) {
|
||||||
if ca == "inside session" {
|
if ca == "inside session" {
|
||||||
require.NotNil(t, ctx.Session)
|
require.NotNil(t, ctx.Session)
|
||||||
|
require.Equal(t, 123, ctx.Session.UserData())
|
||||||
}
|
}
|
||||||
params = ctx.Request.Body
|
params = ctx.Request.Body
|
||||||
return &base.Response{
|
return &base.Response{
|
||||||
|
@@ -163,6 +163,7 @@ type ServerSession struct {
|
|||||||
|
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
ctxCancel func()
|
ctxCancel func()
|
||||||
|
userData interface{}
|
||||||
conns map[*ServerConn]struct{}
|
conns map[*ServerConn]struct{}
|
||||||
state ServerSessionState
|
state ServerSessionState
|
||||||
setuppedTracks map[int]*ServerSessionSetuppedTrack
|
setuppedTracks map[int]*ServerSessionSetuppedTrack
|
||||||
@@ -242,6 +243,16 @@ func (ss *ServerSession) AnnouncedTracks() Tracks {
|
|||||||
return ss.announcedTracks
|
return ss.announcedTracks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserData sets some user data associated to the session.
|
||||||
|
func (ss *ServerSession) SetUserData(v interface{}) {
|
||||||
|
ss.userData = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserData returns some user data associated to the session.
|
||||||
|
func (ss *ServerSession) UserData() interface{} {
|
||||||
|
return ss.userData
|
||||||
|
}
|
||||||
|
|
||||||
func (ss *ServerSession) checkState(allowed map[ServerSessionState]struct{}) error {
|
func (ss *ServerSession) checkState(allowed map[ServerSessionState]struct{}) error {
|
||||||
if _, ok := allowed[ss.state]; ok {
|
if _, ok := allowed[ss.state]; ok {
|
||||||
return nil
|
return nil
|
||||||
|
Reference in New Issue
Block a user