Skip to content

Commit 9bb72a7

Browse files
authored
Match max subscribed participants to layout (#138)
It does not make sense to subscribe to everything in the room.
1 parent 8e334fd commit 9bb72a7

File tree

4 files changed

+86
-44
lines changed

4 files changed

+86
-44
lines changed

go.mod

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ go 1.18
55
require (
66
github.com/ggwhite/go-masker v1.0.9
77
github.com/go-logr/logr v1.2.3
8-
github.com/livekit/protocol v1.3.0
9-
github.com/livekit/server-sdk-go v1.0.6
8+
github.com/livekit/protocol v1.3.2
9+
github.com/livekit/server-sdk-go v1.0.7
1010
github.com/manifoldco/promptui v0.9.0
1111
github.com/olekukonko/tablewriter v0.0.5
1212
github.com/pion/rtp v1.7.13
13-
github.com/pion/webrtc/v3 v3.1.49
13+
github.com/pion/webrtc/v3 v3.1.50
1414
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
1515
github.com/pkg/errors v0.9.1
1616
github.com/stretchr/testify v1.8.1
@@ -39,25 +39,25 @@ require (
3939
github.com/gorilla/websocket v1.5.0 // indirect
4040
github.com/jxskiss/base62 v1.1.0 // indirect
4141
github.com/kr/text v0.2.0 // indirect
42-
github.com/lithammer/shortuuid/v3 v3.0.7 // indirect
43-
github.com/livekit/mediatransportutil v0.0.0-20221007030528-7440725c362b // indirect
42+
github.com/lithammer/shortuuid/v4 v4.0.0 // indirect
43+
github.com/livekit/mediatransportutil v0.0.0-20230111071722-904079e94a7c // indirect
4444
github.com/mackerelio/go-osstat v0.2.3 // indirect
4545
github.com/magefile/mage v1.14.0 // indirect
4646
github.com/mattn/go-runewidth v0.0.9 // indirect
4747
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
48-
github.com/pion/datachannel v1.5.2 // indirect
48+
github.com/pion/datachannel v1.5.5 // indirect
4949
github.com/pion/dtls/v2 v2.1.5 // indirect
5050
github.com/pion/ice/v2 v2.2.12 // indirect
5151
github.com/pion/interceptor v0.1.12 // indirect
5252
github.com/pion/logging v0.2.2 // indirect
5353
github.com/pion/mdns v0.0.5 // indirect
5454
github.com/pion/randutil v0.1.0 // indirect
5555
github.com/pion/rtcp v1.2.10 // indirect
56-
github.com/pion/sctp v1.8.3 // indirect
56+
github.com/pion/sctp v1.8.5 // indirect
5757
github.com/pion/sdp/v3 v3.0.6 // indirect
5858
github.com/pion/srtp/v2 v2.0.10 // indirect
5959
github.com/pion/stun v0.3.5 // indirect
60-
github.com/pion/transport v0.13.1 // indirect
60+
github.com/pion/transport v0.14.1 // indirect
6161
github.com/pion/turn/v2 v2.0.8 // indirect
6262
github.com/pion/udp v0.1.1 // indirect
6363
github.com/pmezard/go-difflib v1.0.0 // indirect
@@ -67,15 +67,15 @@ require (
6767
github.com/prometheus/procfs v0.8.0 // indirect
6868
github.com/rogpeppe/go-internal v1.8.0 // indirect
6969
github.com/russross/blackfriday/v2 v2.1.0 // indirect
70-
github.com/thoas/go-funk v0.9.2 // indirect
70+
github.com/thoas/go-funk v0.9.3 // indirect
7171
github.com/twitchtv/twirp v8.1.3+incompatible // indirect
7272
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
7373
go.uber.org/multierr v1.6.0 // indirect
7474
go.uber.org/zap v1.24.0 // indirect
7575
golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2 // indirect
76-
golang.org/x/net v0.1.0 // indirect
77-
golang.org/x/sys v0.1.0 // indirect
78-
golang.org/x/text v0.4.0 // indirect
76+
golang.org/x/net v0.3.0 // indirect
77+
golang.org/x/sys v0.3.0 // indirect
78+
golang.org/x/text v0.5.0 // indirect
7979
google.golang.org/genproto v0.0.0-20220712132514-bdd2acd4974d // indirect
8080
google.golang.org/grpc v1.51.0 // indirect
8181
gopkg.in/square/go-jose.v2 v2.6.0 // indirect

go.sum

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf
163163
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
164164
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
165165
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
166-
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
167166
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
168167
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
169168
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -196,14 +195,14 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
196195
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
197196
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
198197
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
199-
github.com/lithammer/shortuuid/v3 v3.0.7 h1:trX0KTHy4Pbwo/6ia8fscyHoGA+mf1jWbPJVuvyJQQ8=
200-
github.com/lithammer/shortuuid/v3 v3.0.7/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts=
201-
github.com/livekit/mediatransportutil v0.0.0-20221007030528-7440725c362b h1:RBNV8TckETSkIkKxcD12d8nZKVkB9GSY/sQlMoaruP4=
202-
github.com/livekit/mediatransportutil v0.0.0-20221007030528-7440725c362b/go.mod h1:1Dlx20JPoIKGP45eo+yuj0HjeE25zmyeX/EWHiPCjFw=
203-
github.com/livekit/protocol v1.3.0 h1:9rzcKrLxZQIsL5Us2ZARmAkTw1dZJMF3WJoS6MCZUIw=
204-
github.com/livekit/protocol v1.3.0/go.mod h1:87MLIMbKaZs0SbDebMw1b7n/gD5utwEDq3zIRYcHJHA=
205-
github.com/livekit/server-sdk-go v1.0.6 h1:V4ACLjLkC7KwjijhoP/XQrM84SMCMpR/9DICWeEuygs=
206-
github.com/livekit/server-sdk-go v1.0.6/go.mod h1:SmgKlx/oOLy9ryjp/n0lOSaa9Dq0qH4veYzQU/jSS8A=
198+
github.com/lithammer/shortuuid/v4 v4.0.0 h1:QRbbVkfgNippHOS8PXDkti4NaWeyYfcBTHtw7k08o4c=
199+
github.com/lithammer/shortuuid/v4 v4.0.0/go.mod h1:Zs8puNcrvf2rV9rTH51ZLLcj7ZXqQI3lv67aw4KiB1Y=
200+
github.com/livekit/mediatransportutil v0.0.0-20230111071722-904079e94a7c h1:wdzwTJjCpzy2FDmwdyVVGVa4+U9iv3E4Jy9qUDe/ubw=
201+
github.com/livekit/mediatransportutil v0.0.0-20230111071722-904079e94a7c/go.mod h1:1Dlx20JPoIKGP45eo+yuj0HjeE25zmyeX/EWHiPCjFw=
202+
github.com/livekit/protocol v1.3.2 h1:3goGWbB5HFRb3tMjog8KP0nvZL1Fy6zut3W1psBzqE4=
203+
github.com/livekit/protocol v1.3.2/go.mod h1:gwCG03nKlHlC9hTjL4pXQpn783ALhmbyhq65UZxqbb8=
204+
github.com/livekit/server-sdk-go v1.0.7 h1:IxA30D9QCkaXFt6+cahSX+whV1PwRlXkKL+r5+nSvQ4=
205+
github.com/livekit/server-sdk-go v1.0.7/go.mod h1:XPmQAgRQsD045K0X1Nh2xWlKEO31yInb0WGzUbADJaM=
207206
github.com/mackerelio/go-osstat v0.2.3 h1:jAMXD5erlDE39kdX2CU7YwCGRcxIO33u/p8+Fhe5dJw=
208207
github.com/mackerelio/go-osstat v0.2.3/go.mod h1:DQbPOnsss9JHIXgBStc/dnhhir3gbd3YH+Dbdi7ptMA=
209208
github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo=
@@ -235,8 +234,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
235234
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
236235
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
237236
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
238-
github.com/pion/datachannel v1.5.2 h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E=
239-
github.com/pion/datachannel v1.5.2/go.mod h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ=
237+
github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew8=
238+
github.com/pion/datachannel v1.5.5/go.mod h1:iMz+lECmfdCMqFRhXhcA/219B0SQlbpoR2V118yimL0=
240239
github.com/pion/dtls/v2 v2.1.5 h1:jlh2vtIyUBShchoTDqpCCqiYCyRFJ/lvf/gQ8TALs+c=
241240
github.com/pion/dtls/v2 v2.1.5/go.mod h1:BqCE7xPZbPSubGasRoDFJeTsyJtdD1FanJYL0JGheqY=
242241
github.com/pion/ice/v2 v2.2.12 h1:n3M3lUMKQM5IoofhJo73D3qVla+mJN2nVvbSPq32Nig=
@@ -255,26 +254,25 @@ github.com/pion/rtcp v1.2.10 h1:nkr3uj+8Sp97zyItdN60tE/S6vk4al5CPRR6Gejsdjc=
255254
github.com/pion/rtcp v1.2.10/go.mod h1:ztfEwXZNLGyF1oQDttz/ZKIBaeeg/oWbRYqzBM9TL1I=
256255
github.com/pion/rtp v1.7.13 h1:qcHwlmtiI50t1XivvoawdCGTP4Uiypzfrsap+bijcoA=
257256
github.com/pion/rtp v1.7.13/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko=
258-
github.com/pion/sctp v1.8.0/go.mod h1:xFe9cLMZ5Vj6eOzpyiKjT9SwGM4KpK/8Jbw5//jc+0s=
259-
github.com/pion/sctp v1.8.3 h1:LWcciN2ptLkw9Ugp/Ks2E76fiWy7yk3Wm79D6oFbFNo=
260-
github.com/pion/sctp v1.8.3/go.mod h1:OHbDjdk7kg+L+7TJim9q/qGVefdEJohuA2SZyihccgI=
257+
github.com/pion/sctp v1.8.5 h1:JCc25nghnXWOlSn3OVtEnA9PjQ2JsxQbG+CXZ1UkJKQ=
258+
github.com/pion/sctp v1.8.5/go.mod h1:SUFFfDpViyKejTAdwD1d/HQsCu+V/40cCs2nZIvC3s0=
261259
github.com/pion/sdp/v3 v3.0.6 h1:WuDLhtuFUUVpTfus9ILC4HRyHsW6TdugjEX/QY9OiUw=
262260
github.com/pion/sdp/v3 v3.0.6/go.mod h1:iiFWFpQO8Fy3S5ldclBkpXqmWy02ns78NOKoLLL0YQw=
263261
github.com/pion/srtp/v2 v2.0.10 h1:b8ZvEuI+mrL8hbr/f1YiJFB34UMrOac3R3N1yq2UN0w=
264262
github.com/pion/srtp/v2 v2.0.10/go.mod h1:XEeSWaK9PfuMs7zxXyiN252AHPbH12NX5q/CFDWtUuA=
265263
github.com/pion/stun v0.3.5 h1:uLUCBCkQby4S1cf6CGuR9QrVOKcvUwFeemaC865QHDg=
266264
github.com/pion/stun v0.3.5/go.mod h1:gDMim+47EeEtfWogA37n6qXZS88L5V6LqFcf+DZA2UA=
267265
github.com/pion/transport v0.12.2/go.mod h1:N3+vZQD9HlDP5GWkZ85LohxNsDcNgofQmyL6ojX5d8Q=
268-
github.com/pion/transport v0.12.3/go.mod h1:OViWW9SP2peE/HbwBvARicmAVnesphkNkCVZIWJ6q9A=
269266
github.com/pion/transport v0.13.0/go.mod h1:yxm9uXpK9bpBBWkITk13cLo1y5/ur5VQpG22ny6EP7g=
270-
github.com/pion/transport v0.13.1 h1:/UH5yLeQtwm2VZIPjxwnNFxjS4DFhyLfS4GlfuKUzfA=
271267
github.com/pion/transport v0.13.1/go.mod h1:EBxbqzyv+ZrmDb82XswEE0BjfQFtuw1Nu6sjnjWCsGg=
268+
github.com/pion/transport v0.14.1 h1:XSM6olwW+o8J4SCmOBb/BpwZypkHeyM0PGFCxNQBr40=
269+
github.com/pion/transport v0.14.1/go.mod h1:4tGmbk00NeYA3rUa9+n+dzCCoKkcy3YlYb99Jn2fNnI=
272270
github.com/pion/turn/v2 v2.0.8 h1:KEstL92OUN3k5k8qxsXHpr7WWfrdp7iJZHx99ud8muw=
273271
github.com/pion/turn/v2 v2.0.8/go.mod h1:+y7xl719J8bAEVpSXBXvTxStjJv3hbz9YFflvkpcGPw=
274272
github.com/pion/udp v0.1.1 h1:8UAPvyqmsxK8oOjloDk4wUt63TzFe9WEJkg5lChlj7o=
275273
github.com/pion/udp v0.1.1/go.mod h1:6AFo+CMdKQm7UiA0eUPA8/eVCTx8jBIITLZHc9DWX5M=
276-
github.com/pion/webrtc/v3 v3.1.49 h1:rbsNGxK9jMYts+xE6zYAJMUQHnGwmk/JYze8yttW+to=
277-
github.com/pion/webrtc/v3 v3.1.49/go.mod h1:kHf/o47QW4No1rgpsFux/h7lUhtUnwFnSFDZOXeLapw=
274+
github.com/pion/webrtc/v3 v3.1.50 h1:wLMo1+re4WMZ9Kun9qcGcY+XoHkE3i0CXrrc0sjhVCk=
275+
github.com/pion/webrtc/v3 v3.1.50/go.mod h1:y9n09weIXB+sjb9mi0GBBewNxo4TKUQm5qdtT5v3/X4=
278276
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
279277
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
280278
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -334,8 +332,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
334332
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
335333
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
336334
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
337-
github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk=
338-
github.com/thoas/go-funk v0.9.2/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
335+
github.com/thoas/go-funk v0.9.3 h1:7+nAEx3kn5ZJcnDm2Bh23N2yOtweO14bi//dvRtgLpw=
336+
github.com/thoas/go-funk v0.9.3/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
339337
github.com/twitchtv/twirp v8.1.3+incompatible h1:+F4TdErPgSUbMZMwp13Q/KgDVuI7HJXP61mNV3/7iuU=
340338
github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A=
341339
github.com/urfave/cli/v2 v2.24.1 h1:/QYYr7g0EhwXEML8jO+8OYt5trPnLHS0p3mrgExJ5NU=
@@ -446,8 +444,9 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su
446444
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
447445
golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
448446
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
449-
golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
450447
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
448+
golang.org/x/net v0.3.0 h1:VWL6FNY2bEEmsGVKabSlHu5Irp34xmMRoqb/9lF9lxk=
449+
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
451450
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
452451
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
453452
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -521,11 +520,14 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
521520
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
522521
golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
523522
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
524-
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
525523
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
524+
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
525+
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
526+
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
526527
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
527528
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
528529
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
530+
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
529531
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
530532
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
531533
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -534,8 +536,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
534536
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
535537
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
536538
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
537-
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
538539
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
540+
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
541+
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
539542
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
540543
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
541544
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

pkg/loadtester/loadtester.go

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ import (
1919
type LoadTester struct {
2020
params TesterParams
2121

22-
lock sync.Mutex
23-
room *lksdk.Room
24-
running atomic.Bool
22+
subscribedParticipants map[string]*lksdk.RemoteParticipant
23+
lock sync.Mutex
24+
room *lksdk.Room
25+
running atomic.Bool
2526
// participant ID => quality
2627
trackQualities map[string]livekit.VideoQuality
2728

@@ -76,9 +77,10 @@ type TesterParams struct {
7677

7778
func NewLoadTester(params TesterParams) *LoadTester {
7879
return &LoadTester{
79-
params: params,
80-
stats: &sync.Map{},
81-
trackQualities: make(map[string]livekit.VideoQuality),
80+
params: params,
81+
stats: &sync.Map{},
82+
trackQualities: make(map[string]livekit.VideoQuality),
83+
subscribedParticipants: make(map[string]*lksdk.RemoteParticipant),
8284
}
8385
}
8486

@@ -94,6 +96,7 @@ func (t *LoadTester) Start() error {
9496
OnTrackSubscriptionFailed: func(sid string, rp *lksdk.RemoteParticipant) {
9597
fmt.Printf("track subscription failed, lp:%v, sid:%v, rp:%v/%v\n", identity, sid, rp.Identity(), rp.SID())
9698
},
99+
OnTrackPublished: t.onTrackPublished,
97100
},
98101
})
99102
var err error
@@ -104,7 +107,7 @@ func (t *LoadTester) Start() error {
104107
APISecret: t.params.APISecret,
105108
RoomName: t.params.Room,
106109
ParticipantIdentity: identity,
107-
}, lksdk.WithAutoSubscribe(t.params.Subscribe))
110+
}, lksdk.WithAutoSubscribe(false))
108111
if err == nil {
109112
break
110113
}
@@ -115,6 +118,13 @@ func (t *LoadTester) Start() error {
115118
}
116119

117120
t.running.Store(true)
121+
for _, p := range t.room.GetParticipants() {
122+
for _, pub := range p.Tracks() {
123+
if remotePub, ok := pub.(*lksdk.RemoteTrackPublication); ok {
124+
t.onTrackPublished(remotePub, p)
125+
}
126+
}
127+
}
118128

119129
return nil
120130
}
@@ -243,10 +253,38 @@ func (t *LoadTester) Stop() {
243253
t.room.Disconnect()
244254
}
245255

256+
func (t *LoadTester) numToSubscribe() int {
257+
switch t.params.Layout {
258+
case LayoutSpeaker:
259+
return 6
260+
case LayoutGrid3x3:
261+
return 9
262+
case LayoutGrid4x4:
263+
return 16
264+
case LayoutGrid5x5:
265+
return 25
266+
default:
267+
return 1
268+
}
269+
}
270+
271+
func (t *LoadTester) onTrackPublished(publication *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {
272+
t.lock.Lock()
273+
if len(t.subscribedParticipants) >= t.numToSubscribe() && t.subscribedParticipants[rp.Identity()] == nil {
274+
t.lock.Unlock()
275+
return
276+
}
277+
t.subscribedParticipants[rp.Identity()] = rp
278+
t.lock.Unlock()
279+
280+
publication.SetSubscribed(true)
281+
}
282+
246283
func (t *LoadTester) onTrackSubscribed(track *webrtc.TrackRemote, pub *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {
247284
numSubscribed := 0
248285
numTotal := 0
249-
for _, p := range t.room.GetParticipants() {
286+
t.lock.Lock()
287+
for _, p := range t.subscribedParticipants {
250288
tracks := p.Tracks()
251289
numTotal += len(tracks)
252290
for _, t := range tracks {
@@ -255,6 +293,7 @@ func (t *LoadTester) onTrackSubscribed(track *webrtc.TrackRemote, pub *lksdk.Rem
255293
}
256294
}
257295
}
296+
t.lock.Unlock()
258297

259298
s := &trackStats{
260299
trackID: track.ID(),

version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package livekitcli
22

33
const (
4-
Version = "1.2.2"
4+
Version = "1.2.3"
55
)

0 commit comments

Comments
 (0)