server: allow to associate user data to sessions (#50)

This commit is contained in:
aler9
2022-11-03 12:02:38 +01:00
parent d3c23a849c
commit 08a16e7b38
2 changed files with 13 additions and 0 deletions

View File

@@ -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{

View File

@@ -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