mirror of
https://github.com/livekit/livekit.git
synced 2026-10-22 21:53:22 +00:00
Signalling V2 protocol implementation start (#3794)
* WIP * name * refactor validate * WIP * WIP * signal cache initial impl * HandleConnect in room manager * generate subscriber offer * handle ConnectRequest as stand alone * segmentation, reassembly * clean up * rearrange * lock scope * support metadata in connect request * prom * add SifTrailer to ConnectResponse * prom for get offer error counter * RtcInit counter * Jie feedback * signal client * consolidate v1 and v2 into SignalClient * clean up * comment * deps * mage generate * fix tests * pass around roomName and participantIdentity * mage generate
This commit is contained in:
1 parent
ba702a5323
commit
b9a44c3fbf
32 files changed
+2300
-395
No files matched your search
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/livekit/livekit-server/pkg/routing"
|
||||
"github.com/livekit/protocol/livekit"
|
||||
"github.com/livekit/protocol/rpc"
|
||||
)
|
||||
|
||||
type FakeRouter struct {
|
||||
@@ -64,6 +65,22 @@ type FakeRouter struct {
|
||||
getRegionReturnsOnCall map[int]struct {
|
||||
result1 string
|
||||
}
|
||||
HandleParticipantConnectRequestStub func(context.Context, livekit.RoomName, livekit.ParticipantIdentity, *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error)
|
||||
handleParticipantConnectRequestMutex sync.RWMutex
|
||||
handleParticipantConnectRequestArgsForCall []struct {
|
||||
arg1 context.Context
|
||||
arg2 livekit.RoomName
|
||||
arg3 livekit.ParticipantIdentity
|
||||
arg4 *rpc.RelaySignalv2ConnectRequest
|
||||
}
|
||||
handleParticipantConnectRequestReturns struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}
|
||||
handleParticipantConnectRequestReturnsOnCall map[int]struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}
|
||||
ListNodesStub func() ([]*livekit.Node, error)
|
||||
listNodesMutex sync.RWMutex
|
||||
listNodesArgsForCall []struct {
|
||||
@@ -421,6 +438,73 @@ func (fake *FakeRouter) GetRegionReturnsOnCall(i int, result1 string) {
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequest(arg1 context.Context, arg2 livekit.RoomName, arg3 livekit.ParticipantIdentity, arg4 *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
ret, specificReturn := fake.handleParticipantConnectRequestReturnsOnCall[len(fake.handleParticipantConnectRequestArgsForCall)]
|
||||
fake.handleParticipantConnectRequestArgsForCall = append(fake.handleParticipantConnectRequestArgsForCall, struct {
|
||||
arg1 context.Context
|
||||
arg2 livekit.RoomName
|
||||
arg3 livekit.ParticipantIdentity
|
||||
arg4 *rpc.RelaySignalv2ConnectRequest
|
||||
}{arg1, arg2, arg3, arg4})
|
||||
stub := fake.HandleParticipantConnectRequestStub
|
||||
fakeReturns := fake.handleParticipantConnectRequestReturns
|
||||
fake.recordInvocation("HandleParticipantConnectRequest", []interface{}{arg1, arg2, arg3, arg4})
|
||||
fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
if stub != nil {
|
||||
return stub(arg1, arg2, arg3, arg4)
|
||||
}
|
||||
if specificReturn {
|
||||
return ret.result1, ret.result2
|
||||
}
|
||||
return fakeReturns.result1, fakeReturns.result2
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequestCallCount() int {
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
return len(fake.handleParticipantConnectRequestArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequestCalls(stub func(context.Context, livekit.RoomName, livekit.ParticipantIdentity, *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error)) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = stub
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequestArgsForCall(i int) (context.Context, livekit.RoomName, livekit.ParticipantIdentity, *rpc.RelaySignalv2ConnectRequest) {
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
argsForCall := fake.handleParticipantConnectRequestArgsForCall[i]
|
||||
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequestReturns(result1 *rpc.RelaySignalv2ConnectResponse, result2 error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = nil
|
||||
fake.handleParticipantConnectRequestReturns = struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) HandleParticipantConnectRequestReturnsOnCall(i int, result1 *rpc.RelaySignalv2ConnectResponse, result2 error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = nil
|
||||
if fake.handleParticipantConnectRequestReturnsOnCall == nil {
|
||||
fake.handleParticipantConnectRequestReturnsOnCall = make(map[int]struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
})
|
||||
}
|
||||
fake.handleParticipantConnectRequestReturnsOnCall[i] = struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeRouter) ListNodes() ([]*livekit.Node, error) {
|
||||
fake.listNodesMutex.Lock()
|
||||
ret, specificReturn := fake.listNodesReturnsOnCall[len(fake.listNodesArgsForCall)]
|
||||
@@ -855,6 +939,8 @@ func (fake *FakeRouter) Invocations() map[string][][]interface{} {
|
||||
defer fake.getNodeForRoomMutex.RUnlock()
|
||||
fake.getRegionMutex.RLock()
|
||||
defer fake.getRegionMutex.RUnlock()
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
fake.listNodesMutex.RLock()
|
||||
defer fake.listNodesMutex.RUnlock()
|
||||
fake.registerNodeMutex.RLock()
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/livekit/livekit-server/pkg/routing"
|
||||
"github.com/livekit/protocol/livekit"
|
||||
"github.com/livekit/protocol/rpc"
|
||||
)
|
||||
|
||||
type FakeSignalClient struct {
|
||||
@@ -20,6 +21,23 @@ type FakeSignalClient struct {
|
||||
activeCountReturnsOnCall map[int]struct {
|
||||
result1 int
|
||||
}
|
||||
HandleParticipantConnectRequestStub func(context.Context, livekit.RoomName, livekit.ParticipantIdentity, livekit.NodeID, *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error)
|
||||
handleParticipantConnectRequestMutex sync.RWMutex
|
||||
handleParticipantConnectRequestArgsForCall []struct {
|
||||
arg1 context.Context
|
||||
arg2 livekit.RoomName
|
||||
arg3 livekit.ParticipantIdentity
|
||||
arg4 livekit.NodeID
|
||||
arg5 *rpc.RelaySignalv2ConnectRequest
|
||||
}
|
||||
handleParticipantConnectRequestReturns struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}
|
||||
handleParticipantConnectRequestReturnsOnCall map[int]struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}
|
||||
StartParticipantSignalStub func(context.Context, livekit.RoomName, routing.ParticipantInit, livekit.NodeID) (livekit.ConnectionID, routing.MessageSink, routing.MessageSource, error)
|
||||
startParticipantSignalMutex sync.RWMutex
|
||||
startParticipantSignalArgsForCall []struct {
|
||||
@@ -97,6 +115,74 @@ func (fake *FakeSignalClient) ActiveCountReturnsOnCall(i int, result1 int) {
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequest(arg1 context.Context, arg2 livekit.RoomName, arg3 livekit.ParticipantIdentity, arg4 livekit.NodeID, arg5 *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
ret, specificReturn := fake.handleParticipantConnectRequestReturnsOnCall[len(fake.handleParticipantConnectRequestArgsForCall)]
|
||||
fake.handleParticipantConnectRequestArgsForCall = append(fake.handleParticipantConnectRequestArgsForCall, struct {
|
||||
arg1 context.Context
|
||||
arg2 livekit.RoomName
|
||||
arg3 livekit.ParticipantIdentity
|
||||
arg4 livekit.NodeID
|
||||
arg5 *rpc.RelaySignalv2ConnectRequest
|
||||
}{arg1, arg2, arg3, arg4, arg5})
|
||||
stub := fake.HandleParticipantConnectRequestStub
|
||||
fakeReturns := fake.handleParticipantConnectRequestReturns
|
||||
fake.recordInvocation("HandleParticipantConnectRequest", []interface{}{arg1, arg2, arg3, arg4, arg5})
|
||||
fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
if stub != nil {
|
||||
return stub(arg1, arg2, arg3, arg4, arg5)
|
||||
}
|
||||
if specificReturn {
|
||||
return ret.result1, ret.result2
|
||||
}
|
||||
return fakeReturns.result1, fakeReturns.result2
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequestCallCount() int {
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
return len(fake.handleParticipantConnectRequestArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequestCalls(stub func(context.Context, livekit.RoomName, livekit.ParticipantIdentity, livekit.NodeID, *rpc.RelaySignalv2ConnectRequest) (*rpc.RelaySignalv2ConnectResponse, error)) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = stub
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequestArgsForCall(i int) (context.Context, livekit.RoomName, livekit.ParticipantIdentity, livekit.NodeID, *rpc.RelaySignalv2ConnectRequest) {
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
argsForCall := fake.handleParticipantConnectRequestArgsForCall[i]
|
||||
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4, argsForCall.arg5
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequestReturns(result1 *rpc.RelaySignalv2ConnectResponse, result2 error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = nil
|
||||
fake.handleParticipantConnectRequestReturns = struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) HandleParticipantConnectRequestReturnsOnCall(i int, result1 *rpc.RelaySignalv2ConnectResponse, result2 error) {
|
||||
fake.handleParticipantConnectRequestMutex.Lock()
|
||||
defer fake.handleParticipantConnectRequestMutex.Unlock()
|
||||
fake.HandleParticipantConnectRequestStub = nil
|
||||
if fake.handleParticipantConnectRequestReturnsOnCall == nil {
|
||||
fake.handleParticipantConnectRequestReturnsOnCall = make(map[int]struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
})
|
||||
}
|
||||
fake.handleParticipantConnectRequestReturnsOnCall[i] = struct {
|
||||
result1 *rpc.RelaySignalv2ConnectResponse
|
||||
result2 error
|
||||
}{result1, result2}
|
||||
}
|
||||
|
||||
func (fake *FakeSignalClient) StartParticipantSignal(arg1 context.Context, arg2 livekit.RoomName, arg3 routing.ParticipantInit, arg4 livekit.NodeID) (livekit.ConnectionID, routing.MessageSink, routing.MessageSource, error) {
|
||||
fake.startParticipantSignalMutex.Lock()
|
||||
ret, specificReturn := fake.startParticipantSignalReturnsOnCall[len(fake.startParticipantSignalArgsForCall)]
|
||||
@@ -175,6 +261,8 @@ func (fake *FakeSignalClient) Invocations() map[string][][]interface{} {
|
||||
defer fake.invocationsMutex.RUnlock()
|
||||
fake.activeCountMutex.RLock()
|
||||
defer fake.activeCountMutex.RUnlock()
|
||||
fake.handleParticipantConnectRequestMutex.RLock()
|
||||
defer fake.handleParticipantConnectRequestMutex.RUnlock()
|
||||
fake.startParticipantSignalMutex.RLock()
|
||||
defer fake.startParticipantSignalMutex.RUnlock()
|
||||
copiedInvocations := map[string][][]interface{}{}
|
||||
|
||||
Reference in new issue
Block a user