store participant res sink in interface typed field (#1567)

This commit is contained in:
Paul Wells
2023-03-31 00:45:50 -07:00
committed by GitHub
parent b5b896a6c6
commit c45e23be3f
2 changed files with 12 additions and 19 deletions
+6 -6
View File
@@ -93,12 +93,12 @@ type ParticipantParams struct {
type ParticipantImpl struct {
params ParticipantParams
isClosed atomic.Bool
state atomic.Value // livekit.ParticipantInfo_State
resSink atomic.Value // routing.MessageSink
resSinkValid atomic.Bool
grants *auth.ClaimGrants
isPublisher atomic.Bool
isClosed atomic.Bool
state atomic.Value // livekit.ParticipantInfo_State
resSinkMu sync.Mutex
resSink routing.MessageSink
grants *auth.ClaimGrants
isPublisher atomic.Bool
// when first connected
connectedAt time.Time
+6 -13
View File
@@ -12,22 +12,15 @@ import (
)
func (p *ParticipantImpl) getResponseSink() routing.MessageSink {
if !p.resSinkValid.Load() {
return nil
}
sink := p.resSink.Load()
if s, ok := sink.(routing.MessageSink); ok {
return s
}
return nil
p.resSinkMu.Lock()
defer p.resSinkMu.Unlock()
return p.resSink
}
func (p *ParticipantImpl) SetResponseSink(sink routing.MessageSink) {
p.resSinkValid.Store(sink != nil)
if sink != nil {
// cannot store nil into atomic.Value
p.resSink.Store(sink)
}
p.resSinkMu.Lock()
defer p.resSinkMu.Unlock()
p.resSink = sink
}
func (p *ParticipantImpl) SendJoinResponse(joinResponse *livekit.JoinResponse) error {