Populate the sender identity when translating to user packet. (#3628)

This commit is contained in:
Raja Subramanian
2025-04-25 23:44:43 +05:30
committed by GitHub
parent e14905581c
commit f69ab68045
7 changed files with 19 additions and 16 deletions
+2 -2
View File
@@ -3121,12 +3121,12 @@ func (p *ParticipantImpl) SendDataMessage(kind livekit.DataPacket_Kind, data []b
return p.TransportManager.SendDataMessage(kind, data)
}
func (p *ParticipantImpl) SendDataMessageUnlabeled(data []byte, useRaw bool) error {
func (p *ParticipantImpl) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error {
if p.State() != livekit.ParticipantInfo_ACTIVE {
return ErrDataChannelUnavailable
}
return p.TransportManager.SendDataMessageUnlabeled(data, useRaw)
return p.TransportManager.SendDataMessageUnlabeled(data, useRaw, sender)
}
func (p *ParticipantImpl) onDataSendError(err error) {
+1 -1
View File
@@ -1842,7 +1842,7 @@ func BroadcastDataMessageForRoom(r types.Room, source types.LocalParticipant, da
return
}
op.SendDataMessageUnlabeled(data, false)
op.SendDataMessageUnlabeled(data, false, source.Identity())
})
}
+2 -1
View File
@@ -1181,7 +1181,7 @@ func (t *PCTransport) SendDataMessage(kind livekit.DataPacket_Kind, data []byte)
return t.sendDataMessage(dc, data)
}
func (t *PCTransport) SendDataMessageUnlabeled(data []byte, useRaw bool) error {
func (t *PCTransport) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error {
convertToUserPacket := false
var dc *datachannel.DataChannelWriter[*webrtc.DataChannel]
t.lock.RLock()
@@ -1203,6 +1203,7 @@ func (t *PCTransport) SendDataMessageUnlabeled(data []byte, useRaw bool) error {
if convertToUserPacket {
dpData, err := proto.Marshal(&livekit.DataPacket{
ParticipantIdentity: string(sender),
Value: &livekit.DataPacket_User{
User: &livekit.UserPacket{Payload: data},
},
+2 -2
View File
@@ -302,10 +302,10 @@ func (t *TransportManager) SendDataMessage(kind livekit.DataPacket_Kind, data []
return t.handleSendDataResult(t.getTransport(true).SendDataMessage(kind, data), kind.String(), len(data))
}
func (t *TransportManager) SendDataMessageUnlabeled(data []byte, useRaw bool) error {
func (t *TransportManager) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error {
// downstream data is sent via primary peer connection
return t.handleSendDataResult(
t.getTransport(true).SendDataMessageUnlabeled(data, useRaw),
t.getTransport(true).SendDataMessageUnlabeled(data, useRaw, sender),
"unlabeled",
len(data),
)
+1 -1
View File
@@ -407,7 +407,7 @@ type LocalParticipant interface {
SendParticipantUpdate(participants []*livekit.ParticipantInfo) error
SendSpeakerUpdate(speakers []*livekit.SpeakerInfo, force bool) error
SendDataMessage(kind livekit.DataPacket_Kind, data []byte) error
SendDataMessageUnlabeled(data []byte, useRaw bool) error
SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
SendRoomUpdate(room *livekit.Room) error
SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error
SubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool)
@@ -843,11 +843,12 @@ type FakeLocalParticipant struct {
sendDataMessageReturnsOnCall map[int]struct {
result1 error
}
SendDataMessageUnlabeledStub func([]byte, bool) error
SendDataMessageUnlabeledStub func([]byte, bool, livekit.ParticipantIdentity) error
sendDataMessageUnlabeledMutex sync.RWMutex
sendDataMessageUnlabeledArgsForCall []struct {
arg1 []byte
arg2 bool
arg3 livekit.ParticipantIdentity
}
sendDataMessageUnlabeledReturns struct {
result1 error
@@ -5666,7 +5667,7 @@ func (fake *FakeLocalParticipant) SendDataMessageReturnsOnCall(i int, result1 er
}{result1}
}
func (fake *FakeLocalParticipant) SendDataMessageUnlabeled(arg1 []byte, arg2 bool) error {
func (fake *FakeLocalParticipant) SendDataMessageUnlabeled(arg1 []byte, arg2 bool, arg3 livekit.ParticipantIdentity) error {
var arg1Copy []byte
if arg1 != nil {
arg1Copy = make([]byte, len(arg1))
@@ -5677,13 +5678,14 @@ func (fake *FakeLocalParticipant) SendDataMessageUnlabeled(arg1 []byte, arg2 boo
fake.sendDataMessageUnlabeledArgsForCall = append(fake.sendDataMessageUnlabeledArgsForCall, struct {
arg1 []byte
arg2 bool
}{arg1Copy, arg2})
arg3 livekit.ParticipantIdentity
}{arg1Copy, arg2, arg3})
stub := fake.SendDataMessageUnlabeledStub
fakeReturns := fake.sendDataMessageUnlabeledReturns
fake.recordInvocation("SendDataMessageUnlabeled", []interface{}{arg1Copy, arg2})
fake.recordInvocation("SendDataMessageUnlabeled", []interface{}{arg1Copy, arg2, arg3})
fake.sendDataMessageUnlabeledMutex.Unlock()
if stub != nil {
return stub(arg1, arg2)
return stub(arg1, arg2, arg3)
}
if specificReturn {
return ret.result1
@@ -5697,17 +5699,17 @@ func (fake *FakeLocalParticipant) SendDataMessageUnlabeledCallCount() int {
return len(fake.sendDataMessageUnlabeledArgsForCall)
}
func (fake *FakeLocalParticipant) SendDataMessageUnlabeledCalls(stub func([]byte, bool) error) {
func (fake *FakeLocalParticipant) SendDataMessageUnlabeledCalls(stub func([]byte, bool, livekit.ParticipantIdentity) error) {
fake.sendDataMessageUnlabeledMutex.Lock()
defer fake.sendDataMessageUnlabeledMutex.Unlock()
fake.SendDataMessageUnlabeledStub = stub
}
func (fake *FakeLocalParticipant) SendDataMessageUnlabeledArgsForCall(i int) ([]byte, bool) {
func (fake *FakeLocalParticipant) SendDataMessageUnlabeledArgsForCall(i int) ([]byte, bool, livekit.ParticipantIdentity) {
fake.sendDataMessageUnlabeledMutex.RLock()
defer fake.sendDataMessageUnlabeledMutex.RUnlock()
argsForCall := fake.sendDataMessageUnlabeledArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3
}
func (fake *FakeLocalParticipant) SendDataMessageUnlabeledReturns(result1 error) {
+1 -1
View File
@@ -754,7 +754,7 @@ func (c *RTCClient) PublishDataUnlabeled(data []byte) error {
return err
}
return c.publisher.SendDataMessageUnlabeled(data, true)
return c.publisher.SendDataMessageUnlabeled(data, true, "test")
}
func (c *RTCClient) GetPublishedTrackIDs() []string {