Support subscriber_allow_pause connect option (#1612)

* Support subscriber_allow_pause connect option

* optional subscriber_allow_pause field
This commit is contained in:
Raja Subramanian
2023-04-13 17:00:32 +05:30
committed by GitHub
parent d2bf8f0ba1
commit ac266fbcd6
5 changed files with 40 additions and 18 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ require (
github.com/jxskiss/base62 v1.1.0
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1
github.com/livekit/mediatransportutil v0.0.0-20230326055817-ed569ca13d26
github.com/livekit/protocol v1.5.3
github.com/livekit/protocol v1.5.4-0.20230413111958-5fea69067bbc
github.com/livekit/psrpc v0.2.11-0.20230405191830-d76f71512630
github.com/mackerelio/go-osstat v0.2.4
github.com/magefile/mage v1.14.0
+2 -2
View File
@@ -241,8 +241,8 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
github.com/livekit/mediatransportutil v0.0.0-20230326055817-ed569ca13d26 h1:QlQFyMwCDgjyySsrgmrMcVbEBA6KZcyTzvK+z346tUA=
github.com/livekit/mediatransportutil v0.0.0-20230326055817-ed569ca13d26/go.mod h1:eDA41kiySZoG+wy4Etsjb3w0jjLx69i/vAmSjG4bteA=
github.com/livekit/protocol v1.5.3 h1:xCzKeQss4Fp3tYW21q4E2mvJ2vwQqxxfnymBHmvt9Gg=
github.com/livekit/protocol v1.5.3/go.mod h1:YPmFvsD0cr7KlC7wsoLTLwCAAJun/ovCDBCvUnWvdwo=
github.com/livekit/protocol v1.5.4-0.20230413111958-5fea69067bbc h1:15IrYsN4PRgrH2MldkYgnTqqNxgRgjVGLjEtwurphCQ=
github.com/livekit/protocol v1.5.4-0.20230413111958-5fea69067bbc/go.mod h1:YPmFvsD0cr7KlC7wsoLTLwCAAJun/ovCDBCvUnWvdwo=
github.com/livekit/psrpc v0.2.11-0.20230405191830-d76f71512630 h1:Rm5KLZgQxWnTidY+H8MsAV6sk1iiFxeXqPFgSLkMing=
github.com/livekit/psrpc v0.2.11-0.20230405191830-d76f71512630/go.mod h1:K0j8f1PgLShR7Lx80KbmwFkDH2BvOnycXGV0OSRURKc=
github.com/mackerelio/go-osstat v0.2.4 h1:qxGbdPkFo65PXOb/F/nhDKpF2nGmGaCFDLXoZjJTtUs=
+27 -14
View File
@@ -34,16 +34,17 @@ type MessageSource interface {
}
type ParticipantInit struct {
Identity livekit.ParticipantIdentity
Name livekit.ParticipantName
Reconnect bool
ReconnectReason livekit.ReconnectReason
AutoSubscribe bool
Client *livekit.ClientInfo
Grants *auth.ClaimGrants
Region string
AdaptiveStream bool
ID livekit.ParticipantID
Identity livekit.ParticipantIdentity
Name livekit.ParticipantName
Reconnect bool
ReconnectReason livekit.ReconnectReason
AutoSubscribe bool
Client *livekit.ClientInfo
Grants *auth.ClaimGrants
Region string
AdaptiveStream bool
ID livekit.ParticipantID
SubscriberAllowPause *bool
}
type NewParticipantCallback func(
@@ -117,7 +118,7 @@ func (pi *ParticipantInit) ToStartSession(roomName livekit.RoomName, connectionI
return nil, err
}
return &livekit.StartSession{
ss := &livekit.StartSession{
RoomName: string(roomName),
Identity: string(pi.Identity),
Name: string(pi.Name),
@@ -130,7 +131,13 @@ func (pi *ParticipantInit) ToStartSession(roomName livekit.RoomName, connectionI
GrantsJson: string(claims),
AdaptiveStream: pi.AdaptiveStream,
ParticipantId: string(pi.ID),
}, nil
}
if pi.SubscriberAllowPause != nil {
subscriberAllowPause := *pi.SubscriberAllowPause
ss.SubscriberAllowPause = &subscriberAllowPause
}
return ss, nil
}
func ParticipantInitFromStartSession(ss *livekit.StartSession, region string) (*ParticipantInit, error) {
@@ -139,7 +146,7 @@ func ParticipantInitFromStartSession(ss *livekit.StartSession, region string) (*
return nil, err
}
return &ParticipantInit{
pi := &ParticipantInit{
Identity: livekit.ParticipantIdentity(ss.Identity),
Name: livekit.ParticipantName(ss.Name),
Reconnect: ss.Reconnect,
@@ -150,5 +157,11 @@ func ParticipantInitFromStartSession(ss *livekit.StartSession, region string) (*
Region: region,
AdaptiveStream: ss.AdaptiveStream,
ID: livekit.ParticipantID(ss.ParticipantId),
}, nil
}
if ss.SubscriberAllowPause != nil {
subscriberAllowPause := *ss.SubscriberAllowPause
pi.SubscriberAllowPause = &subscriberAllowPause
}
return pi, nil
}
+5 -1
View File
@@ -305,6 +305,10 @@ func (r *RoomManager) StartSession(
if r.config.RTC.ReconnectOnSubscriptionError != nil {
reconnectOnSubscriptionError = *r.config.RTC.ReconnectOnSubscriptionError
}
subscriberAllowPause := r.config.RTC.CongestionControl.AllowPause
if pi.SubscriberAllowPause != nil {
subscriberAllowPause = *pi.SubscriberAllowPause
}
participant, err = rtc.NewParticipant(rtc.ParticipantParams{
Identity: pi.Identity,
Name: pi.Name,
@@ -336,7 +340,7 @@ func (r *RoomManager) StartSession(
ReconnectOnSubscriptionError: reconnectOnSubscriptionError,
VersionGenerator: r.versionGenerator,
TrackResolver: room.ResolveMediaTrackForSubscriber,
SubscriberAllowPause: r.config.RTC.CongestionControl.AllowPause,
SubscriberAllowPause: subscriberAllowPause,
})
if err != nil {
return err
+5
View File
@@ -103,6 +103,7 @@ func (s *RTCService) validate(r *http.Request) (livekit.RoomName, routing.Partic
publishParam := r.FormValue("publish")
adaptiveStreamParam := r.FormValue("adaptive_stream")
participantID := r.FormValue("sid")
subscriberAllowPauseParam := r.FormValue("subscriber_allow_pause")
if onlyName != "" {
roomName = onlyName
@@ -159,6 +160,10 @@ func (s *RTCService) validate(r *http.Request) (livekit.RoomName, routing.Partic
if adaptiveStreamParam != "" {
pi.AdaptiveStream = boolValue(adaptiveStreamParam)
}
if subscriberAllowPauseParam != "" {
subscriberAllowPause := boolValue(subscriberAllowPauseParam)
pi.SubscriberAllowPause = &subscriberAllowPause
}
return roomName, pi, http.StatusOK, nil
}