Compare commits

...

31 Commits

Author SHA1 Message Date
github-actions[bot]
17f16c6d15 Protocol release 1.14.0
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-26 09:21:23 +02:00
Raja Subramanian
fd19ad24b8 Deprecate UpdateVideoLayers. (#698)
* Deprecate UpdateVideoLayers.

Believe this was never used.

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-26 12:00:20 +05:30
Raja Subramanian
2d50a79222 Add audio features to TrackInfo. (#697)
* Add audio features to TrackInfo.

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-26 10:12:38 +05:30
Benjamin Pracht
6d5a8047e6 WHIP protocol change (#680)
This PR adds an optional "enable_transcoding" entry to the ingress APIs and deprecates the bypass_transcoding entry. This is in preparation of disabling "enable_transcoding" by default for WHIP.
2024-04-25 19:35:05 +02:00
dependabot[bot]
bad3fc9684 Bump golang.org/x/net from 0.21.0 to 0.23.0 (#695)
* Bump golang.org/x/net from 0.21.0 to 0.23.0

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.21.0 to 0.23.0.
- [Commits](https://github.com/golang/net/compare/v0.21.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* update to go 1.23

* go 1.22

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mathew Kamkar <578302+matkam@users.noreply.github.com>
2024-04-22 10:36:05 -07:00
Paul Wells
524ca6a3a3 reduce allocations from guids (#692)
* reduce allocations from guids

* fix

* fix

* less lock thrashing
2024-04-21 13:07:37 -07:00
Paul Wells
e418881086 refactor pion prefix matching (#691) 2024-04-20 12:52:47 -07:00
Denys Smirnov
da776daae7 Add optional name for SIP participant. (#687) 2024-04-19 15:02:57 +03:00
Paul Wells
91a1cc854d lazily initialize pion loggers (#689)
* lazily initialize pion loggers

* cleanup
2024-04-18 19:00:32 -07:00
David Zhao
0bc8068edc Added changeset for Transcriptions (#686) 2024-04-18 13:01:38 -07:00
Benjamin Pracht
2bce16cdcc Transcription/Timed metadata protocol (#679)
---------

Co-authored-by: David Zhao <dz@livekit.io>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-18 18:27:33 +02:00
Lukas Herman
b7e396271d fix: rate limit update and slack unit (#685)
* add an atomic update to rate and slack

* fix: slack should be int instead of Duration

* add documentation to rateLimit and slack
2024-04-17 13:22:27 -04:00
David Colburn
cb008da1d6 add directOutput interface (#681) 2024-04-16 10:29:53 -07:00
Benjamin Pracht
2d633a51d8 Add updated_at field to ingress (#684)
* Add updated_at field to ingress

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-16 17:43:43 +02:00
David Colburn
e746785292 fix rpc package (#678)
* fix rpc package

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-11 14:27:17 -07:00
github-actions[bot]
ef65d2b4c8 Version Packages (#669)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-11 00:07:27 -07:00
Paul Wells
b6a979d8cf add iterator to timeseries (#677)
* add iterator to timeseries

* cleanup

* cleanup
2024-04-09 23:02:26 -07:00
Lukas Herman
c69c1b0580 add Clock interface and LeakyBucket (#675)
* add Clock interface and LeakyBucket

* add SimulatedClock

* removed self reference and format

* renamed t to lb

* replaced sync/atomic with uber/atomic

* add source to the license comment

* favor value over pointer receiver for SystemClock

* use atomic.Int value

* use mutex based instead

* add source

* update comments and hide mutex

* add SetRateLimitOnTheFly

* fix: source in rate_test

* skip unstable slack tests on Github
2024-04-09 11:32:35 -04:00
Paul Wells
fec2972501 support curried psrpc metric labels (#676) 2024-04-09 00:26:52 -07:00
renovate[bot]
14e8de50d5 chore(deps): update dependency @bufbuild/protoc-gen-es to v1.8.0 (#661)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-04 23:22:11 +02:00
renovate[bot]
0519f4b851 fix(deps): update dependency @bufbuild/protobuf to v1.8.0 (#662)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-04 18:50:58 +02:00
Théo Monnom
bc6c7ffd71 agents protocol proposal (#595)
* simulate-job

* generated protobuf

* wip

* job_cost

* Update livekit_agent.proto

* generated protobuf

* Update livekit_agent.proto

* generated protobuf

* Update livekit_agent.proto

* Update livekit_agent.proto

* Update livekit_agent.proto

* generated protobuf

* Update livekit_agent.proto

* renamed to pong

Co-authored-by: David Zhao <dz@livekit.io>

* Update livekit_agent.proto

* Update livekit_agent.proto

* generated protobuf

* remove job_cost & ParticipantPermission

* generated protobuf

* Update livekit_agent.proto

* generated protobuf

* wip

* generated protobuf

* generated protobuf

* Update livekit_agent.proto

* generated protobuf

* generated protobuf

* handler namespace

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: David Zhao <dz@livekit.io>
Co-authored-by: David Colburn <xero73@gmail.com>
2024-04-03 22:49:52 +02:00
Raja Subramanian
fc68e8d82b Add start/end time to analytics stream info (#673)
* Add start/end time to analytics stream info

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-03 12:02:58 +05:30
David Zhao
766ababa37 Include projectID in node snapshots (#672)
* Include projectID in node snapshots

* generated protobuf

* removed project_id from event & stat

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-31 13:31:40 -07:00
Denys Smirnov
93ff4a23a3 Add and option to play ringtone for SIP outbound calls. (#671) 2024-03-29 22:54:06 +02:00
Paul Wells
38f2e3216c add hedge retry helper (#670)
* add hedge retry helper

* cleanup

* fix
2024-03-28 09:48:12 -07:00
Denys Smirnov
e2c0cf8043 Support for converting Logger into slog.Handler. (#668)
This change allows to take an existing Logger and convert it into slog.Handler.

New ToSlogHandler function will check if the Logger implementation is a known one (Zap or Logr) and will convert it with package-specific functions.
2024-03-27 01:23:19 +02:00
Paul Wells
a512748415 simplify key types (#667) 2024-03-25 10:36:45 -07:00
shishirng
a2f6423fd1 Analytics client meta update (#665)
* add optional client meta fields
* generated protobuf

Signed-off-by: shishir gowda <shishir@livekit.io>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-22 14:53:01 -04:00
Paul Wells
9b0ad21a6f export client params options helper (#666) 2024-03-22 11:11:10 -07:00
Paul Wells
0d9caadf76 simplify timed version (#664) 2024-03-21 02:45:38 -07:00
78 changed files with 5283 additions and 2633 deletions

View File

@@ -37,7 +37,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.21
go-version-file: 'go.mod'
- name: Set up gotestfmt
run: go install github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@v2.4.1

2
.idea/.gitignore generated vendored
View File

@@ -6,3 +6,5 @@
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
# GitHub Copilot persisted chat sessions
/copilot/chatSessions

View File

@@ -1,5 +1,29 @@
# github.com/livekit/protocol
## 1.14.0
### Minor Changes
- Added real-time Transcription protocol - [#686](https://github.com/livekit/protocol/pull/686) ([@davidzhao](https://github.com/davidzhao))
- WHIP protocol change - [#680](https://github.com/livekit/protocol/pull/680) ([@biglittlebigben](https://github.com/biglittlebigben))
Deprecate the bypass_transcoding property in all ingress APIs and introduce the optional enable_transcoding property. This property will default to false for WHIP and to true for all other ingress types.
### Patch Changes
- Add SIP participant name. - [#687](https://github.com/livekit/protocol/pull/687) ([@dennwc](https://github.com/dennwc))
## 1.13.0
### Minor Changes
- Add and option to play ringtone for SIP outbound calls. - [#671](https://github.com/livekit/protocol/pull/671) ([@dennwc](https://github.com/dennwc))
### Patch Changes
- Add initial support for slog. - [#668](https://github.com/livekit/protocol/pull/668) ([@dennwc](https://github.com/dennwc))
## 1.12.0
### Minor Changes

31
agent/token.go Normal file
View File

@@ -0,0 +1,31 @@
package agent
import (
"time"
"github.com/livekit/protocol/auth"
"github.com/livekit/protocol/livekit"
)
func BuildAgentToken(apiKey, secret, roomName, participantIdentity, participantName, participantMetadata string, permissions *livekit.ParticipantPermission) (string, error) {
grant := &auth.VideoGrant{
RoomJoin: true,
Agent: true,
Room: roomName,
CanSubscribe: &permissions.CanSubscribe,
CanPublish: &permissions.CanPublish,
CanPublishData: &permissions.CanPublishData,
Hidden: permissions.Hidden,
CanUpdateOwnMetadata: &permissions.CanUpdateMetadata,
}
at := auth.NewAccessToken(apiKey, secret).
AddGrant(grant).
SetIdentity(participantIdentity).
SetName(participantName).
SetKind(livekit.ParticipantInfo_AGENT).
SetValidFor(1 * time.Hour).
SetMetadata(participantMetadata)
return at.ToJWT()
}

View File

@@ -45,6 +45,11 @@ type EncodedOutputDeprecated interface {
GetSegments() *livekit.SegmentedFileOutput
}
type DirectOutput interface {
GetFile() *livekit.DirectFileOutput
GetWebsocketUrl() string
}
func GetTypes(request interface{}) (string, string) {
switch req := request.(type) {
case *livekit.EgressInfo_RoomComposite:
@@ -60,48 +65,54 @@ func GetTypes(request interface{}) (string, string) {
return EgressTypeTrackComposite, GetOutputType(req.TrackComposite)
case *livekit.EgressInfo_Track:
switch req.Track.Output.(type) {
case *livekit.TrackEgressRequest_File:
return EgressTypeTrack, OutputTypeFile
case *livekit.TrackEgressRequest_WebsocketUrl:
return EgressTypeTrack, OutputTypeStream
}
return EgressTypeTrack, GetOutputType(req.Track)
}
return Unknown, Unknown
}
func GetOutputType(req EncodedOutput) string {
outputs := make([]string, 0)
if len(req.GetFileOutputs()) > 0 {
outputs = append(outputs, OutputTypeFile)
}
if len(req.GetStreamOutputs()) > 0 {
outputs = append(outputs, OutputTypeStream)
}
if len(req.GetSegmentOutputs()) > 0 {
outputs = append(outputs, OutputTypeSegments)
}
if len(req.GetImageOutputs()) > 0 {
outputs = append(outputs, OutputTypeImages)
func GetOutputType(req interface{}) string {
if r, ok := req.(EncodedOutput); ok {
outputs := make([]string, 0)
if len(r.GetFileOutputs()) > 0 {
outputs = append(outputs, OutputTypeFile)
}
if len(r.GetStreamOutputs()) > 0 {
outputs = append(outputs, OutputTypeStream)
}
if len(r.GetSegmentOutputs()) > 0 {
outputs = append(outputs, OutputTypeSegments)
}
if len(r.GetImageOutputs()) > 0 {
outputs = append(outputs, OutputTypeImages)
}
switch len(outputs) {
default:
return OutputTypeMultiple
case 1:
return outputs[0]
case 0:
if r, ok := req.(EncodedOutputDeprecated); ok {
if r.GetFile() != nil {
return OutputTypeFile
}
if r.GetStream() != nil {
return OutputTypeStream
}
if r.GetSegments() != nil {
return OutputTypeSegments
}
}
}
}
switch len(outputs) {
default:
return OutputTypeMultiple
case 1:
return outputs[0]
case 0:
if r, ok := req.(EncodedOutputDeprecated); ok {
if r.GetFile() != nil {
return OutputTypeFile
}
if r.GetStream() != nil {
return OutputTypeStream
}
if r.GetSegments() != nil {
return OutputTypeSegments
}
if r, ok := req.(DirectOutput); ok {
if r.GetFile() != nil {
return OutputTypeFile
}
if r.GetWebsocketUrl() != "" {
return OutputTypeStream
}
}

10
go.mod
View File

@@ -1,8 +1,9 @@
module github.com/livekit/protocol
go 1.21
go 1.22
require (
github.com/benbjohnson/clock v1.3.5
github.com/eapache/channels v1.1.0
github.com/frostbyte73/core v0.0.10
github.com/fsnotify/fsnotify v1.7.0
@@ -30,6 +31,7 @@ require (
go.uber.org/atomic v1.11.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
go.uber.org/zap/exp v0.2.0
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225
golang.org/x/mod v0.16.0
google.golang.org/grpc v1.62.0
@@ -68,10 +70,10 @@ require (
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.48.0 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/net v0.23.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.18.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect

14
go.sum
View File

@@ -1,3 +1,5 @@
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
@@ -188,6 +190,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.uber.org/zap/exp v0.2.0 h1:FtGenNNeCATRB3CmB/yEUnjEFeJWpB/pMcy7e2bKPYs=
go.uber.org/zap/exp v0.2.0/go.mod h1:t0gqAIdh1MfKv9EwN/dLwfZnJxe9ITAZN78HEWPFWDQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -196,8 +200,9 @@ golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ=
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -220,8 +225,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -252,8 +257,9 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=

View File

@@ -67,6 +67,11 @@ func ValidateForSerialization(info *livekit.IngressInfo) error {
return err
}
err = ValidateEnableTranscoding(info)
if err != nil {
return err
}
err = ValidateVideoOptionsConsistency(info.Video)
if err != nil {
return err
@@ -103,6 +108,35 @@ func ValidateBypassTranscoding(info *livekit.IngressInfo) error {
return nil
}
func ValidateEnableTranscoding(info *livekit.IngressInfo) error {
var enableTranscoding bool
if info.InputType == livekit.IngressInput_WHIP_INPUT {
enableTranscoding = false
if info.EnableTranscoding != nil {
enableTranscoding = *info.EnableTranscoding
}
} else {
enableTranscoding = true
if info.EnableTranscoding != nil && *info.EnableTranscoding == false {
return NewInvalidTranscodingBypassError("bypassing transcoding impossible with selected input type")
}
}
if !enableTranscoding {
videoOptions := info.Video
if videoOptions != nil && videoOptions.EncodingOptions != nil {
return NewInvalidTranscodingBypassError("video encoding options must be empty if transcoding is disabled")
}
audioOptions := info.Audio
if audioOptions != nil && audioOptions.EncodingOptions != nil {
return NewInvalidTranscodingBypassError("audio encoding options must be empty if transcoding is disabled")
}
}
return nil
}
func ValidateVideoOptionsConsistency(options *livekit.IngressVideoOptions) error {
if options == nil {
return nil

View File

@@ -100,6 +100,49 @@ func TestValidateBypassTranscoding(t *testing.T) {
}
func TestValidateEnableTranscoding(t *testing.T) {
info := &livekit.IngressInfo{}
T := true
F := false
err := ValidateEnableTranscoding(info)
require.NoError(t, err)
info.InputType = livekit.IngressInput_WHIP_INPUT
err = ValidateEnableTranscoding(info)
require.NoError(t, err)
info.Audio = &livekit.IngressAudioOptions{}
info.Audio.EncodingOptions = &livekit.IngressAudioOptions_Options{}
err = ValidateEnableTranscoding(info)
require.Error(t, err)
info.Audio.EncodingOptions = nil
info.EnableTranscoding = &T
err = ValidateEnableTranscoding(info)
require.NoError(t, err)
info.EnableTranscoding = &F
err = ValidateEnableTranscoding(info)
require.NoError(t, err)
info.Video = &livekit.IngressVideoOptions{}
info.Video.EncodingOptions = &livekit.IngressVideoOptions_Preset{}
err = ValidateEnableTranscoding(info)
require.Error(t, err)
info.Video.EncodingOptions = nil
info.InputType = livekit.IngressInput_RTMP_INPUT
err = ValidateEnableTranscoding(info)
require.Error(t, err)
info.EnableTranscoding = &T
err = ValidateEnableTranscoding(info)
require.NoError(t, err)
}
func TestValidateVideoOptionsConsistency(t *testing.T) {
video := &livekit.IngressVideoOptions{}
err := ValidateVideoOptionsConsistency(video)
@@ -219,6 +262,7 @@ func TestValidateVideoOptionsConsistency(t *testing.T) {
Quality: livekit.VideoQuality_HIGH,
},
}
err = ValidateVideoOptionsConsistency(video)
require.NoError(t, err)
}

File diff suppressed because it is too large Load Diff

View File

@@ -297,6 +297,8 @@ type AnalyticsStream struct {
Plis uint32 `protobuf:"varint,13,opt,name=plis,proto3" json:"plis,omitempty"`
Firs uint32 `protobuf:"varint,14,opt,name=firs,proto3" json:"firs,omitempty"`
VideoLayers []*AnalyticsVideoLayer `protobuf:"bytes,15,rep,name=video_layers,json=videoLayers,proto3" json:"video_layers,omitempty"`
StartTime *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
EndTime *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}
func (x *AnalyticsStream) Reset() {
@@ -436,6 +438,20 @@ func (x *AnalyticsStream) GetVideoLayers() []*AnalyticsVideoLayer {
return nil
}
func (x *AnalyticsStream) GetStartTime() *timestamppb.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *AnalyticsStream) GetEndTime() *timestamppb.Timestamp {
if x != nil {
return x.EndTime
}
return nil
}
type AnalyticsStat struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -454,7 +470,6 @@ type AnalyticsStat struct {
Mime string `protobuf:"bytes,11,opt,name=mime,proto3" json:"mime,omitempty"`
MinScore float32 `protobuf:"fixed32,12,opt,name=min_score,json=minScore,proto3" json:"min_score,omitempty"`
MedianScore float32 `protobuf:"fixed32,13,opt,name=median_score,json=medianScore,proto3" json:"median_score,omitempty"`
ProjectId string `protobuf:"bytes,14,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
}
func (x *AnalyticsStat) Reset() {
@@ -580,13 +595,6 @@ func (x *AnalyticsStat) GetMedianScore() float32 {
return 0
}
func (x *AnalyticsStat) GetProjectId() string {
if x != nil {
return x.ProjectId
}
return ""
}
type AnalyticsStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -646,6 +654,9 @@ type AnalyticsClientMeta struct {
// udp, tcp, turn
ConnectionType string `protobuf:"bytes,5,opt,name=connection_type,json=connectionType,proto3" json:"connection_type,omitempty"`
ReconnectReason ReconnectReason `protobuf:"varint,6,opt,name=reconnect_reason,json=reconnectReason,proto3,enum=livekit.ReconnectReason" json:"reconnect_reason,omitempty"`
GeoHash *string `protobuf:"bytes,7,opt,name=geo_hash,json=geoHash,proto3,oneof" json:"geo_hash,omitempty"`
Country *string `protobuf:"bytes,8,opt,name=country,proto3,oneof" json:"country,omitempty"`
IspAsn *uint32 `protobuf:"varint,9,opt,name=isp_asn,json=ispAsn,proto3,oneof" json:"isp_asn,omitempty"`
}
func (x *AnalyticsClientMeta) Reset() {
@@ -722,6 +733,27 @@ func (x *AnalyticsClientMeta) GetReconnectReason() ReconnectReason {
return ReconnectReason_RR_UNKNOWN
}
func (x *AnalyticsClientMeta) GetGeoHash() string {
if x != nil && x.GeoHash != nil {
return *x.GeoHash
}
return ""
}
func (x *AnalyticsClientMeta) GetCountry() string {
if x != nil && x.Country != nil {
return *x.Country
}
return ""
}
func (x *AnalyticsClientMeta) GetIspAsn() uint32 {
if x != nil && x.IspAsn != nil {
return *x.IspAsn
}
return 0
}
type AnalyticsEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -748,7 +780,6 @@ type AnalyticsEvent struct {
Error string `protobuf:"bytes,20,opt,name=error,proto3" json:"error,omitempty"`
RtpStats *RTPStats `protobuf:"bytes,21,opt,name=rtp_stats,json=rtpStats,proto3" json:"rtp_stats,omitempty"`
VideoLayer int32 `protobuf:"varint,22,opt,name=video_layer,json=videoLayer,proto3" json:"video_layer,omitempty"`
ProjectId string `protobuf:"bytes,23,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
}
func (x *AnalyticsEvent) Reset() {
@@ -930,13 +961,6 @@ func (x *AnalyticsEvent) GetVideoLayer() int32 {
return 0
}
func (x *AnalyticsEvent) GetProjectId() string {
if x != nil {
return x.ProjectId
}
return ""
}
type AnalyticsEvents struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1070,6 +1094,7 @@ type AnalyticsRoom struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
Participants []*AnalyticsRoomParticipant `protobuf:"bytes,4,rep,name=participants,proto3" json:"participants,omitempty"`
}
@@ -1120,6 +1145,13 @@ func (x *AnalyticsRoom) GetName() string {
return ""
}
func (x *AnalyticsRoom) GetProjectId() string {
if x != nil {
return x.ProjectId
}
return ""
}
func (x *AnalyticsRoom) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
@@ -1225,7 +1257,7 @@ var file_livekit_analytics_proto_rawDesc = []byte{
0x0d, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79,
0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73,
0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xff, 0x03, 0x0a, 0x0f, 0x41, 0x6e, 0x61,
0x52, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf1, 0x04, 0x0a, 0x0f, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04,
0x73, 0x73, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x73, 0x72, 0x63,
0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b,
@@ -1257,223 +1289,236 @@ var file_livekit_analytics_proto_rawDesc = []byte{
0x65, 0x6f, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b, 0x76,
0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0xe1, 0x03, 0x0a, 0x0d, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0d,
0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x4b, 0x65,
0x79, 0x12, 0x27, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69,
0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74,
0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f,
0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d,
0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69,
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f,
0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x49,
0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02,
0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x52, 0x07, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d,
0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69, 0x6d, 0x65, 0x12,
0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01,
0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c,
0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x02, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x3e,
0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73,
0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x80,
0x02, 0x0a, 0x13, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f,
0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64,
0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41,
0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x10,
0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x22, 0xbc, 0x07, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52,
0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x70,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x19,
0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x72, 0x61,
0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72,
0x61, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d,
0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x0c, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74,
0x61, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a,
0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x56, 0x0a, 0x1c, 0x6d, 0x61, 0x78,
0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x76, 0x69, 0x64, 0x65,
0x6f, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51,
0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x19, 0x6d, 0x61, 0x78, 0x53, 0x75, 0x62, 0x73, 0x63,
0x72, 0x69, 0x62, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74,
0x79, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x0f,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x69, 0x6d,
0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a,
0x06, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x06, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x69, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72,
0x72, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x12, 0x2e, 0x0a, 0x09, 0x72, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x15, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x54,
0x50, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x72, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73,
0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18,
0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65,
0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64,
0x22, 0x42, 0x0a, 0x0f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x18, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65,
0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74,
0x22, 0xb5, 0x01, 0x0a, 0x0d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x6f,
0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x74, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x50,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x12, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x73, 0x12,
0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75,
0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
0x04, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65,
0x72, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x05, 0x72,
0x6f, 0x6f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x6f,
0x6f, 0x6d, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x2a, 0x2a, 0x0a, 0x0a, 0x53, 0x74, 0x72,
0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, 0x53, 0x54, 0x52,
0x45, 0x41, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x57, 0x4e, 0x53, 0x54, 0x52,
0x45, 0x41, 0x4d, 0x10, 0x01, 0x2a, 0x95, 0x05, 0x0a, 0x12, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c,
0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e,
0x0a, 0x0a, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16,
0x0a, 0x12, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4a, 0x4f,
0x49, 0x4e, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43,
0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f,
0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10,
0x04, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49,
0x53, 0x48, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x14, 0x12, 0x15,
0x0a, 0x11, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53,
0x48, 0x45, 0x44, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x53,
0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x54,
0x52, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f, 0x52,
0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x15, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52,
0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f, 0x46, 0x41,
0x49, 0x4c, 0x45, 0x44, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f,
0x55, 0x4e, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x07, 0x12, 0x1a,
0x0a, 0x16, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45,
0x44, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x52,
0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x44, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x54,
0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x4d, 0x55, 0x54, 0x45, 0x44, 0x10, 0x18, 0x12, 0x17,
0x0a, 0x13, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x1a, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52, 0x41, 0x43, 0x4b,
0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53,
0x10, 0x1b, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e,
0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41,
0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45,
0x44, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x54,
0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x47, 0x52, 0x45, 0x53,
0x53, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x47, 0x52,
0x45, 0x53, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x1c, 0x12, 0x26, 0x0a,
0x22, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43,
0x52, 0x49, 0x42, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c,
0x49, 0x54, 0x59, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45,
0x43, 0x54, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53,
0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x49,
0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x13,
0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52,
0x54, 0x45, 0x44, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53,
0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x47, 0x52,
0x45, 0x53, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x1d, 0x32, 0xf5, 0x01,
0x0a, 0x18, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x49, 0x6e,
0x67, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x61,
0x74, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x12, 0x44,
0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x22, 0x00, 0x28, 0x01, 0x12, 0x4f, 0x0a, 0x14, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x4e, 0x6f,
0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x6c,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc2, 0x03, 0x0a,
0x0d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x12, 0x23,
0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65,
0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x0a,
0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72,
0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69,
0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63,
0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63,
0x6b, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01,
0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x74, 0x72,
0x65, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74,
0x72, 0x65, 0x61, 0x6d, 0x52, 0x07, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a,
0x04, 0x6d, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69, 0x6d,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c,
0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21,
0x0a, 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x63, 0x6f, 0x72,
0x65, 0x22, 0x3e, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74,
0x61, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74,
0x73, 0x22, 0x82, 0x03, 0x0a, 0x13, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67,
0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
0x61, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
0x43, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65,
0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x67, 0x65, 0x6f, 0x5f, 0x68, 0x61, 0x73, 0x68,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6f, 0x48, 0x61, 0x73,
0x68, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18,
0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79,
0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x69, 0x73, 0x70, 0x5f, 0x61, 0x73, 0x6e, 0x18, 0x09,
0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x69, 0x73, 0x70, 0x41, 0x73, 0x6e, 0x88, 0x01,
0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, 0x65, 0x6f, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0a,
0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69,
0x73, 0x70, 0x5f, 0x61, 0x73, 0x6e, 0x22, 0x9d, 0x07, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x21, 0x0a,
0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d,
0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f,
0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69,
0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
0x61, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x28,
0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a,
0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65,
0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65,
0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18,
0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12,
0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x56,
0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64,
0x5f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0e,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56,
0x69, 0x64, 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x19, 0x6d, 0x61, 0x78,
0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51,
0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
0x68, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x12,
0x0a, 0x04, 0x6d, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69,
0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x11, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x45, 0x67, 0x72,
0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12,
0x2e, 0x0a, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65,
0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12,
0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x09, 0x72, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x52, 0x54, 0x50, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x72, 0x74, 0x70,
0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65,
0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x0f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x18, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a,
0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6a, 0x6f,
0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x22, 0xd4, 0x01, 0x0a, 0x0d, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x22, 0x00, 0x28, 0x01, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c,
0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c,
0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52,
0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0xbe, 0x01,
0x0a, 0x12, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52,
0x6f, 0x6f, 0x6d, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a,
0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x12, 0x2c, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x2a, 0x2a,
0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08,
0x55, 0x50, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f,
0x57, 0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x01, 0x2a, 0x95, 0x05, 0x0a, 0x12, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
0x65, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45,
0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x45,
0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41,
0x4e, 0x54, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50,
0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10,
0x03, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49,
0x53, 0x48, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f,
0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45,
0x44, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50,
0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52,
0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x06,
0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
0x49, 0x42, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x15, 0x12,
0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49,
0x42, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x54,
0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45,
0x44, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42,
0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12,
0x0f, 0x0a, 0x0b, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x44, 0x10, 0x17,
0x12, 0x11, 0x0a, 0x0d, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x4d, 0x55, 0x54, 0x45,
0x44, 0x10, 0x18, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x55, 0x42,
0x4c, 0x49, 0x53, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x1a, 0x12, 0x19, 0x0a, 0x15,
0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x1b, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x52, 0x54, 0x49,
0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x0b, 0x12,
0x17, 0x0a, 0x13, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x52,
0x45, 0x53, 0x55, 0x4d, 0x45, 0x44, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x47, 0x52, 0x45,
0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c,
0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x12,
0x0a, 0x0e, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44,
0x10, 0x1c, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x41, 0x58, 0x5f,
0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f,
0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45,
0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x49,
0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x12,
0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45,
0x54, 0x45, 0x44, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53,
0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e,
0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x11, 0x12, 0x13, 0x0a,
0x0f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44,
0x10, 0x1d, 0x32, 0xf5, 0x01, 0x0a, 0x18, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
0x42, 0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x17,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
0x00, 0x28, 0x01, 0x12, 0x44, 0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4f, 0x0a, 0x14, 0x49, 0x6e, 0x67,
0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
0x73, 0x12, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x73, 0x1a, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1518,41 +1563,43 @@ var file_livekit_analytics_proto_goTypes = []interface{}{
}
var file_livekit_analytics_proto_depIdxs = []int32{
2, // 0: livekit.AnalyticsStream.video_layers:type_name -> livekit.AnalyticsVideoLayer
0, // 1: livekit.AnalyticsStat.kind:type_name -> livekit.StreamType
12, // 2: livekit.AnalyticsStat.time_stamp:type_name -> google.protobuf.Timestamp
3, // 3: livekit.AnalyticsStat.streams:type_name -> livekit.AnalyticsStream
4, // 4: livekit.AnalyticsStats.stats:type_name -> livekit.AnalyticsStat
13, // 5: livekit.AnalyticsClientMeta.reconnect_reason:type_name -> livekit.ReconnectReason
1, // 6: livekit.AnalyticsEvent.type:type_name -> livekit.AnalyticsEventType
12, // 7: livekit.AnalyticsEvent.timestamp:type_name -> google.protobuf.Timestamp
14, // 8: livekit.AnalyticsEvent.room:type_name -> livekit.Room
15, // 9: livekit.AnalyticsEvent.participant:type_name -> livekit.ParticipantInfo
16, // 10: livekit.AnalyticsEvent.track:type_name -> livekit.TrackInfo
17, // 11: livekit.AnalyticsEvent.client_info:type_name -> livekit.ClientInfo
6, // 12: livekit.AnalyticsEvent.client_meta:type_name -> livekit.AnalyticsClientMeta
18, // 13: livekit.AnalyticsEvent.max_subscribed_video_quality:type_name -> livekit.VideoQuality
15, // 14: livekit.AnalyticsEvent.publisher:type_name -> livekit.ParticipantInfo
19, // 15: livekit.AnalyticsEvent.egress:type_name -> livekit.EgressInfo
20, // 16: livekit.AnalyticsEvent.ingress:type_name -> livekit.IngressInfo
21, // 17: livekit.AnalyticsEvent.rtp_stats:type_name -> livekit.RTPStats
7, // 18: livekit.AnalyticsEvents.events:type_name -> livekit.AnalyticsEvent
22, // 19: livekit.AnalyticsRoomParticipant.state:type_name -> livekit.ParticipantInfo.State
12, // 20: livekit.AnalyticsRoomParticipant.joined_at:type_name -> google.protobuf.Timestamp
12, // 21: livekit.AnalyticsRoom.created_at:type_name -> google.protobuf.Timestamp
9, // 22: livekit.AnalyticsRoom.participants:type_name -> livekit.AnalyticsRoomParticipant
12, // 23: livekit.AnalyticsNodeRooms.timestamp:type_name -> google.protobuf.Timestamp
10, // 24: livekit.AnalyticsNodeRooms.rooms:type_name -> livekit.AnalyticsRoom
5, // 25: livekit.AnalyticsRecorderService.IngestStats:input_type -> livekit.AnalyticsStats
8, // 26: livekit.AnalyticsRecorderService.IngestEvents:input_type -> livekit.AnalyticsEvents
11, // 27: livekit.AnalyticsRecorderService.IngestNodeRoomStates:input_type -> livekit.AnalyticsNodeRooms
23, // 28: livekit.AnalyticsRecorderService.IngestStats:output_type -> google.protobuf.Empty
23, // 29: livekit.AnalyticsRecorderService.IngestEvents:output_type -> google.protobuf.Empty
23, // 30: livekit.AnalyticsRecorderService.IngestNodeRoomStates:output_type -> google.protobuf.Empty
28, // [28:31] is the sub-list for method output_type
25, // [25:28] is the sub-list for method input_type
25, // [25:25] is the sub-list for extension type_name
25, // [25:25] is the sub-list for extension extendee
0, // [0:25] is the sub-list for field type_name
12, // 1: livekit.AnalyticsStream.start_time:type_name -> google.protobuf.Timestamp
12, // 2: livekit.AnalyticsStream.end_time:type_name -> google.protobuf.Timestamp
0, // 3: livekit.AnalyticsStat.kind:type_name -> livekit.StreamType
12, // 4: livekit.AnalyticsStat.time_stamp:type_name -> google.protobuf.Timestamp
3, // 5: livekit.AnalyticsStat.streams:type_name -> livekit.AnalyticsStream
4, // 6: livekit.AnalyticsStats.stats:type_name -> livekit.AnalyticsStat
13, // 7: livekit.AnalyticsClientMeta.reconnect_reason:type_name -> livekit.ReconnectReason
1, // 8: livekit.AnalyticsEvent.type:type_name -> livekit.AnalyticsEventType
12, // 9: livekit.AnalyticsEvent.timestamp:type_name -> google.protobuf.Timestamp
14, // 10: livekit.AnalyticsEvent.room:type_name -> livekit.Room
15, // 11: livekit.AnalyticsEvent.participant:type_name -> livekit.ParticipantInfo
16, // 12: livekit.AnalyticsEvent.track:type_name -> livekit.TrackInfo
17, // 13: livekit.AnalyticsEvent.client_info:type_name -> livekit.ClientInfo
6, // 14: livekit.AnalyticsEvent.client_meta:type_name -> livekit.AnalyticsClientMeta
18, // 15: livekit.AnalyticsEvent.max_subscribed_video_quality:type_name -> livekit.VideoQuality
15, // 16: livekit.AnalyticsEvent.publisher:type_name -> livekit.ParticipantInfo
19, // 17: livekit.AnalyticsEvent.egress:type_name -> livekit.EgressInfo
20, // 18: livekit.AnalyticsEvent.ingress:type_name -> livekit.IngressInfo
21, // 19: livekit.AnalyticsEvent.rtp_stats:type_name -> livekit.RTPStats
7, // 20: livekit.AnalyticsEvents.events:type_name -> livekit.AnalyticsEvent
22, // 21: livekit.AnalyticsRoomParticipant.state:type_name -> livekit.ParticipantInfo.State
12, // 22: livekit.AnalyticsRoomParticipant.joined_at:type_name -> google.protobuf.Timestamp
12, // 23: livekit.AnalyticsRoom.created_at:type_name -> google.protobuf.Timestamp
9, // 24: livekit.AnalyticsRoom.participants:type_name -> livekit.AnalyticsRoomParticipant
12, // 25: livekit.AnalyticsNodeRooms.timestamp:type_name -> google.protobuf.Timestamp
10, // 26: livekit.AnalyticsNodeRooms.rooms:type_name -> livekit.AnalyticsRoom
5, // 27: livekit.AnalyticsRecorderService.IngestStats:input_type -> livekit.AnalyticsStats
8, // 28: livekit.AnalyticsRecorderService.IngestEvents:input_type -> livekit.AnalyticsEvents
11, // 29: livekit.AnalyticsRecorderService.IngestNodeRoomStates:input_type -> livekit.AnalyticsNodeRooms
23, // 30: livekit.AnalyticsRecorderService.IngestStats:output_type -> google.protobuf.Empty
23, // 31: livekit.AnalyticsRecorderService.IngestEvents:output_type -> google.protobuf.Empty
23, // 32: livekit.AnalyticsRecorderService.IngestNodeRoomStates:output_type -> google.protobuf.Empty
30, // [30:33] is the sub-list for method output_type
27, // [27:30] is the sub-list for method input_type
27, // [27:27] is the sub-list for extension type_name
27, // [27:27] is the sub-list for extension extendee
0, // [0:27] is the sub-list for field type_name
}
func init() { file_livekit_analytics_proto_init() }
@@ -1685,6 +1732,7 @@ func file_livekit_analytics_proto_init() {
}
}
}
file_livekit_analytics_proto_msgTypes[4].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View File

@@ -272,8 +272,12 @@ type CreateIngressRequest struct {
ParticipantName string `protobuf:"bytes,5,opt,name=participant_name,json=participantName,proto3" json:"participant_name,omitempty"`
// metadata associated with the publishing participant
ParticipantMetadata string `protobuf:"bytes,10,opt,name=participant_metadata,json=participantMetadata,proto3" json:"participant_metadata,omitempty"`
// whether to pass through the incoming media without transcoding, only compatible with some input types
BypassTranscoding bool `protobuf:"varint,8,opt,name=bypass_transcoding,json=bypassTranscoding,proto3" json:"bypass_transcoding,omitempty"`
// [depreacted ] whether to pass through the incoming media without transcoding, only compatible with some input types. Use `enable_transcoding` instead.
//
// Deprecated: Marked as deprecated in livekit_ingress.proto.
BypassTranscoding bool `protobuf:"varint,8,opt,name=bypass_transcoding,json=bypassTranscoding,proto3" json:"bypass_transcoding,omitempty"`
// Whether to transcode the ingested media. Only WHIP supports disabling transcoding currently. WHIP will default to transcoding disabled. Replaces `bypass_transcoding.
EnableTranscoding *bool `protobuf:"varint,11,opt,name=enable_transcoding,json=enableTranscoding,proto3,oneof" json:"enable_transcoding,omitempty"`
Audio *IngressAudioOptions `protobuf:"bytes,6,opt,name=audio,proto3" json:"audio,omitempty"`
Video *IngressVideoOptions `protobuf:"bytes,7,opt,name=video,proto3" json:"video,omitempty"`
}
@@ -359,6 +363,7 @@ func (x *CreateIngressRequest) GetParticipantMetadata() string {
return ""
}
// Deprecated: Marked as deprecated in livekit_ingress.proto.
func (x *CreateIngressRequest) GetBypassTranscoding() bool {
if x != nil {
return x.BypassTranscoding
@@ -366,6 +371,13 @@ func (x *CreateIngressRequest) GetBypassTranscoding() bool {
return false
}
func (x *CreateIngressRequest) GetEnableTranscoding() bool {
if x != nil && x.EnableTranscoding != nil {
return *x.EnableTranscoding
}
return false
}
func (x *CreateIngressRequest) GetAudio() *IngressAudioOptions {
if x != nil {
return x.Audio
@@ -723,8 +735,10 @@ type IngressInfo struct {
// for RTMP input, it'll be a rtmp:// URL
// for FILE input, it'll be a http:// URL
// for SRT input, it'll be a srt:// URL
InputType IngressInput `protobuf:"varint,5,opt,name=input_type,json=inputType,proto3,enum=livekit.IngressInput" json:"input_type,omitempty"`
InputType IngressInput `protobuf:"varint,5,opt,name=input_type,json=inputType,proto3,enum=livekit.IngressInput" json:"input_type,omitempty"`
// Deprecated: Marked as deprecated in livekit_ingress.proto.
BypassTranscoding bool `protobuf:"varint,13,opt,name=bypass_transcoding,json=bypassTranscoding,proto3" json:"bypass_transcoding,omitempty"`
EnableTranscoding *bool `protobuf:"varint,15,opt,name=enable_transcoding,json=enableTranscoding,proto3,oneof" json:"enable_transcoding,omitempty"`
Audio *IngressAudioOptions `protobuf:"bytes,6,opt,name=audio,proto3" json:"audio,omitempty"`
Video *IngressVideoOptions `protobuf:"bytes,7,opt,name=video,proto3" json:"video,omitempty"`
RoomName string `protobuf:"bytes,8,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
@@ -802,6 +816,7 @@ func (x *IngressInfo) GetInputType() IngressInput {
return IngressInput_RTMP_INPUT
}
// Deprecated: Marked as deprecated in livekit_ingress.proto.
func (x *IngressInfo) GetBypassTranscoding() bool {
if x != nil {
return x.BypassTranscoding
@@ -809,6 +824,13 @@ func (x *IngressInfo) GetBypassTranscoding() bool {
return false
}
func (x *IngressInfo) GetEnableTranscoding() bool {
if x != nil && x.EnableTranscoding != nil {
return *x.EnableTranscoding
}
return false
}
func (x *IngressInfo) GetAudio() *IngressAudioOptions {
if x != nil {
return x.Audio
@@ -877,6 +899,7 @@ type IngressState struct {
RoomId string `protobuf:"bytes,5,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` // ID of the current/previous room published to
StartedAt int64 `protobuf:"varint,7,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
EndedAt int64 `protobuf:"varint,8,opt,name=ended_at,json=endedAt,proto3" json:"ended_at,omitempty"`
UpdatedAt int64 `protobuf:"varint,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
ResourceId string `protobuf:"bytes,9,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
Tracks []*TrackInfo `protobuf:"bytes,6,rep,name=tracks,proto3" json:"tracks,omitempty"`
}
@@ -962,6 +985,13 @@ func (x *IngressState) GetEndedAt() int64 {
return 0
}
func (x *IngressState) GetUpdatedAt() int64 {
if x != nil {
return x.UpdatedAt
}
return 0
}
func (x *IngressState) GetResourceId() string {
if x != nil {
return x.ResourceId
@@ -1131,15 +1161,17 @@ type UpdateIngressRequest struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
IngressId string `protobuf:"bytes,1,opt,name=ingress_id,json=ingressId,proto3" json:"ingress_id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
RoomName string `protobuf:"bytes,3,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
ParticipantIdentity string `protobuf:"bytes,4,opt,name=participant_identity,json=participantIdentity,proto3" json:"participant_identity,omitempty"`
ParticipantName string `protobuf:"bytes,5,opt,name=participant_name,json=participantName,proto3" json:"participant_name,omitempty"`
ParticipantMetadata string `protobuf:"bytes,9,opt,name=participant_metadata,json=participantMetadata,proto3" json:"participant_metadata,omitempty"`
BypassTranscoding *bool `protobuf:"varint,8,opt,name=bypass_transcoding,json=bypassTranscoding,proto3,oneof" json:"bypass_transcoding,omitempty"`
Audio *IngressAudioOptions `protobuf:"bytes,6,opt,name=audio,proto3" json:"audio,omitempty"`
Video *IngressVideoOptions `protobuf:"bytes,7,opt,name=video,proto3" json:"video,omitempty"`
IngressId string `protobuf:"bytes,1,opt,name=ingress_id,json=ingressId,proto3" json:"ingress_id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
RoomName string `protobuf:"bytes,3,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
ParticipantIdentity string `protobuf:"bytes,4,opt,name=participant_identity,json=participantIdentity,proto3" json:"participant_identity,omitempty"`
ParticipantName string `protobuf:"bytes,5,opt,name=participant_name,json=participantName,proto3" json:"participant_name,omitempty"`
ParticipantMetadata string `protobuf:"bytes,9,opt,name=participant_metadata,json=participantMetadata,proto3" json:"participant_metadata,omitempty"`
// Deprecated: Marked as deprecated in livekit_ingress.proto.
BypassTranscoding *bool `protobuf:"varint,8,opt,name=bypass_transcoding,json=bypassTranscoding,proto3,oneof" json:"bypass_transcoding,omitempty"`
EnableTranscoding *bool `protobuf:"varint,10,opt,name=enable_transcoding,json=enableTranscoding,proto3,oneof" json:"enable_transcoding,omitempty"`
Audio *IngressAudioOptions `protobuf:"bytes,6,opt,name=audio,proto3" json:"audio,omitempty"`
Video *IngressVideoOptions `protobuf:"bytes,7,opt,name=video,proto3" json:"video,omitempty"`
}
func (x *UpdateIngressRequest) Reset() {
@@ -1216,6 +1248,7 @@ func (x *UpdateIngressRequest) GetParticipantMetadata() string {
return ""
}
// Deprecated: Marked as deprecated in livekit_ingress.proto.
func (x *UpdateIngressRequest) GetBypassTranscoding() bool {
if x != nil && x.BypassTranscoding != nil {
return *x.BypassTranscoding
@@ -1223,6 +1256,13 @@ func (x *UpdateIngressRequest) GetBypassTranscoding() bool {
return false
}
func (x *UpdateIngressRequest) GetEnableTranscoding() bool {
if x != nil && x.EnableTranscoding != nil {
return *x.EnableTranscoding
}
return false
}
func (x *UpdateIngressRequest) GetAudio() *IngressAudioOptions {
if x != nil {
return x.Audio
@@ -1393,7 +1433,7 @@ var file_livekit_ingress_proto_rawDesc = []byte{
0x0a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x1a, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x03, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x04, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x34, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e,
@@ -1411,248 +1451,265 @@ var file_livekit_ingress_proto_rawDesc = []byte{
0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x12, 0x62, 0x79, 0x70,
0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x12, 0x62, 0x79, 0x70,
0x61, 0x73, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18,
0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61,
0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69,
0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x32, 0x0a, 0x05,
0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64,
0x65, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f,
0x22, 0xec, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69,
0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x72,
0x65, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69,
0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x48,
0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69,
0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x48, 0x00, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x65,
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
0xec, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73,
0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x12,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69,
0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01,
0x12, 0x32, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61,
0x75, 0x64, 0x69, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x07, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22,
0xec, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x72, 0x65,
0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f,
0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x48, 0x00,
0x52, 0x06, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f,
0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48,
0x00, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x65, 0x6e,
0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa,
0x01, 0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x45,
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34,
0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x75,
0x64, 0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x0a, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x43,
0x6f, 0x64, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1f,
0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x74, 0x78, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x74, 0x78, 0x12,
0x1a, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x1b,
0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xec,
0x01, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x73,
0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x45,
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52,
0x06, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x45,
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00,
0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x65, 0x6e, 0x63,
0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa, 0x01,
0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x45, 0x6e,
0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a,
0x0b, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x75, 0x64,
0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x0a, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f,
0x64, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a,
0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x74, 0x78, 0x18, 0x03, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x74, 0x78, 0x12, 0x1a,
0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x1b, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64,
0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x76, 0x69,
0x64, 0x65, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43,
0x6f, 0x64, 0x65, 0x63, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63,
0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12,
0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c,
0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x84, 0x05, 0x0a,
0x0b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a,
0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4b, 0x65, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
0x12, 0x34, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x09, 0x69, 0x6e, 0x70,
0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73,
0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x54, 0x72,
0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x12, 0x65, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54,
0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a,
0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75,
0x64, 0x69, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69,
0x6f, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65,
0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05,
0x76, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12,
0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13,
0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64,
0x69, 0x6e, 0x67, 0x22, 0xf6, 0x03, 0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72,
0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x12, 0x2e, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x56,
0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f,
0x12, 0x2e, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41,
0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61,
0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73,
0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65,
0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65,
0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69,
0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72,
0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x22,
0x7b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44,
0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00,
0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x55, 0x46,
0x46, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x44, 0x50,
0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10,
0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x45, 0x52,
0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e,
0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x22, 0xa3, 0x01, 0x0a,
0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a,
0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x42,
0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65,
0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x74,
0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x72, 0x61,
0x74, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x75, 0x64, 0x69,
0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54,
0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62,
0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x76,
0x65, 0x72, 0x61, 0x67, 0x65, 0x42, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08,
0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0xf9, 0x03, 0x0a, 0x14, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49,
0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x12, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x72,
0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42,
0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61,
0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x65,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e,
0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12,
0x32, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61, 0x75,
0x64, 0x69, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x07, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67,
0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x62, 0x79, 0x70, 0x61,
0x73, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x15,
0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63,
0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x50, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67,
0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72,
0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72,
0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a,
0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x35, 0x0a, 0x14, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49,
0x64, 0x2a, 0x3d, 0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75,
0x74, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10,
0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x48, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10,
0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x52, 0x4c, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x02,
0x2a, 0x49, 0x0a, 0x1a, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f,
0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x16,
0x0a, 0x12, 0x4f, 0x50, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x39, 0x36,
0x4b, 0x42, 0x50, 0x53, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x55, 0x53, 0x5f, 0x4d,
0x4f, 0x4e, 0x4f, 0x5f, 0x36, 0x34, 0x4b, 0x42, 0x53, 0x10, 0x01, 0x2a, 0x84, 0x03, 0x0a, 0x1a,
0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x45, 0x6e, 0x63, 0x6f,
0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x76,
0x69, 0x64, 0x65, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x64, 0x65,
0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65,
0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0xb5, 0x04,
0x0a, 0x0b, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a,
0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4b, 0x65, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
0x6c, 0x12, 0x34, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e,
0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x09, 0x69, 0x6e,
0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x62, 0x79, 0x70, 0x61, 0x73,
0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x08, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73,
0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e,
0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x69,
0x64, 0x65, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1b,
0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69,
0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29,
0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72,
0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08,
0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05,
0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xd7, 0x03, 0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05,
0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75,
0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x69, 0x64,
0x65, 0x6f, 0x12, 0x2e, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75,
0x74, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x75, 0x64,
0x69, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e,
0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e,
0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73,
0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63,
0x6b, 0x73, 0x22, 0x7b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11,
0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56,
0x45, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f,
0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45,
0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x49,
0x4e, 0x47, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54,
0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x50,
0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x22,
0xa3, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x72,
0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x76, 0x65, 0x72, 0x61,
0x67, 0x65, 0x42, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64,
0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12,
0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65,
0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d,
0x65, 0x72, 0x61, 0x74, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41,
0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d,
0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69,
0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67,
0x65, 0x5f, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0e, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x42, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12,
0x1a, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0xaa, 0x03, 0x0a,
0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65,
0x73, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d,
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f,
0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28,
0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x12, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73,
0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01,
0x28, 0x08, 0x48, 0x00, 0x52, 0x11, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61, 0x6e,
0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x75,
0x64, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x32,
0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56,
0x69, 0x64, 0x65, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x69, 0x64,
0x65, 0x6f, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x72,
0x61, 0x6e, 0x73, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x50, 0x0a, 0x12, 0x4c, 0x69, 0x73,
0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x13, 0x4c,
0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72,
0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x35,
0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x67, 0x72,
0x65, 0x73, 0x73, 0x49, 0x64, 0x2a, 0x3d, 0x0a, 0x0c, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x4d, 0x50, 0x5f, 0x49, 0x4e,
0x50, 0x55, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x48, 0x49, 0x50, 0x5f, 0x49, 0x4e,
0x50, 0x55, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x52, 0x4c, 0x5f, 0x49, 0x4e, 0x50,
0x55, 0x54, 0x10, 0x02, 0x2a, 0x49, 0x0a, 0x1a, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41,
0x75, 0x64, 0x69, 0x6f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73,
0x65, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45,
0x4f, 0x5f, 0x39, 0x36, 0x4b, 0x42, 0x50, 0x53, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50,
0x55, 0x53, 0x5f, 0x4d, 0x4f, 0x4e, 0x4f, 0x5f, 0x36, 0x34, 0x4b, 0x42, 0x53, 0x10, 0x01, 0x2a,
0x84, 0x03, 0x0a, 0x1a, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f,
0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x1c,
0x0a, 0x18, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50,
0x53, 0x5f, 0x33, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19,
0x48, 0x32, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53,
0x5f, 0x33, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x48,
0x32, 0x36, 0x34, 0x5f, 0x35, 0x34, 0x30, 0x50, 0x5f, 0x32, 0x35, 0x46, 0x50, 0x53, 0x5f, 0x32,
0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x32, 0x36,
0x34, 0x5f, 0x37, 0x32, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x31,
0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32, 0x30,
0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x33, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53,
0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x29,
0x0a, 0x25, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46,
0x50, 0x53, 0x5f, 0x33, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x49, 0x47, 0x48,
0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x32, 0x36,
0x34, 0x5f, 0x35, 0x34, 0x30, 0x50, 0x5f, 0x32, 0x35, 0x46, 0x50, 0x53, 0x5f, 0x32, 0x5f, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f,
0x4e, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32, 0x30, 0x50,
0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x48,
0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24,
0x48, 0x32, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53,
0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f,
0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x32, 0xa5, 0x02, 0x0a, 0x07, 0x49, 0x6e, 0x67, 0x72, 0x65,
0x73, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72,
0x65, 0x73, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67,
0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48,
0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72,
0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x46,
0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a,
0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x32,
0x36, 0x34, 0x5f, 0x37, 0x32, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x33, 0x5f,
0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x48, 0x32, 0x36, 0x34,
0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x33, 0x5f, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x32, 0x36, 0x34, 0x5f,
0x35, 0x34, 0x30, 0x50, 0x5f, 0x32, 0x35, 0x46, 0x50, 0x53, 0x5f, 0x32, 0x5f, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32,
0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50,
0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x04,
0x12, 0x28, 0x0a, 0x24, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32, 0x30, 0x50, 0x5f, 0x33, 0x30,
0x46, 0x50, 0x53, 0x5f, 0x33, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x49, 0x47,
0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x48, 0x32,
0x36, 0x34, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x33,
0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54,
0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x35, 0x34,
0x30, 0x50, 0x5f, 0x32, 0x35, 0x46, 0x50, 0x53, 0x5f, 0x32, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x53, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12,
0x27, 0x0a, 0x23, 0x48, 0x32, 0x36, 0x34, 0x5f, 0x37, 0x32, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46,
0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f,
0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x32, 0x36, 0x34,
0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x5f, 0x33, 0x30, 0x46, 0x50, 0x53, 0x5f, 0x31, 0x5f, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x54, 0x49, 0x4f, 0x4e,
0x10, 0x09, 0x32, 0xa5, 0x02, 0x0a, 0x07, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x44,
0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12,
0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0b, 0x4c, 0x69,
0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e,
0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x49,
0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1896,6 +1953,7 @@ func file_livekit_ingress_proto_init() {
}
}
}
file_livekit_ingress_proto_msgTypes[0].OneofWrappers = []interface{}{}
file_livekit_ingress_proto_msgTypes[1].OneofWrappers = []interface{}{
(*IngressAudioOptions_Preset)(nil),
(*IngressAudioOptions_Options)(nil),
@@ -1904,6 +1962,7 @@ func file_livekit_ingress_proto_init() {
(*IngressVideoOptions_Preset)(nil),
(*IngressVideoOptions_Options)(nil),
}
file_livekit_ingress_proto_msgTypes[5].OneofWrappers = []interface{}{}
file_livekit_ingress_proto_msgTypes[9].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{

View File

@@ -1356,93 +1356,96 @@ func (s *ingressServer) PathPrefix() string {
}
var twirpFileDescriptor1 = []byte{
// 1401 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x6e, 0xdb, 0xc6,
0x13, 0x36, 0x25, 0xeb, 0xdf, 0x28, 0x92, 0x95, 0x95, 0x9c, 0x30, 0xfe, 0x83, 0x9f, 0xa1, 0xe4,
0x87, 0x38, 0x4e, 0xab, 0x38, 0x8a, 0x93, 0xb6, 0x01, 0x02, 0xd4, 0xb2, 0xe5, 0x88, 0xb0, 0x2c,
0x09, 0x2b, 0x39, 0x45, 0x7b, 0x59, 0xd0, 0xe2, 0xc6, 0x26, 0x22, 0x89, 0x2c, 0xb9, 0x72, 0x23,
0xf4, 0xda, 0x43, 0x1f, 0xa0, 0xf7, 0x1e, 0x8a, 0x5e, 0x72, 0x2f, 0xfa, 0x28, 0x7d, 0x87, 0xa2,
0x0f, 0x51, 0xec, 0x72, 0x45, 0x93, 0x12, 0x15, 0x24, 0x6d, 0x91, 0xf6, 0xc6, 0x99, 0xef, 0x9b,
0xe1, 0xec, 0xcc, 0xec, 0x67, 0xca, 0xb0, 0x3a, 0x30, 0x2f, 0xe9, 0x2b, 0x93, 0x11, 0x73, 0x74,
0xee, 0x50, 0xd7, 0xad, 0xd8, 0x8e, 0xc5, 0x2c, 0x94, 0x92, 0xee, 0xb5, 0xd2, 0x14, 0x1f, 0x5a,
0x06, 0x1d, 0x48, 0xb8, 0xfc, 0x6b, 0x1c, 0x4a, 0x07, 0x0e, 0xd5, 0x19, 0xd5, 0xbc, 0x30, 0x4c,
0xbf, 0x1e, 0x53, 0x97, 0xa1, 0x3d, 0x00, 0x73, 0x64, 0x8f, 0x19, 0x61, 0x13, 0x9b, 0xaa, 0xca,
0x96, 0xb2, 0x9d, 0xaf, 0xae, 0x56, 0x64, 0x8e, 0x8a, 0x24, 0x6b, 0x9c, 0x81, 0x33, 0x82, 0xd8,
0x9b, 0xd8, 0x14, 0x15, 0x20, 0x3e, 0x76, 0x06, 0x6a, 0x66, 0x4b, 0xd9, 0xce, 0x60, 0xfe, 0x88,
0x10, 0x2c, 0x8f, 0xf4, 0x21, 0x55, 0x63, 0xc2, 0x25, 0x9e, 0xd1, 0x3a, 0x64, 0x1c, 0xcb, 0x1a,
0x12, 0x01, 0xc4, 0x05, 0x90, 0xe6, 0x8e, 0x16, 0x07, 0x1f, 0x42, 0xc9, 0xd6, 0x1d, 0x66, 0xf6,
0x4d, 0x5b, 0x1f, 0x31, 0x62, 0x1a, 0x74, 0xc4, 0x4c, 0x36, 0x51, 0x97, 0x05, 0xaf, 0x18, 0xc0,
0x34, 0x09, 0xa1, 0x7b, 0x50, 0x08, 0x86, 0x88, 0xb4, 0x09, 0x41, 0x5f, 0x09, 0xf8, 0xa3, 0xb2,
0x0f, 0x29, 0xd3, 0x0d, 0x9d, 0xe9, 0x2a, 0xcc, 0x65, 0x3f, 0x91, 0x10, 0xfa, 0x18, 0xd0, 0xd9,
0xc4, 0xd6, 0x5d, 0x97, 0x30, 0x47, 0x1f, 0xb9, 0x7d, 0xcb, 0x30, 0x47, 0xe7, 0x6a, 0x7a, 0x4b,
0xd9, 0x4e, 0xe3, 0xeb, 0x1e, 0xd2, 0xbb, 0x02, 0x50, 0x15, 0x12, 0xfa, 0xd8, 0x30, 0x2d, 0x35,
0xb9, 0xa5, 0x6c, 0x67, 0xab, 0x1b, 0xb3, 0x3d, 0xdb, 0xe7, 0x60, 0xdb, 0x66, 0xa6, 0x35, 0x72,
0xb1, 0x47, 0xe5, 0x31, 0x97, 0xa6, 0x41, 0x2d, 0x35, 0x15, 0x1d, 0xf3, 0x82, 0x83, 0x7e, 0x8c,
0xa0, 0x96, 0xff, 0x50, 0xa0, 0x18, 0x91, 0xd2, 0x6f, 0xb8, 0x12, 0x68, 0xf8, 0x47, 0x90, 0x74,
0xad, 0xb1, 0xd3, 0xf7, 0xc6, 0x90, 0xaf, 0x96, 0xfc, 0x17, 0xf4, 0x1c, 0xbd, 0xff, 0xaa, 0x2b,
0x30, 0x2c, 0x39, 0xe8, 0x19, 0x24, 0x6d, 0x87, 0xba, 0x94, 0x89, 0xd9, 0xe4, 0xab, 0xb7, 0x23,
0x8f, 0x50, 0x1f, 0x79, 0x07, 0xee, 0x08, 0x6a, 0x63, 0x09, 0xcb, 0x20, 0xf4, 0x39, 0xa4, 0x2c,
0xaf, 0x16, 0x31, 0xb3, 0x6c, 0xf5, 0xce, 0x5b, 0xe3, 0x65, 0xdd, 0x8d, 0x25, 0x3c, 0x0d, 0xab,
0x21, 0x28, 0x50, 0x89, 0x12, 0xe9, 0x0b, 0x1e, 0x37, 0xd8, 0x8d, 0x0f, 0x71, 0x5c, 0xf1, 0xbe,
0xbf, 0x71, 0xdc, 0x50, 0xfc, 0x3b, 0x1e, 0xf7, 0x8d, 0x02, 0xeb, 0x6f, 0xe9, 0x16, 0xda, 0x83,
0xac, 0x58, 0x1d, 0xd2, 0xb7, 0x0c, 0xda, 0x97, 0xf7, 0xb3, 0xe8, 0xbf, 0x59, 0xc4, 0x1c, 0x70,
0x08, 0x83, 0xee, 0x3f, 0x23, 0x15, 0x52, 0x67, 0x26, 0x73, 0x74, 0xe6, 0x75, 0x26, 0x87, 0xa7,
0x26, 0xfa, 0x1f, 0x64, 0x0d, 0xd3, 0xd5, 0xcf, 0x06, 0x94, 0x18, 0xec, 0xb5, 0xe8, 0x44, 0x1a,
0x83, 0x74, 0x1d, 0xb2, 0xd7, 0x68, 0x0d, 0xd2, 0xfd, 0x0b, 0x7d, 0x34, 0xa2, 0x03, 0xef, 0x9c,
0x39, 0xec, 0xdb, 0xe5, 0x1f, 0xaf, 0x8a, 0x8d, 0x3a, 0x2b, 0x2f, 0x56, 0xec, 0xec, 0x82, 0x62,
0x45, 0x8c, 0x2c, 0xf6, 0xd2, 0x7f, 0x46, 0x9b, 0x00, 0x2f, 0x1d, 0x7d, 0x48, 0x89, 0x5f, 0xaf,
0x82, 0x33, 0xc2, 0x83, 0x79, 0xc5, 0xf7, 0x21, 0x39, 0xd0, 0x27, 0xd4, 0x71, 0xd5, 0xf8, 0x56,
0x7c, 0x3b, 0x3b, 0x9b, 0xaf, 0xc9, 0x31, 0x2c, 0x29, 0xe5, 0x5f, 0x96, 0x21, 0xeb, 0x6b, 0xd6,
0x4b, 0x8b, 0xe7, 0x96, 0x32, 0x49, 0x4c, 0x43, 0xee, 0x4e, 0x46, 0x7a, 0x34, 0x23, 0x52, 0xb4,
0x36, 0x01, 0x5c, 0xe6, 0x50, 0x7d, 0x48, 0x5e, 0xd1, 0x89, 0x54, 0xad, 0x8c, 0xe7, 0x39, 0xa6,
0x93, 0xa9, 0xf2, 0x2d, 0x5f, 0x29, 0x5f, 0x58, 0x41, 0x13, 0xef, 0xa8, 0xa0, 0xd1, 0x6a, 0x93,
0xfb, 0x97, 0xd5, 0x26, 0x2c, 0xd9, 0xe9, 0x77, 0x94, 0xec, 0xcc, 0xfb, 0x49, 0x36, 0xbc, 0x9f,
0x64, 0xe7, 0x17, 0x4b, 0xf6, 0x1a, 0xa4, 0x1d, 0x3a, 0x16, 0xbb, 0xab, 0x66, 0x45, 0xeb, 0x7c,
0x1b, 0xdd, 0x87, 0x84, 0xcb, 0xf8, 0x46, 0x5d, 0x13, 0xa7, 0x9f, 0x9b, 0x48, 0x97, 0x83, 0xd8,
0xe3, 0x94, 0x7f, 0x8b, 0xc3, 0xb5, 0xa0, 0x1f, 0xed, 0x41, 0x92, 0x23, 0x63, 0x57, 0x6e, 0xf1,
0x46, 0x64, 0x78, 0xa5, 0x2b, 0x38, 0x58, 0x72, 0x51, 0x09, 0x12, 0xd4, 0x71, 0x2c, 0x47, 0x2e,
0x94, 0x67, 0xa0, 0xca, 0x74, 0x0e, 0x71, 0x51, 0x89, 0x1a, 0x48, 0x65, 0x8f, 0x99, 0x98, 0x82,
0x2c, 0xc6, 0x9b, 0x41, 0x65, 0x3a, 0xeb, 0xe5, 0x28, 0xbe, 0x98, 0xb4, 0xe4, 0x7b, 0x73, 0xbe,
0x09, 0x29, 0x31, 0x33, 0xd3, 0x90, 0x7f, 0x0d, 0x93, 0xdc, 0xd4, 0x0c, 0x6f, 0x95, 0x75, 0x87,
0x51, 0x83, 0xe8, 0x4c, 0x6c, 0x41, 0x9c, 0xaf, 0xb2, 0xf0, 0xec, 0x33, 0x74, 0x0b, 0xd2, 0x74,
0x64, 0x78, 0x60, 0x5a, 0x80, 0x29, 0x61, 0xef, 0x33, 0x2e, 0x13, 0x0e, 0xf5, 0x74, 0x93, 0xa7,
0xf5, 0x06, 0x0c, 0x53, 0x97, 0x66, 0xa0, 0x1d, 0x48, 0x32, 0xae, 0xb1, 0xae, 0x9a, 0x14, 0xb7,
0x12, 0x85, 0xa5, 0x97, 0x5f, 0x3e, 0x2c, 0x19, 0xe5, 0x6f, 0x21, 0xe9, 0xf5, 0x09, 0xad, 0xc2,
0xf5, 0x7a, 0xeb, 0xb0, 0xd3, 0xd6, 0x5a, 0x3d, 0xa2, 0xb5, 0xf6, 0x0f, 0x7a, 0xda, 0x8b, 0x7a,
0x61, 0x09, 0xdd, 0x00, 0xe4, 0xbb, 0x6b, 0xa7, 0x47, 0x47, 0x75, 0xac, 0xb5, 0x9e, 0x17, 0x14,
0x74, 0x13, 0x8a, 0xbe, 0xbf, 0x73, 0x5a, 0x6b, 0x6a, 0xdd, 0x06, 0x07, 0x62, 0x08, 0x41, 0xde,
0x07, 0xea, 0x18, 0xb7, 0x71, 0x21, 0x1e, 0xca, 0x7d, 0xd0, 0x3e, 0xe9, 0x34, 0xeb, 0xbd, 0x7a,
0x61, 0xb9, 0xfc, 0x93, 0x02, 0x2b, 0x33, 0x7d, 0xe6, 0x4b, 0x3e, 0x34, 0x87, 0xf4, 0xea, 0x93,
0x27, 0x83, 0xd3, 0xdc, 0x21, 0x2e, 0xe6, 0x5d, 0x58, 0xd1, 0x2f, 0xa9, 0xa3, 0x9f, 0x53, 0x12,
0xd6, 0xd0, 0xbc, 0x74, 0xd7, 0xa4, 0x94, 0x96, 0x20, 0xf1, 0x8d, 0x69, 0xb0, 0x0b, 0x31, 0xd6,
0x1c, 0xf6, 0x0c, 0x74, 0x03, 0x92, 0x17, 0xd4, 0x3c, 0xbf, 0x60, 0x52, 0x3d, 0xa5, 0x85, 0x36,
0xc0, 0xd3, 0x34, 0x91, 0x30, 0x11, 0x10, 0x39, 0xee, 0x28, 0xff, 0x30, 0xad, 0xf2, 0x6a, 0xba,
0xff, 0x50, 0x95, 0x41, 0x3d, 0x8f, 0x87, 0xf5, 0x9c, 0x4f, 0xd9, 0xd5, 0x87, 0xf6, 0x40, 0x4a,
0xaf, 0x57, 0x30, 0x78, 0x2e, 0xae, 0xbd, 0xe5, 0x37, 0x71, 0x28, 0x9d, 0xda, 0xc6, 0xfc, 0x57,
0xe3, 0x5f, 0xd0, 0xd5, 0xff, 0xe0, 0xc7, 0x60, 0x66, 0xb1, 0xb2, 0x54, 0x17, 0x7f, 0x0c, 0x36,
0x96, 0x22, 0x04, 0xfa, 0x7b, 0x45, 0xf9, 0x50, 0x1a, 0x5d, 0x5b, 0x85, 0x22, 0x99, 0x2f, 0xae,
0xdc, 0x01, 0xd4, 0x34, 0x5d, 0x36, 0x33, 0xa9, 0x50, 0xdb, 0x95, 0x99, 0xb6, 0x87, 0xc7, 0x18,
0x9b, 0x19, 0x63, 0x79, 0x1f, 0x8a, 0xa1, 0x8c, 0xae, 0x6d, 0x8d, 0x5c, 0x8a, 0x76, 0x20, 0x61,
0x32, 0x3a, 0xe4, 0xd2, 0xc8, 0xaf, 0x7e, 0x69, 0xfe, 0x6f, 0xdd, 0x4b, 0x0b, 0x7b, 0x94, 0xf2,
0x63, 0x28, 0x1d, 0xd2, 0x01, 0x7d, 0xcf, 0x05, 0xda, 0x79, 0xe6, 0xcb, 0xb1, 0xb8, 0x15, 0x28,
0x0f, 0x80, 0x7b, 0x27, 0x1d, 0xa2, 0xb5, 0x3a, 0xa7, 0xbd, 0xc2, 0x12, 0xb7, 0xbf, 0x68, 0x68,
0x53, 0x5b, 0x41, 0x39, 0xc8, 0x9c, 0xe2, 0xa6, 0x34, 0x63, 0x3b, 0x1a, 0xac, 0x2d, 0xfe, 0x84,
0xe5, 0x72, 0xd3, 0xee, 0x9c, 0x76, 0x49, 0xb7, 0x57, 0xc7, 0xf5, 0x36, 0xf9, 0xec, 0xc9, 0x71,
0xad, 0xd3, 0x2d, 0x2c, 0xa1, 0x22, 0xac, 0x08, 0xff, 0x49, 0xbb, 0xd5, 0x26, 0x4f, 0xf6, 0x8e,
0x6b, 0xdd, 0x82, 0xb2, 0xf3, 0x5d, 0xdc, 0xcf, 0x15, 0xf1, 0x7d, 0x88, 0x36, 0x40, 0x6d, 0x54,
0x9f, 0xec, 0x91, 0x4f, 0xaa, 0xbb, 0x1d, 0xf2, 0x68, 0xf7, 0xa8, 0xd3, 0x25, 0x8f, 0x48, 0x73,
0xff, 0xcb, 0x3a, 0xe6, 0x19, 0x37, 0xe1, 0x96, 0x40, 0x1f, 0xee, 0x7e, 0x3a, 0x0f, 0x2b, 0x7e,
0xf0, 0xe3, 0xbd, 0xdd, 0x0e, 0xa9, 0x3e, 0xe6, 0x68, 0x75, 0x8a, 0xc6, 0xd0, 0x3a, 0xdc, 0x9c,
0x4d, 0xfd, 0xd0, 0x43, 0x0b, 0x71, 0x3f, 0x34, 0x98, 0x79, 0x8a, 0x2e, 0xa3, 0x6d, 0xb8, 0xb3,
0xa8, 0x2a, 0xd2, 0xd0, 0x9e, 0x37, 0xc8, 0x49, 0xbb, 0xa7, 0xb5, 0x5b, 0x85, 0x04, 0xba, 0x07,
0xff, 0x5f, 0x58, 0x61, 0x88, 0x9a, 0xf4, 0x93, 0x46, 0x54, 0x1b, 0x62, 0xa6, 0xd0, 0x5d, 0xb8,
0xbd, 0xa0, 0xf2, 0x10, 0x31, 0xed, 0xa7, 0x8c, 0x38, 0x45, 0x88, 0x99, 0xa9, 0xfe, 0x1c, 0x83,
0x94, 0x1c, 0x03, 0x3a, 0x84, 0x5c, 0xe8, 0xa7, 0x2c, 0xda, 0xf4, 0x37, 0x30, 0xea, 0x27, 0xee,
0x5a, 0xe4, 0x82, 0xf2, 0x2c, 0x21, 0x69, 0x0b, 0x64, 0x89, 0x92, 0xbc, 0x05, 0x59, 0x1a, 0x90,
0x0d, 0x5c, 0x11, 0xb4, 0xee, 0x93, 0xe6, 0xaf, 0xe2, 0xda, 0x46, 0x34, 0x28, 0x6f, 0xd5, 0x21,
0xe4, 0x42, 0x37, 0x25, 0x50, 0x4f, 0xd4, 0x0d, 0x8a, 0xae, 0xa7, 0x76, 0xf4, 0xd5, 0xed, 0x73,
0x93, 0x5d, 0x8c, 0xcf, 0x2a, 0x7d, 0x6b, 0xf8, 0x40, 0x32, 0x1e, 0x88, 0xff, 0x01, 0xf4, 0xad,
0xc1, 0xd4, 0xf1, 0x26, 0x96, 0x6b, 0x9a, 0x97, 0xf4, 0xd8, 0x64, 0x95, 0x0e, 0x87, 0x7e, 0x8f,
0xe5, 0xa5, 0xfd, 0xf4, 0xa9, 0x70, 0x9c, 0x25, 0x45, 0xc8, 0xa3, 0x3f, 0x03, 0x00, 0x00, 0xff,
0xff, 0x09, 0x1d, 0x1d, 0x75, 0x6e, 0x10, 0x00, 0x00,
// 1453 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4d, 0x6f, 0xdb, 0x46,
0x13, 0x36, 0x25, 0xeb, 0x6b, 0x14, 0xc9, 0xca, 0x5a, 0x4e, 0x18, 0x7f, 0xe0, 0x35, 0x94, 0xbc,
0x88, 0xe3, 0xbc, 0x50, 0x6c, 0xc5, 0xf1, 0xdb, 0x06, 0x08, 0x50, 0xcb, 0x96, 0x23, 0xc2, 0xb2,
0x24, 0xac, 0xe4, 0x14, 0xed, 0x85, 0xa0, 0xc5, 0x8d, 0x4d, 0x44, 0x22, 0x55, 0x72, 0xe5, 0x46,
0xe8, 0x35, 0x28, 0xfa, 0x03, 0x7a, 0xef, 0xa1, 0xe8, 0x25, 0x3f, 0xad, 0xe8, 0xb9, 0x40, 0x6f,
0xc5, 0x7e, 0x88, 0x26, 0x25, 0x2a, 0x88, 0xdb, 0xa2, 0xc8, 0x8d, 0x3b, 0xcf, 0x33, 0xc3, 0x59,
0xce, 0xec, 0x33, 0x2b, 0xc1, 0x4a, 0xdf, 0xba, 0x22, 0x6f, 0x2c, 0xaa, 0x5b, 0xf6, 0x85, 0x4b,
0x3c, 0xaf, 0x3c, 0x74, 0x1d, 0xea, 0xa0, 0x94, 0x34, 0xaf, 0x16, 0x27, 0xf8, 0xc0, 0x31, 0x49,
0x5f, 0xc2, 0xa5, 0xef, 0x17, 0xa1, 0x78, 0xe8, 0x12, 0x83, 0x12, 0x4d, 0xb8, 0x61, 0xf2, 0xcd,
0x88, 0x78, 0x14, 0xed, 0x01, 0x58, 0xf6, 0x70, 0x44, 0x75, 0x3a, 0x1e, 0x12, 0x55, 0xd9, 0x54,
0xb6, 0xf2, 0x95, 0x95, 0xb2, 0x8c, 0x51, 0x96, 0x64, 0x8d, 0x31, 0x70, 0x86, 0x13, 0xbb, 0xe3,
0x21, 0x41, 0x05, 0x88, 0x8f, 0xdc, 0xbe, 0x9a, 0xd9, 0x54, 0xb6, 0x32, 0x98, 0x3d, 0x22, 0x04,
0x8b, 0xb6, 0x31, 0x20, 0x6a, 0x8c, 0x9b, 0xf8, 0x33, 0x5a, 0x83, 0x8c, 0xeb, 0x38, 0x03, 0x9d,
0x03, 0x71, 0x0e, 0xa4, 0x99, 0xa1, 0xc9, 0xc0, 0x5d, 0x28, 0x0e, 0x0d, 0x97, 0x5a, 0x3d, 0x6b,
0x68, 0xd8, 0x54, 0xb7, 0x4c, 0x62, 0x53, 0x8b, 0x8e, 0xd5, 0x45, 0xce, 0x5b, 0x0e, 0x60, 0x9a,
0x84, 0xd0, 0x23, 0x28, 0x04, 0x5d, 0x78, 0xd8, 0x04, 0xa7, 0x2f, 0x05, 0xec, 0x51, 0xd1, 0x07,
0x84, 0x1a, 0xa6, 0x41, 0x0d, 0x15, 0x66, 0xa2, 0x9f, 0x4a, 0x08, 0xed, 0x02, 0x3a, 0x1f, 0x0f,
0x0d, 0xcf, 0xd3, 0xa9, 0x6b, 0xd8, 0x5e, 0xcf, 0x31, 0x2d, 0xfb, 0x42, 0x4d, 0x6f, 0x2a, 0x5b,
0xe9, 0x6a, 0x4c, 0x55, 0xf0, 0x6d, 0x81, 0x76, 0xaf, 0x41, 0x54, 0x01, 0x44, 0x6c, 0xe3, 0xbc,
0x4f, 0x42, 0x2e, 0x59, 0xe6, 0x52, 0x5f, 0xc0, 0xb7, 0x05, 0x16, 0x70, 0xf8, 0x41, 0x51, 0x50,
0x05, 0x12, 0xc6, 0xc8, 0xb4, 0x1c, 0x35, 0xb9, 0xa9, 0x6c, 0x65, 0x2b, 0xeb, 0xd3, 0xdf, 0xfa,
0x80, 0x81, 0xad, 0x21, 0xb5, 0x1c, 0xdb, 0xc3, 0x82, 0xca, 0x7c, 0xae, 0x2c, 0x93, 0x38, 0x6a,
0x2a, 0xda, 0xe7, 0x15, 0x03, 0x7d, 0x1f, 0x4e, 0xad, 0xae, 0xc0, 0xb2, 0x3e, 0x9b, 0x5c, 0xe9,
0x37, 0x05, 0x96, 0x23, 0xde, 0xe4, 0xd7, 0x4f, 0x09, 0xd4, 0xef, 0x7f, 0x90, 0xf4, 0x9c, 0x91,
0xdb, 0x13, 0x55, 0xcd, 0x57, 0x8a, 0xfe, 0x7b, 0xbb, 0xae, 0xd1, 0x7b, 0xd3, 0xe1, 0x18, 0x96,
0x1c, 0xf4, 0x02, 0x92, 0x43, 0x97, 0x78, 0x84, 0xf2, 0x52, 0xe7, 0x2b, 0xf7, 0x23, 0x77, 0x56,
0xb3, 0x45, 0x22, 0x6d, 0x4e, 0xad, 0x2f, 0x60, 0xe9, 0x84, 0xbe, 0x80, 0x94, 0x23, 0x72, 0xe1,
0x2d, 0x90, 0xad, 0x3c, 0xf8, 0xa0, 0xbf, 0xcc, 0xbb, 0xbe, 0x80, 0x27, 0x6e, 0x55, 0x04, 0x05,
0x22, 0x51, 0x5d, 0xda, 0x82, 0xdb, 0x0d, 0x7e, 0xa4, 0x7f, 0x63, 0xbb, 0xfc, 0x7d, 0x7f, 0x63,
0xbb, 0x21, 0xff, 0x8f, 0xdc, 0xee, 0x7b, 0x05, 0xd6, 0x3e, 0xf0, 0xb5, 0xd0, 0x1e, 0x64, 0x79,
0x47, 0xe9, 0x3d, 0xc7, 0x24, 0x3d, 0x79, 0xdc, 0x97, 0xfd, 0x37, 0x73, 0x9f, 0x43, 0x06, 0x61,
0x30, 0xfc, 0x67, 0xa4, 0x42, 0xea, 0xdc, 0xa2, 0xae, 0x41, 0xc5, 0x97, 0xc9, 0xe1, 0xc9, 0x12,
0xfd, 0x07, 0xb2, 0xa6, 0xe5, 0xf1, 0x26, 0x33, 0xe9, 0x5b, 0xfe, 0x25, 0xd2, 0x18, 0xa4, 0xe9,
0x88, 0xbe, 0x45, 0xab, 0x90, 0xee, 0x5d, 0x1a, 0xb6, 0x4d, 0xfa, 0x62, 0x9f, 0x39, 0xec, 0xaf,
0x4b, 0x3f, 0x5d, 0x27, 0x1b, 0xb5, 0x57, 0x96, 0x2c, 0x6f, 0xe5, 0x39, 0xc9, 0x72, 0x1f, 0x99,
0xec, 0x95, 0xff, 0x8c, 0x36, 0x00, 0x5e, 0xbb, 0xc6, 0x80, 0xe8, 0x7e, 0xbe, 0x0a, 0xce, 0x70,
0x0b, 0x66, 0x19, 0x3f, 0x86, 0x64, 0xdf, 0x18, 0x13, 0xd7, 0x53, 0xe3, 0x9b, 0xf1, 0xad, 0xec,
0x74, 0xbc, 0x06, 0xc3, 0xb0, 0xa4, 0x94, 0xde, 0x25, 0x20, 0xeb, 0x4b, 0xe0, 0x6b, 0x87, 0xc5,
0x96, 0xaa, 0xab, 0x5b, 0xa6, 0xec, 0x9d, 0x8c, 0xb4, 0x68, 0x66, 0xa4, 0x06, 0x6e, 0x00, 0x78,
0xd4, 0x25, 0xc6, 0x40, 0x7f, 0x43, 0xc6, 0x52, 0x04, 0x33, 0xc2, 0x72, 0x42, 0xc6, 0x13, 0x21,
0x5d, 0xbc, 0x16, 0xd2, 0xb0, 0x20, 0x27, 0x3e, 0x52, 0x90, 0xa3, 0xc5, 0x2b, 0x77, 0x73, 0xf1,
0x5a, 0xfa, 0x14, 0xc4, 0x2b, 0x3c, 0x39, 0xd2, 0x1f, 0x39, 0x39, 0x32, 0x37, 0x9b, 0x1c, 0x70,
0xb3, 0xc9, 0x91, 0x9f, 0x3f, 0x39, 0x56, 0x21, 0xed, 0x92, 0x11, 0xef, 0x79, 0x21, 0xfe, 0xd8,
0x5f, 0xa3, 0xc7, 0x90, 0xf0, 0x28, 0xeb, 0xc4, 0x5b, 0x7c, 0xf7, 0x33, 0x95, 0xec, 0x30, 0x10,
0x0b, 0xce, 0x3c, 0xcd, 0xfe, 0x3d, 0x0e, 0xb7, 0x82, 0x74, 0xb4, 0x07, 0x49, 0xe6, 0x30, 0xf2,
0xe4, 0xa1, 0x58, 0x8f, 0x8c, 0x5a, 0xee, 0x70, 0x0e, 0x96, 0x5c, 0x54, 0x84, 0x04, 0x71, 0x5d,
0xc7, 0x95, 0xfd, 0x29, 0x16, 0xa8, 0x3c, 0x29, 0x4f, 0x9c, 0x27, 0xa8, 0x06, 0x42, 0x0d, 0x47,
0x94, 0x17, 0x47, 0xe6, 0x28, 0x4a, 0x53, 0x9e, 0xb4, 0xc0, 0x62, 0x14, 0x9f, 0x37, 0x80, 0xe4,
0x8b, 0xf2, 0xdf, 0x85, 0x14, 0x2f, 0xa5, 0x65, 0xca, 0x59, 0x9d, 0x64, 0x4b, 0xcd, 0x14, 0x27,
0xc3, 0x70, 0x29, 0x31, 0x75, 0x83, 0xf2, 0xe6, 0x88, 0xb3, 0x93, 0xc1, 0x2d, 0x07, 0x14, 0xdd,
0x83, 0x34, 0xb1, 0x4d, 0x01, 0xa6, 0x39, 0x98, 0xe2, 0xeb, 0x03, 0xca, 0x3c, 0x47, 0x43, 0xd3,
0x90, 0x9e, 0x20, 0x3c, 0xa5, 0xe5, 0x80, 0x32, 0x51, 0x72, 0x89, 0x50, 0x69, 0xf6, 0x56, 0xd1,
0x16, 0x30, 0x31, 0x69, 0x26, 0xda, 0x86, 0x24, 0x65, 0x8a, 0xee, 0xa9, 0x49, 0xae, 0x01, 0x28,
0x2c, 0xf4, 0xec, 0xa8, 0x63, 0xc9, 0x28, 0x7d, 0x07, 0x49, 0xf1, 0x19, 0xd1, 0x0a, 0xdc, 0xae,
0x35, 0x8f, 0xda, 0x2d, 0xad, 0xd9, 0xd5, 0xb5, 0xe6, 0xc1, 0x61, 0x57, 0x7b, 0x55, 0x2b, 0x2c,
0xa0, 0x3b, 0x80, 0x7c, 0x73, 0xf5, 0xec, 0xf8, 0xb8, 0x86, 0xb5, 0xe6, 0xcb, 0x82, 0x82, 0xee,
0xc2, 0xb2, 0x6f, 0x6f, 0x9f, 0x55, 0x1b, 0x5a, 0xa7, 0xce, 0x80, 0x18, 0x42, 0x90, 0xf7, 0x81,
0x1a, 0xc6, 0x2d, 0x5c, 0x88, 0x87, 0x62, 0x1f, 0xb6, 0x4e, 0xdb, 0x8d, 0x5a, 0xb7, 0x56, 0x58,
0x2c, 0xfd, 0xac, 0xc0, 0xd2, 0x54, 0x19, 0xd8, 0xd1, 0x18, 0x58, 0x03, 0x72, 0x7d, 0x5f, 0xcb,
0xe0, 0x34, 0x33, 0x70, 0x19, 0x78, 0x08, 0x4b, 0xc6, 0x15, 0x71, 0x8d, 0x0b, 0xa2, 0x87, 0x15,
0x3b, 0x2f, 0xcd, 0x55, 0x29, 0xdc, 0x45, 0x48, 0x7c, 0x6b, 0x99, 0xf4, 0x92, 0x57, 0x3d, 0x87,
0xc5, 0x02, 0xdd, 0x81, 0xe4, 0x25, 0xb1, 0x2e, 0x2e, 0xa9, 0xd4, 0x6a, 0xb9, 0x42, 0xeb, 0x20,
0x14, 0x94, 0x07, 0x4c, 0x04, 0x24, 0x95, 0x19, 0x4a, 0x3f, 0x4e, 0xb2, 0xbc, 0x2e, 0xfe, 0x3f,
0x94, 0x65, 0x70, 0x7a, 0xc4, 0xc3, 0xd3, 0x83, 0x55, 0xd9, 0x33, 0x06, 0xc3, 0xbe, 0x14, 0x7a,
0x91, 0x30, 0x08, 0x13, 0x53, 0xfa, 0xd2, 0x1f, 0x71, 0x28, 0x9e, 0xf1, 0xa6, 0x98, 0xba, 0xf2,
0xfe, 0x05, 0x15, 0xff, 0x04, 0x6f, 0xb2, 0x99, 0xf9, 0x7a, 0xb4, 0xff, 0xe1, 0x9b, 0x2c, 0x53,
0xf7, 0x99, 0x71, 0x20, 0xd4, 0x3d, 0x6a, 0x22, 0x00, 0x9f, 0x08, 0xca, 0x27, 0x70, 0x9d, 0x9d,
0xdd, 0xd4, 0x3c, 0xc5, 0x6c, 0x03, 0x6a, 0x58, 0x1e, 0x9d, 0x2a, 0x7c, 0xa8, 0x8a, 0xca, 0x54,
0x15, 0xc3, 0x5d, 0x11, 0x9b, 0xea, 0x8a, 0xd2, 0x01, 0x2c, 0x87, 0x22, 0x7a, 0x43, 0xc7, 0xf6,
0x08, 0xda, 0x86, 0x84, 0x45, 0xc9, 0x80, 0x09, 0x31, 0x53, 0x92, 0xe2, 0xec, 0xa0, 0x7e, 0xed,
0x60, 0x41, 0x29, 0x3d, 0x83, 0xe2, 0x11, 0xe9, 0x93, 0x1b, 0xf6, 0xe3, 0xf6, 0x0b, 0x5f, 0xfc,
0xf9, 0x21, 0x43, 0x79, 0x00, 0xdc, 0x3d, 0x6d, 0xeb, 0x5a, 0xb3, 0x7d, 0xd6, 0x2d, 0x2c, 0xb0,
0xf5, 0x97, 0x75, 0x6d, 0xb2, 0x56, 0x50, 0x0e, 0x32, 0x67, 0xb8, 0x21, 0x97, 0xb1, 0x6d, 0x0d,
0x56, 0xe7, 0xdf, 0xbf, 0x99, 0x7a, 0xb5, 0xda, 0x67, 0x1d, 0xbd, 0xd3, 0xad, 0xe1, 0x5a, 0x4b,
0xff, 0x7c, 0xff, 0xa4, 0xda, 0xee, 0x14, 0x16, 0xd0, 0x32, 0x2c, 0x71, 0xfb, 0x69, 0xab, 0xd9,
0xd2, 0xf7, 0xf7, 0x4e, 0xaa, 0x9d, 0x82, 0xb2, 0xfd, 0x2e, 0xee, 0xc7, 0x8a, 0xb8, 0xdc, 0xa2,
0x75, 0x50, 0xeb, 0x95, 0xfd, 0x3d, 0xfd, 0xff, 0x95, 0x9d, 0xb6, 0xfe, 0x74, 0xe7, 0xb8, 0xdd,
0xd1, 0x9f, 0xea, 0x8d, 0x83, 0xaf, 0x6a, 0x98, 0x45, 0xdc, 0x80, 0x7b, 0x1c, 0xdd, 0xdd, 0xf9,
0x6c, 0x16, 0x56, 0x7c, 0xe7, 0x67, 0x7b, 0x3b, 0x6d, 0xbd, 0xf2, 0x8c, 0xa1, 0x95, 0x09, 0x1a,
0x43, 0x6b, 0x70, 0x77, 0x3a, 0xf4, 0xae, 0x40, 0x0b, 0x71, 0xdf, 0x35, 0x18, 0x79, 0x82, 0x2e,
0xa2, 0x2d, 0x78, 0x30, 0x2f, 0x2b, 0xbd, 0xae, 0xbd, 0xac, 0xeb, 0xa7, 0xad, 0xae, 0xd6, 0x6a,
0x16, 0x12, 0xe8, 0x11, 0xfc, 0x77, 0x6e, 0x86, 0x21, 0x6a, 0xd2, 0x0f, 0x1a, 0x91, 0x6d, 0x88,
0x99, 0x42, 0x0f, 0xe1, 0xfe, 0x9c, 0xcc, 0x43, 0xc4, 0xb4, 0x1f, 0x32, 0x62, 0x17, 0x21, 0x66,
0xa6, 0xf2, 0x4b, 0x0c, 0x52, 0xb2, 0x0c, 0xe8, 0x08, 0x72, 0xa1, 0x9f, 0xf5, 0x68, 0xc3, 0xef,
0xc0, 0xa8, 0x9f, 0xfb, 0xab, 0x91, 0x0d, 0xca, 0xa2, 0x84, 0x94, 0x32, 0x10, 0x25, 0x4a, 0x41,
0xe7, 0x44, 0xa9, 0x43, 0x36, 0x70, 0x44, 0xd0, 0x9a, 0x4f, 0x9a, 0x3d, 0x8a, 0xab, 0xeb, 0xd1,
0xa0, 0x3c, 0x55, 0x47, 0x90, 0x0b, 0x9d, 0x94, 0x40, 0x3e, 0x51, 0x27, 0x28, 0x3a, 0x9f, 0xea,
0xf1, 0xd7, 0xf7, 0x2f, 0x2c, 0x7a, 0x39, 0x3a, 0x2f, 0xf7, 0x9c, 0xc1, 0x13, 0xc9, 0x78, 0xc2,
0xff, 0x0f, 0xe9, 0x39, 0xfd, 0x89, 0xe1, 0x7d, 0x2c, 0xd7, 0xb0, 0xae, 0xc8, 0x89, 0x45, 0xcb,
0x6d, 0x06, 0xfd, 0x1a, 0xcb, 0xcb, 0xf5, 0xf3, 0xe7, 0xdc, 0x70, 0x9e, 0xe4, 0x2e, 0x4f, 0xff,
0x0c, 0x00, 0x00, 0xff, 0xff, 0x33, 0x5f, 0xd3, 0x2e, 0x7a, 0x11, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -902,9 +902,13 @@ type CreateSIPParticipantRequest struct {
RoomName string `protobuf:"bytes,3,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
// Optional identity of the participant in LiveKit room
ParticipantIdentity string `protobuf:"bytes,4,opt,name=participant_identity,json=participantIdentity,proto3" json:"participant_identity,omitempty"`
// Optional name of the participant in LiveKit room
ParticipantName string `protobuf:"bytes,7,opt,name=participant_name,json=participantName,proto3" json:"participant_name,omitempty"`
// Optionally send following DTMF digits (extension codes) when making a call.
// Character 'w' can be used to add a 0.5 sec delay.
Dtmf string `protobuf:"bytes,5,opt,name=dtmf,proto3" json:"dtmf,omitempty"`
// Optionally play ringtone in the room as an audible indicator for existing participants
PlayRingtone bool `protobuf:"varint,6,opt,name=play_ringtone,json=playRingtone,proto3" json:"play_ringtone,omitempty"`
}
func (x *CreateSIPParticipantRequest) Reset() {
@@ -967,6 +971,13 @@ func (x *CreateSIPParticipantRequest) GetParticipantIdentity() string {
return ""
}
func (x *CreateSIPParticipantRequest) GetParticipantName() string {
if x != nil {
return x.ParticipantName
}
return ""
}
func (x *CreateSIPParticipantRequest) GetDtmf() string {
if x != nil {
return x.Dtmf
@@ -974,6 +985,13 @@ func (x *CreateSIPParticipantRequest) GetDtmf() string {
return ""
}
func (x *CreateSIPParticipantRequest) GetPlayRingtone() bool {
if x != nil {
return x.PlayRingtone
}
return false
}
type SIPParticipantInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1162,7 +1180,7 @@ var file_livekit_sip_proto_rawDesc = []byte{
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73,
0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68,
0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74,
0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72,
0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69,
@@ -1173,8 +1191,13 @@ var file_livekit_sip_proto_rawDesc = []byte{
0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x74, 0x6d, 0x66,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x22, 0x8b, 0x01, 0x0a,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f,
0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
0x70, 0x6c, 0x61, 0x79, 0x52, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x22, 0x8b, 0x01, 0x0a,
0x12, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72,

View File

@@ -2191,63 +2191,65 @@ func (s *sIPServer) PathPrefix() string {
}
var twirpFileDescriptor3 = []byte{
// 915 bytes of a gzipped FileDescriptorProto
// 949 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x72, 0xdb, 0x44,
0x14, 0xae, 0x2c, 0x27, 0xb1, 0x8f, 0x53, 0x27, 0xd9, 0xd8, 0x8c, 0x70, 0x42, 0xc9, 0xa8, 0xed,
0x14, 0xae, 0x2d, 0x27, 0xb1, 0x8f, 0x13, 0x27, 0xd9, 0xd8, 0x8c, 0x70, 0x42, 0xc9, 0x28, 0xed,
0x50, 0x7e, 0xc6, 0x19, 0xcc, 0x0c, 0x33, 0xf4, 0x8e, 0x24, 0xd3, 0xd6, 0xd3, 0x4e, 0x30, 0x4a,
0xb9, 0x80, 0xe9, 0x20, 0x14, 0xef, 0xa6, 0xd9, 0xa9, 0x2c, 0x09, 0xed, 0x2a, 0x94, 0x67, 0xe0,
0x9a, 0x87, 0x80, 0x77, 0xe0, 0x06, 0xae, 0x79, 0x04, 0x5e, 0x80, 0xa7, 0xe8, 0xec, 0x6a, 0x25,
0x6b, 0x65, 0xc9, 0xb1, 0xef, 0xec, 0xb3, 0xdf, 0x7e, 0xfa, 0xce, 0xcf, 0x77, 0x24, 0xd8, 0xf3,
0xe9, 0x0d, 0x79, 0x43, 0xb9, 0xcb, 0x68, 0x34, 0x8c, 0xe2, 0x90, 0x87, 0x68, 0x4b, 0x85, 0xec,
0x3f, 0x4c, 0xe8, 0x9f, 0xc6, 0xc4, 0xe3, 0xe4, 0x62, 0x3c, 0x79, 0x19, 0x27, 0xc1, 0x1b, 0x87,
0xfc, 0x9c, 0x10, 0xc6, 0xd1, 0xa7, 0xb0, 0x47, 0x83, 0xcb, 0x30, 0x09, 0xb0, 0xeb, 0x61, 0x1c,
0x13, 0xc6, 0x08, 0xb3, 0x8c, 0x23, 0xf3, 0x51, 0xdb, 0xd9, 0x55, 0x07, 0x5f, 0x67, 0x71, 0xf4,
0x31, 0xec, 0x86, 0x09, 0xd7, 0xd0, 0x56, 0xe3, 0xc8, 0x78, 0xd4, 0x76, 0x76, 0xb2, 0xb8, 0x02,
0xa3, 0x8f, 0x20, 0x0f, 0xb9, 0x41, 0x32, 0xbb, 0x24, 0xb1, 0x65, 0x4a, 0x64, 0x37, 0x0b, 0x9f,
0xcb, 0x28, 0xfa, 0x12, 0xfa, 0x99, 0x80, 0x14, 0xc7, 0xdc, 0x98, 0xbc, 0x26, 0x6f, 0xad, 0xa6,
0x10, 0x71, 0xd2, 0xb0, 0x0c, 0x67, 0x5f, 0x01, 0xd2, 0x1b, 0xcc, 0x11, 0xc7, 0xe2, 0x01, 0xa5,
0x7b, 0x56, 0x5b, 0xca, 0xee, 0xea, 0x68, 0x21, 0x3a, 0x03, 0x26, 0x8c, 0xc4, 0x81, 0x37, 0x23,
0xd6, 0x46, 0x2a, 0x5a, 0xc5, 0xbf, 0x53, 0xe1, 0x22, 0x34, 0xf2, 0x18, 0xfb, 0x25, 0x8c, 0xb1,
0xb5, 0xa9, 0x41, 0x27, 0x2a, 0x2c, 0xea, 0x96, 0xe7, 0x97, 0xd3, 0x6e, 0x49, 0x6c, 0x5e, 0xa3,
0x9c, 0xb7, 0x08, 0xce, 0x89, 0x5b, 0x3a, 0x38, 0x63, 0xb6, 0xff, 0x36, 0x61, 0x3b, 0xeb, 0xd2,
0x38, 0xb8, 0x0a, 0xd1, 0x11, 0x6c, 0x33, 0x1a, 0xb9, 0x5c, 0x04, 0x5c, 0x8a, 0x2d, 0x43, 0x5e,
0x04, 0x46, 0xa3, 0x14, 0x83, 0xab, 0x9b, 0xd8, 0x58, 0xa3, 0x89, 0xe6, 0xca, 0x4d, 0x6c, 0xae,
0xd7, 0xc4, 0x8d, 0xb5, 0x9b, 0x08, 0x2b, 0x37, 0x71, 0x73, 0xf5, 0x26, 0x6e, 0xad, 0xd1, 0xc4,
0xd6, 0x3a, 0x4d, 0x6c, 0xd7, 0x34, 0xb1, 0x0f, 0xfb, 0x2f, 0x28, 0xe3, 0x25, 0xb7, 0xd9, 0xa7,
0xd0, 0xd3, 0xc3, 0x2c, 0x0a, 0x03, 0x26, 0xb8, 0x37, 0x28, 0x27, 0xb3, 0xd4, 0x79, 0x9d, 0x51,
0x7f, 0xa8, 0x8c, 0x3b, 0x2c, 0x0e, 0x82, 0x93, 0x62, 0xec, 0xaf, 0xa0, 0x7f, 0x46, 0x7c, 0xb2,
0xe8, 0xe5, 0x5b, 0x07, 0xc5, 0x7e, 0x02, 0xfd, 0x8b, 0xf1, 0xe4, 0x8c, 0xb2, 0xc8, 0xe3, 0xd3,
0x6b, 0x27, 0xf1, 0xc9, 0x19, 0x8d, 0xc9, 0x94, 0xa3, 0x03, 0x68, 0xc7, 0x61, 0x38, 0x73, 0x65,
0x05, 0xd2, 0x7b, 0x2d, 0x11, 0x38, 0x17, 0x99, 0xef, 0x82, 0x19, 0xd1, 0x40, 0x39, 0x5d, 0xfc,
0xb4, 0xcf, 0xe1, 0xfd, 0x12, 0xcf, 0x38, 0xc0, 0xf4, 0x86, 0xe2, 0xc4, 0xf3, 0xd1, 0x87, 0xd0,
0x91, 0x5c, 0x51, 0x4c, 0xae, 0xe8, 0xdb, 0x4c, 0x85, 0x08, 0x4d, 0x64, 0xa4, 0x82, 0xef, 0x5f,
0x03, 0x76, 0x4a, 0x84, 0xc8, 0x81, 0x1e, 0x56, 0xff, 0xdd, 0x38, 0xf1, 0x89, 0x8b, 0xa5, 0x54,
0xc9, 0xd7, 0x19, 0xdd, 0x2b, 0x96, 0x68, 0x31, 0xa1, 0x67, 0x77, 0x1c, 0x84, 0x17, 0xd3, 0xfc,
0x11, 0x2c, 0x9d, 0x93, 0xe6, 0xb2, 0xa5, 0x9c, 0xce, 0xc8, 0xae, 0xe3, 0x9d, 0x27, 0xf8, 0xec,
0x8e, 0xf3, 0x1e, 0xae, 0x3c, 0x39, 0xd9, 0x84, 0xa6, 0xa0, 0xb5, 0x7f, 0x37, 0xe0, 0x30, 0xdf,
0xb7, 0x45, 0x96, 0xac, 0x55, 0x9f, 0xa5, 0x40, 0x95, 0x8c, 0x55, 0xf7, 0x50, 0x47, 0xa2, 0x44,
0x77, 0xb2, 0xa6, 0x66, 0xbe, 0x6e, 0xf1, 0xb4, 0xa5, 0x0c, 0x7d, 0x02, 0x7b, 0xd7, 0x14, 0x13,
0x37, 0xba, 0x0e, 0x03, 0x52, 0xdc, 0xb5, 0x2d, 0x67, 0x47, 0x1c, 0x4c, 0x44, 0x3c, 0xf5, 0x91,
0xfd, 0x97, 0x01, 0xfb, 0x0b, 0x79, 0x5d, 0x85, 0xe8, 0x18, 0x7a, 0x62, 0x72, 0x4a, 0xb5, 0xc9,
0x26, 0x68, 0x8f, 0xd1, 0x48, 0xbb, 0x82, 0x73, 0xfd, 0x8d, 0xf5, 0xf5, 0x9b, 0xab, 0xe8, 0x6f,
0x56, 0xeb, 0x3f, 0x84, 0x81, 0xf2, 0x4f, 0x45, 0x51, 0xed, 0x6f, 0xe1, 0xa0, 0xf2, 0x54, 0x99,
0x6c, 0xa4, 0x9b, 0xec, 0xb0, 0xbe, 0xd3, 0x73, 0xaf, 0x7d, 0x03, 0x87, 0xb9, 0xd7, 0xaa, 0xfa,
0xb8, 0x6e, 0xe1, 0xec, 0x7f, 0x0c, 0x38, 0xc8, 0x27, 0x63, 0xe2, 0xc5, 0x9c, 0x4e, 0x69, 0xe4,
0x05, 0x7c, 0x65, 0x0f, 0xa3, 0x7b, 0xd0, 0x11, 0x88, 0xa9, 0xe7, 0xfb, 0x2e, 0x0f, 0x95, 0x8b,
0xda, 0x8c, 0x46, 0xa7, 0x9e, 0xef, 0xbf, 0x0c, 0x75, 0x2b, 0x9b, 0x25, 0x2b, 0x7f, 0x0e, 0xbd,
0x68, 0xfe, 0x50, 0x97, 0x62, 0x12, 0x70, 0xca, 0x7f, 0x55, 0x6b, 0x7d, 0xbf, 0x70, 0x36, 0x56,
0x47, 0x08, 0x41, 0x13, 0xf3, 0xd9, 0x95, 0x7a, 0x67, 0xca, 0xdf, 0xf6, 0x6f, 0x06, 0x20, 0x5d,
0xbf, 0x1c, 0xa3, 0x87, 0xd0, 0xd5, 0xd9, 0x95, 0xfc, 0xbb, 0x1a, 0x6f, 0xad, 0x88, 0x46, 0xbd,
0x88, 0x65, 0x49, 0x8d, 0xfe, 0x6b, 0x82, 0x79, 0x31, 0x9e, 0xa0, 0xa7, 0xd0, 0xd5, 0x3f, 0x72,
0xd0, 0x7c, 0x4b, 0x54, 0x7e, 0xfd, 0x0c, 0xaa, 0x17, 0x2d, 0x7a, 0x0e, 0xdb, 0xc5, 0x35, 0x8d,
0xe6, 0xa3, 0x52, 0xb1, 0xd4, 0x07, 0x1f, 0xd4, 0x9c, 0xaa, 0xb1, 0x7b, 0x0a, 0x5d, 0x7d, 0x5d,
0x17, 0x54, 0x55, 0xee, 0xf1, 0x3a, 0x55, 0xaf, 0x0a, 0xdf, 0x70, 0xda, 0xa6, 0x7c, 0xb8, 0x98,
0x65, 0xc5, 0xac, 0x0e, 0x96, 0x0e, 0x3c, 0xfa, 0x29, 0x7f, 0x63, 0x69, 0xdc, 0xf7, 0xcb, 0xc9,
0x55, 0x31, 0x3f, 0x58, 0x0e, 0x52, 0x85, 0x78, 0x55, 0x78, 0x6f, 0xd5, 0xe8, 0x5f, 0xe6, 0xb5,
0x5b, 0xf4, 0x7f, 0x0f, 0xbd, 0x2a, 0x5f, 0xa1, 0x07, 0x8b, 0xc5, 0x59, 0xb4, 0xdd, 0xe0, 0xa0,
0xc8, 0x5d, 0x1a, 0xeb, 0x93, 0x27, 0x3f, 0xdc, 0x7f, 0x4d, 0xf9, 0x75, 0x72, 0x39, 0x9c, 0x86,
0xb3, 0x63, 0x05, 0x3c, 0x96, 0x9f, 0xd8, 0xd3, 0xd0, 0xcf, 0x02, 0x7f, 0x36, 0xee, 0xbe, 0xa0,
0x37, 0xe4, 0x39, 0xe5, 0xc3, 0x89, 0x38, 0xfa, 0xbf, 0xd1, 0x55, 0xff, 0x1f, 0x3f, 0x96, 0x81,
0xcb, 0x4d, 0x79, 0xe5, 0x8b, 0x77, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xf3, 0xa7, 0xf0, 0xaa,
0x0b, 0x00, 0x00,
0xb9, 0x80, 0xe9, 0x20, 0x14, 0xef, 0x26, 0xd9, 0xa9, 0xac, 0x15, 0xda, 0x55, 0x68, 0x9f, 0x81,
0x4b, 0x86, 0x87, 0x80, 0x77, 0xe0, 0x86, 0x7b, 0x1e, 0x81, 0x17, 0xe0, 0x29, 0x98, 0x5d, 0xad,
0x64, 0xad, 0x2d, 0xa5, 0xf6, 0x9d, 0xfd, 0xed, 0xb7, 0x47, 0xdf, 0xf9, 0xf9, 0x8e, 0x04, 0xbb,
0x01, 0xbd, 0x25, 0xaf, 0xa9, 0xf0, 0x38, 0x8d, 0x06, 0x51, 0xcc, 0x04, 0x43, 0x1b, 0x1a, 0x72,
0xfe, 0xb0, 0xa0, 0x77, 0x1a, 0x13, 0x5f, 0x90, 0x8b, 0xd1, 0xf8, 0x65, 0x9c, 0x84, 0xaf, 0x5d,
0xf2, 0x73, 0x42, 0xb8, 0x40, 0x9f, 0xc2, 0x2e, 0x0d, 0x2f, 0x59, 0x12, 0x62, 0xcf, 0xc7, 0x38,
0x26, 0x9c, 0x13, 0x6e, 0xd7, 0x0e, 0xad, 0x47, 0x2d, 0x77, 0x47, 0x1f, 0x7c, 0x9d, 0xe1, 0xe8,
0x63, 0xd8, 0x61, 0x89, 0x30, 0xd8, 0x76, 0xfd, 0xb0, 0xf6, 0xa8, 0xe5, 0x6e, 0x67, 0xb8, 0x26,
0xa3, 0x8f, 0x20, 0x87, 0xbc, 0x30, 0x99, 0x5e, 0x92, 0xd8, 0xb6, 0x14, 0xb3, 0x93, 0xc1, 0xe7,
0x0a, 0x45, 0x5f, 0x42, 0x2f, 0x13, 0x90, 0xf2, 0xb8, 0x17, 0x93, 0x6b, 0xf2, 0xc6, 0x6e, 0x48,
0x11, 0x27, 0x75, 0xbb, 0xe6, 0xee, 0x69, 0x42, 0x7a, 0x83, 0xbb, 0xf2, 0x58, 0x3e, 0x60, 0xee,
0x9e, 0xdd, 0x52, 0xb2, 0x3b, 0x26, 0x5b, 0x8a, 0xce, 0x88, 0x09, 0x27, 0x71, 0xe8, 0x4f, 0x89,
0xbd, 0x96, 0x8a, 0xd6, 0xf8, 0x77, 0x1a, 0x2e, 0x52, 0x23, 0x9f, 0xf3, 0x5f, 0x58, 0x8c, 0xed,
0x75, 0x83, 0x3a, 0xd6, 0xb0, 0xac, 0x5b, 0x9e, 0x5f, 0x1e, 0x76, 0x43, 0x71, 0xf3, 0x1a, 0xe5,
0x71, 0x8b, 0xe4, 0x3c, 0x70, 0xd3, 0x24, 0x67, 0x91, 0x9d, 0xbf, 0x2d, 0xd8, 0xcc, 0xba, 0x34,
0x0a, 0xaf, 0x18, 0x3a, 0x84, 0x4d, 0x4e, 0x23, 0x4f, 0x48, 0xc0, 0xa3, 0xd8, 0xae, 0xa9, 0x8b,
0xc0, 0x69, 0x94, 0x72, 0x70, 0x79, 0x13, 0xeb, 0x2b, 0x34, 0xd1, 0x5a, 0xba, 0x89, 0x8d, 0xd5,
0x9a, 0xb8, 0xb6, 0x72, 0x13, 0x61, 0xe9, 0x26, 0xae, 0x2f, 0xdf, 0xc4, 0x8d, 0x15, 0x9a, 0xd8,
0x5c, 0xa5, 0x89, 0xad, 0x8a, 0x26, 0xf6, 0x60, 0xef, 0x05, 0xe5, 0x62, 0xce, 0x6d, 0xce, 0x29,
0x74, 0x4d, 0x98, 0x47, 0x2c, 0xe4, 0x32, 0xf6, 0x1a, 0x15, 0x64, 0x9a, 0x3a, 0xaf, 0x3d, 0xec,
0x0d, 0xb4, 0x71, 0x07, 0xc5, 0x41, 0x70, 0x53, 0x8e, 0xf3, 0x15, 0xf4, 0xce, 0x48, 0x40, 0x16,
0xbd, 0xfc, 0xce, 0x41, 0x71, 0x9e, 0x40, 0xef, 0x62, 0x34, 0x3e, 0xa3, 0x3c, 0xf2, 0xc5, 0xe4,
0xc6, 0x4d, 0x02, 0x72, 0x46, 0x63, 0x32, 0x11, 0x68, 0x1f, 0x5a, 0x31, 0x63, 0x53, 0x4f, 0x55,
0x20, 0xbd, 0xd7, 0x94, 0xc0, 0xb9, 0xcc, 0x7c, 0x07, 0xac, 0x88, 0x86, 0xda, 0xe9, 0xf2, 0xa7,
0x73, 0x0e, 0xef, 0xcf, 0xc5, 0x19, 0x85, 0x98, 0xde, 0x52, 0x9c, 0xf8, 0x01, 0xfa, 0x10, 0xda,
0x2a, 0x56, 0x14, 0x93, 0x2b, 0xfa, 0x26, 0x53, 0x21, 0xa1, 0xb1, 0x42, 0x4a, 0xe2, 0xfd, 0x53,
0x83, 0xed, 0xb9, 0x80, 0xc8, 0x85, 0x2e, 0xd6, 0xff, 0xbd, 0x38, 0x09, 0x88, 0x87, 0x95, 0x54,
0x15, 0xaf, 0x3d, 0xbc, 0x5f, 0x2c, 0xd1, 0x62, 0x42, 0xcf, 0xee, 0xb9, 0x08, 0x2f, 0xa6, 0xf9,
0x23, 0xd8, 0x66, 0x4c, 0x9a, 0xcb, 0x56, 0x72, 0xda, 0x43, 0xa7, 0x2a, 0xee, 0x2c, 0xc1, 0x67,
0xf7, 0xdc, 0xf7, 0x70, 0xe9, 0xc9, 0xc9, 0x3a, 0x34, 0x64, 0x58, 0xe7, 0xf7, 0x1a, 0x1c, 0xe4,
0xfb, 0xb6, 0x18, 0x25, 0x6b, 0xd5, 0x67, 0x29, 0x51, 0x27, 0x63, 0x57, 0x3d, 0xd4, 0x55, 0x2c,
0xd9, 0x9d, 0xac, 0xa9, 0x99, 0xaf, 0x9b, 0x22, 0x6d, 0x29, 0x47, 0x9f, 0xc0, 0xee, 0x0d, 0xc5,
0xc4, 0x8b, 0x6e, 0x58, 0x48, 0x8a, 0xbb, 0xb6, 0xe9, 0x6e, 0xcb, 0x83, 0xb1, 0xc4, 0x53, 0x1f,
0x39, 0x7f, 0xd5, 0x60, 0x6f, 0x21, 0xaf, 0x2b, 0x86, 0x8e, 0xa1, 0x2b, 0x27, 0x67, 0xae, 0x36,
0xd9, 0x04, 0xed, 0x72, 0x1a, 0x19, 0x57, 0x70, 0xae, 0xbf, 0xbe, 0xba, 0x7e, 0x6b, 0x19, 0xfd,
0x8d, 0x72, 0xfd, 0x07, 0xd0, 0xd7, 0xfe, 0x29, 0x29, 0xaa, 0xf3, 0x2d, 0xec, 0x97, 0x9e, 0x6a,
0x93, 0x0d, 0x4d, 0x93, 0x1d, 0x54, 0x77, 0x7a, 0xe6, 0xb5, 0x6f, 0xe0, 0x20, 0xf7, 0x5a, 0x59,
0x1f, 0x57, 0x2d, 0x9c, 0xf3, 0x5b, 0x1d, 0xf6, 0xf3, 0xc9, 0x18, 0xfb, 0xb1, 0xa0, 0x13, 0x1a,
0xf9, 0xa1, 0x58, 0xda, 0xc3, 0xe8, 0x3e, 0xb4, 0x25, 0x63, 0xe2, 0x07, 0x81, 0x27, 0x98, 0x76,
0x51, 0x8b, 0xd3, 0xe8, 0xd4, 0x0f, 0x82, 0x97, 0xcc, 0xb4, 0xb2, 0x35, 0x67, 0xe5, 0xcf, 0xa1,
0x1b, 0xcd, 0x1e, 0xea, 0x51, 0x4c, 0x42, 0x41, 0xc5, 0x5b, 0xbd, 0xd6, 0xf7, 0x0a, 0x67, 0x23,
0x7d, 0x24, 0xf7, 0x69, 0xf1, 0x4a, 0xe1, 0x45, 0xb7, 0x5d, 0xc0, 0x55, 0x74, 0x04, 0x0d, 0x2c,
0xa6, 0x57, 0xfa, 0xf5, 0xaa, 0x7e, 0xa3, 0x23, 0xd8, 0x8a, 0x02, 0xff, 0xad, 0x17, 0xd3, 0xf0,
0x5a, 0xb0, 0x30, 0x5d, 0xdb, 0x4d, 0x77, 0x53, 0x82, 0xae, 0xc6, 0x9c, 0x5f, 0x6b, 0x80, 0xcc,
0x7a, 0xa8, 0xb1, 0x7c, 0x08, 0x1d, 0x53, 0xad, 0x2e, 0xc7, 0x96, 0xa1, 0xb3, 0x32, 0xa9, 0x7a,
0x75, 0x52, 0x77, 0x15, 0x69, 0xf8, 0x6f, 0x03, 0xac, 0x8b, 0xd1, 0x18, 0x3d, 0x85, 0x8e, 0xf9,
0xd1, 0x84, 0x66, 0x5b, 0xa7, 0xf4, 0x6b, 0xaa, 0x5f, 0xbe, 0xb8, 0xd1, 0x73, 0xd8, 0x2c, 0xae,
0x7d, 0x34, 0x1b, 0xbd, 0x92, 0x97, 0x44, 0xff, 0x83, 0x8a, 0x53, 0x3d, 0xc6, 0x4f, 0xa1, 0x63,
0xae, 0xff, 0x82, 0xaa, 0xd2, 0xf7, 0x42, 0x95, 0xaa, 0x57, 0x85, 0x6f, 0x42, 0x63, 0xf3, 0x3e,
0x5c, 0xcc, 0xb2, 0x64, 0xf6, 0xfb, 0x77, 0x1a, 0x08, 0xfd, 0x94, 0xbf, 0x01, 0x8d, 0xd8, 0x47,
0xf3, 0xc9, 0x95, 0x45, 0x7e, 0x70, 0x37, 0x49, 0x17, 0xe2, 0x55, 0xe1, 0x3d, 0x58, 0xa1, 0xff,
0x2e, 0xef, 0xbe, 0x43, 0xff, 0xf7, 0xd0, 0x2d, 0xf3, 0x29, 0x7a, 0xb0, 0x58, 0x9c, 0x45, 0x1b,
0xf7, 0xf7, 0x8b, 0xb1, 0xe7, 0xc6, 0xfa, 0xe4, 0xc9, 0x0f, 0x47, 0xd7, 0x54, 0xdc, 0x24, 0x97,
0x83, 0x09, 0x9b, 0x1e, 0x6b, 0xe2, 0xb1, 0xfa, 0x64, 0x9f, 0xb0, 0x20, 0x03, 0xfe, 0xac, 0x6f,
0xbd, 0xa0, 0xb7, 0xe4, 0x39, 0x15, 0x83, 0xb1, 0x3c, 0xfa, 0xaf, 0xde, 0xd1, 0xff, 0x1f, 0x3f,
0x56, 0xc0, 0xe5, 0xba, 0xba, 0xf2, 0xc5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x16, 0xd4, 0x9c,
0xda, 0xfa, 0x0b, 0x00, 0x00,
}

View File

@@ -22,10 +22,17 @@ type RoomID string
type RoomName string
type ConnectionID string
type NodeID string
type ParticipantKey string
type RoomKey struct {
ProjectID string
RoomName RoomName
}
type ParticipantKey struct {
RoomKey
Identity ParticipantIdentity
}
type stringTypes interface {
ParticipantID | RoomID | TrackID | ParticipantIdentity | ParticipantName | RoomName | ConnectionID | NodeID | ParticipantKey
ParticipantID | RoomID | TrackID | ParticipantIdentity | ParticipantName | RoomName | ConnectionID | NodeID
}
func IDsAsStrings[T stringTypes](ids []T) []string {

View File

@@ -15,6 +15,7 @@
package logger
import (
"log/slog"
"os"
"strings"
"sync"
@@ -39,6 +40,7 @@ func InitFromConfig(conf *Config, name string) {
l, err := NewZapLogger(conf)
if err == nil {
SetLogger(l, name)
slog.SetDefault(slog.New(ToSlogHandler(l)))
}
}
@@ -167,6 +169,7 @@ type zapConfig struct {
conf *Config
sc *sharedConfig
writeEnablers *xsync.MapOf[string, *zaputil.WriteEnabler]
levelEnablers *xsync.MapOf[string, *zaputil.OrLevelEnabler]
tap *zaputil.WriteEnabler
}
@@ -178,9 +181,14 @@ func WithTap(tap *zaputil.WriteEnabler) ZapLoggerOption {
}
}
type ZapComponentLeveler interface {
ComponentLevel(component string) zapcore.LevelEnabler
}
type ZapLogger interface {
Logger
ToZap() *zap.SugaredLogger
ComponentLeveler() ZapComponentLeveler
}
type zapLogger[T zaputil.Encoder[T]] struct {
@@ -199,6 +207,7 @@ func NewZapLogger(conf *Config, opts ...ZapLoggerOption) (ZapLogger, error) {
conf: conf,
sc: newSharedConfig(conf),
writeEnablers: xsync.NewMapOf[string, *zaputil.WriteEnabler](),
levelEnablers: xsync.NewMapOf[string, *zaputil.OrLevelEnabler](),
tap: zaputil.NewDiscardWriteEnabler(),
}
for _, opt := range opts {
@@ -252,6 +261,25 @@ func (l *zapLogger[T]) ToZap() *zap.SugaredLogger {
return l.zap.WithOptions(zap.WrapCore(func(zapcore.Core) zapcore.Core { return c }))
}
type zapLoggerComponentLeveler[T zaputil.Encoder[T]] struct {
zl *zapLogger[T]
}
func (l zapLoggerComponentLeveler[T]) ComponentLevel(component string) zapcore.LevelEnabler {
if l.zl.component != "" {
component = l.zl.component + "." + component
}
enab, _ := l.zl.levelEnablers.LoadOrCompute(component, func() *zaputil.OrLevelEnabler {
return &zaputil.OrLevelEnabler{l.zl.sc.ComponentLevel(component), l.zl.tap}
})
return enab
}
func (l *zapLogger[T]) ComponentLeveler() ZapComponentLeveler {
return zapLoggerComponentLeveler[T]{l}
}
func (l *zapLogger[T]) Debugw(msg string, keysAndValues ...interface{}) {
l.zap.Debugw(msg, keysAndValues...)
}

View File

@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/livekit/protocol/logger/zaputil"
@@ -99,6 +100,22 @@ func TestLoggerComponent(t *testing.T) {
require.Equal(t, "foo", log.Msg)
require.Equal(t, "baz", log.Bar)
})
t.Run("component enabler for tapped logger returns lowest enabled level", func(t *testing.T) {
tapLevel := zap.NewAtomicLevel()
l, err := NewZapLogger(&Config{Level: "info"}, WithTap(zaputil.NewWriteEnabler(&testBufferedWriteSyncer{}, tapLevel)))
require.NoError(t, err)
lvl := l.ComponentLeveler().ComponentLevel("foo")
// check config level
require.False(t, lvl.Enabled(zapcore.DebugLevel))
require.True(t, lvl.Enabled(zapcore.InfoLevel))
// check tap level
tapLevel.SetLevel(zapcore.DebugLevel)
require.True(t, lvl.Enabled(zapcore.DebugLevel))
})
}
type testBufferedWriteSyncer struct {

View File

@@ -16,7 +16,6 @@ package pionlogger
import (
"fmt"
"strings"
"github.com/livekit/protocol/logger"
)
@@ -24,7 +23,7 @@ import (
// implements webrtc.LeveledLogger
type logAdapter struct {
logger logger.Logger
ignoredPrefixes []string
ignoredPrefixes prefixSet
}
func (l *logAdapter) Trace(msg string) {
@@ -36,7 +35,7 @@ func (l *logAdapter) Tracef(format string, args ...interface{}) {
}
func (l *logAdapter) Debug(msg string) {
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Debugw(msg)
@@ -44,14 +43,14 @@ func (l *logAdapter) Debug(msg string) {
func (l *logAdapter) Debugf(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Debugw(msg)
}
func (l *logAdapter) Info(msg string) {
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Infow(msg)
@@ -59,14 +58,14 @@ func (l *logAdapter) Info(msg string) {
func (l *logAdapter) Infof(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Infow(msg)
}
func (l *logAdapter) Warn(msg string) {
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Warnw(msg, nil)
@@ -74,14 +73,14 @@ func (l *logAdapter) Warn(msg string) {
func (l *logAdapter) Warnf(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Warnw(msg, nil)
}
func (l *logAdapter) Error(msg string) {
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Errorw(msg, nil)
@@ -89,17 +88,8 @@ func (l *logAdapter) Error(msg string) {
func (l *logAdapter) Errorf(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if l.shouldIgnore(msg) {
if l.ignoredPrefixes.Match(msg) {
return
}
l.logger.Errorw(msg, nil)
}
func (l *logAdapter) shouldIgnore(msg string) bool {
for _, prefix := range l.ignoredPrefixes {
if strings.HasPrefix(msg, prefix) {
return true
}
}
return false
}

View File

@@ -15,13 +15,15 @@
package pionlogger
import (
"strings"
"github.com/pion/logging"
"github.com/livekit/protocol/logger"
)
var (
pionIgnoredPrefixes = map[string][]string{
pionIgnoredPrefixes = map[string]prefixSet{
"ice": {
"pingAllCandidates called with no candidate pairs",
"failed to send packet: io: read/write on closed pipe",
@@ -48,20 +50,50 @@ var (
}
)
// LoggerFactory implements webrtc.LoggerFactory interface
type LoggerFactory struct {
logger logger.Logger
}
type prefixSet []string
func NewLoggerFactory(logger logger.Logger) *LoggerFactory {
return &LoggerFactory{
logger: logger,
func (s prefixSet) Match(msg string) bool {
for _, prefix := range s {
if strings.HasPrefix(msg, prefix) {
return true
}
}
return false
}
func (f *LoggerFactory) NewLogger(scope string) logging.LeveledLogger {
return &logAdapter{
logger: f.logger.WithComponent("pion." + scope).WithCallDepth(1),
func NewLoggerFactory(l logger.Logger) logging.LoggerFactory {
if zl, ok := l.(logger.ZapLogger); ok {
return &zapLoggerFactory{zl}
}
return &loggerFactory{l}
}
// zapLoggerFactory implements logging.LoggerFactory interface for zap loggers
type zapLoggerFactory struct {
logger logger.ZapLogger
}
func (f *zapLoggerFactory) NewLogger(scope string) logging.LeveledLogger {
return &zapLogAdapter{
logger: f.logger,
level: f.logger.ComponentLeveler().ComponentLevel(formatComponent(scope)),
scope: scope,
ignoredPrefixes: pionIgnoredPrefixes[scope],
}
}
// loggerFactory implements logging.LoggerFactory interface for generic loggers
type loggerFactory struct {
logger logger.Logger
}
func (f *loggerFactory) NewLogger(scope string) logging.LeveledLogger {
return &logAdapter{
logger: f.logger.WithComponent(formatComponent(scope)).WithCallDepth(1),
ignoredPrefixes: pionIgnoredPrefixes[scope],
}
}
func formatComponent(scope string) string {
return "pion." + scope
}

View File

@@ -0,0 +1,139 @@
// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package pionlogger
import (
"fmt"
"go.uber.org/atomic"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/livekit/protocol/logger"
)
const (
zapLogAdapterStateCreated = iota
zapLogAdapterStateBuilding
zapLogAdapterStateReady
)
// implements webrtc.LeveledLogger
type zapLogAdapter struct {
state atomic.Uint32
logger logger.Logger
level zapcore.LevelEnabler
scope string
ignoredPrefixes prefixSet
}
func (l *zapLogAdapter) init() {
for l.state.Load() != zapLogAdapterStateReady {
if l.state.CompareAndSwap(zapLogAdapterStateCreated, zapLogAdapterStateBuilding) {
l.logger = l.logger.WithComponent(formatComponent(l.scope)).WithCallDepth(1)
l.state.Store(zapLogAdapterStateReady)
}
}
}
func (l *zapLogAdapter) Trace(msg string) {
if l.level.Enabled(zap.DebugLevel) {
l.init()
l.logger.Debugw(msg)
}
}
func (l *zapLogAdapter) Tracef(format string, args ...interface{}) {
if l.level.Enabled(zap.DebugLevel) {
l.init()
l.logger.Debugw(fmt.Sprintf(format, args...))
}
}
func (l *zapLogAdapter) Debug(msg string) {
if l.level.Enabled(zap.DebugLevel) {
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Debugw(msg)
}
}
}
func (l *zapLogAdapter) Debugf(format string, args ...interface{}) {
if l.level.Enabled(zap.DebugLevel) {
msg := fmt.Sprintf(format, args...)
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Debugw(msg)
}
}
}
func (l *zapLogAdapter) Info(msg string) {
if l.level.Enabled(zap.InfoLevel) {
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Infow(msg)
}
}
}
func (l *zapLogAdapter) Infof(format string, args ...interface{}) {
if l.level.Enabled(zap.InfoLevel) {
msg := fmt.Sprintf(format, args...)
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Infow(msg)
}
}
}
func (l *zapLogAdapter) Warn(msg string) {
if l.level.Enabled(zap.WarnLevel) {
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Warnw(msg, nil)
}
}
}
func (l *zapLogAdapter) Warnf(format string, args ...interface{}) {
if l.level.Enabled(zap.WarnLevel) {
msg := fmt.Sprintf(format, args...)
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Warnw(msg, nil)
}
}
}
func (l *zapLogAdapter) Error(msg string) {
if l.level.Enabled(zap.ErrorLevel) {
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Errorw(msg, nil)
}
}
}
func (l *zapLogAdapter) Errorf(format string, args ...interface{}) {
if l.level.Enabled(zap.ErrorLevel) {
msg := fmt.Sprintf(format, args...)
if !l.ignoredPrefixes.Match(msg) {
l.init()
l.logger.Errorw(msg, nil)
}
}
}

102
logger/slog.go Normal file
View File

@@ -0,0 +1,102 @@
package logger
import (
"context"
"log/slog"
"github.com/go-logr/logr"
"go.uber.org/zap/exp/zapslog"
)
// NewSlogDiscard creates a slog.Handler that discards all logs.
func NewSlogDiscard() slog.Handler {
return slogDiscard{}
}
// ToSlogHandler converts Logger to slog.Handler.
func ToSlogHandler(log Logger) slog.Handler {
switch log := log.(type) {
case ZapLogger:
zlog := log.ToZap().Desugar()
return zapslog.NewHandler(zlog.Core(), &zapslog.HandlerOptions{AddSource: true})
case LogRLogger:
return logr.ToSlogHandler(log.toLogr())
}
return slogHandler{log, ""}
}
type slogDiscard struct{}
func (_ slogDiscard) Enabled(ctx context.Context, level slog.Level) bool {
return false
}
func (_ slogDiscard) Handle(ctx context.Context, record slog.Record) error {
return nil
}
func (l slogDiscard) WithAttrs(attrs []slog.Attr) slog.Handler {
return l
}
func (l slogDiscard) WithGroup(name string) slog.Handler {
return l
}
type slogHandler struct {
log Logger
group string
}
func (l slogHandler) Enabled(ctx context.Context, level slog.Level) bool {
return true // so such method on Logger
}
func (l slogHandler) getGroup() string {
group := l.group
if group != "" {
group = group + "."
}
return group
}
func (l slogHandler) Handle(ctx context.Context, r slog.Record) error {
keysAndValues := make([]any, 0, r.NumAttrs()*2)
group := l.getGroup()
r.Attrs(func(attr slog.Attr) bool {
keysAndValues = append(keysAndValues, group+attr.Key, attr.Value.Resolve().Any())
return true
})
switch r.Level {
case slog.LevelDebug:
l.log.Debugw(r.Message, keysAndValues...)
default:
fallthrough
case slog.LevelInfo:
l.log.Infow(r.Message, keysAndValues...)
case slog.LevelWarn:
l.log.Warnw(r.Message, nil, keysAndValues...)
case slog.LevelError:
l.log.Errorw(r.Message, nil, keysAndValues...)
}
return nil
}
func (l slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
log := l.log
keysAndValues := make([]any, 0, len(attrs)*2)
group := l.getGroup()
for _, attr := range attrs {
keysAndValues = append(keysAndValues, group+attr.Key, attr.Value.Resolve().Any())
}
log = log.WithValues(keysAndValues...)
return slogHandler{log, l.group}
}
func (l slogHandler) WithGroup(name string) slog.Handler {
group := name
if l.group != "" {
group = l.group + "." + name
}
return slogHandler{l.log, group}
}

View File

@@ -0,0 +1,23 @@
// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package zaputil
import "go.uber.org/zap/zapcore"
type OrLevelEnabler [2]zapcore.LevelEnabler
func (e OrLevelEnabler) Enabled(lvl zapcore.Level) bool {
return e[0].Enabled(lvl) || e[1].Enabled(lvl)
}

View File

@@ -1,7 +1,7 @@
{
"name": "github.com/livekit/protocol",
"private": true,
"version": "1.12.0",
"version": "1.14.0",
"scripts": {
"changeset": "changeset",
"ci:publish": "pnpm --filter @livekit/protocol run build && changeset publish"

View File

@@ -1,5 +1,25 @@
# @livekit/protocol
## 1.14.0
### Minor Changes
- Added real-time Transcription protocol - [#686](https://github.com/livekit/protocol/pull/686) ([@davidzhao](https://github.com/davidzhao))
- WHIP protocol change - [#680](https://github.com/livekit/protocol/pull/680) ([@biglittlebigben](https://github.com/biglittlebigben))
Deprecate the bypass_transcoding property in all ingress APIs and introduce the optional enable_transcoding property. This property will default to false for WHIP and to true for all other ingress types.
### Patch Changes
- Add SIP participant name. - [#687](https://github.com/livekit/protocol/pull/687) ([@dennwc](https://github.com/dennwc))
## 1.13.0
### Minor Changes
- Add and option to play ringtone for SIP outbound calls. - [#671](https://github.com/livekit/protocol/pull/671) ([@dennwc](https://github.com/dennwc))
## 1.12.0
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@livekit/protocol",
"version": "1.12.0",
"version": "1.14.0",
"description": "",
"type": "module",
"main": "src/index.js",

24
pnpm-lock.yaml generated
View File

@@ -19,11 +19,11 @@ importers:
dependencies:
'@bufbuild/protobuf':
specifier: ^1.7.2
version: 1.7.2
version: 1.8.0
devDependencies:
'@bufbuild/protoc-gen-es':
specifier: ^1.7.2
version: 1.7.2(@bufbuild/protobuf@1.7.2)
version: 1.8.0(@bufbuild/protobuf@1.8.0)
genversion:
specifier: ^3.2.0
version: 3.2.0
@@ -59,29 +59,29 @@ packages:
regenerator-runtime: 0.14.1
dev: true
/@bufbuild/protobuf@1.7.2:
resolution: {integrity: sha512-i5GE2Dk5ekdlK1TR7SugY4LWRrKSfb5T1Qn4unpIMbfxoeGKERKQ59HG3iYewacGD10SR7UzevfPnh6my4tNmQ==}
/@bufbuild/protobuf@1.8.0:
resolution: {integrity: sha512-qR9FwI8QKIveDnUYutvfzbC21UZJJryYrLuZGjeZ/VGz+vXelUkK+xgkOHsvPEdYEdxtgUUq4313N8QtOehJ1Q==}
/@bufbuild/protoc-gen-es@1.7.2(@bufbuild/protobuf@1.7.2):
resolution: {integrity: sha512-yiRk/T+YGmpSVvIkybCjPt+QyM/pLWMO+MAiz6auvCsiAgfXfc5nFFosD4yBYXID55M6eIkgBcity1AoJ6I30A==}
/@bufbuild/protoc-gen-es@1.8.0(@bufbuild/protobuf@1.8.0):
resolution: {integrity: sha512-jnvBKwHq3o/iOgfKxaxn5Za7ay4oAs8KWgoHiDc9Fsb0g+/d1z+mHlHvmevOiCPcVZsnH6V3LImOJvGStPONpA==}
engines: {node: '>=14'}
hasBin: true
peerDependencies:
'@bufbuild/protobuf': 1.7.2
'@bufbuild/protobuf': 1.8.0
peerDependenciesMeta:
'@bufbuild/protobuf':
optional: true
dependencies:
'@bufbuild/protobuf': 1.7.2
'@bufbuild/protoplugin': 1.7.2
'@bufbuild/protobuf': 1.8.0
'@bufbuild/protoplugin': 1.8.0
transitivePeerDependencies:
- supports-color
dev: true
/@bufbuild/protoplugin@1.7.2:
resolution: {integrity: sha512-N3QtO8XWD4F4alMtASWtxBw6BWXp4aLz7rPBXH4KTULdjpUHnq46g15TsrG0/8szZw6pIklTO3lFe14dl6ZYdA==}
/@bufbuild/protoplugin@1.8.0:
resolution: {integrity: sha512-Pb89cTshW+I577qh27VvxGYvZEvQ3zJ8La1OfzPCKugP9d4A4P65WStkAY+aSCiDHk68m1/+mtBb6elfiLPuFg==}
dependencies:
'@bufbuild/protobuf': 1.7.2
'@bufbuild/protobuf': 1.8.0
'@typescript/vfs': 1.5.0
typescript: 4.5.2
transitivePeerDependencies:

View File

@@ -21,6 +21,15 @@ option ruby_package = "LiveKit::Proto";
import "livekit_models.proto";
message WorkerInfo {
string id = 1;
string namespace = 2;
string version = 3;
string name = 4;
JobType type = 5;
ParticipantPermission allowed_permissions = 6;
}
message AgentInfo {
string id = 1;
string name = 2;
@@ -32,6 +41,7 @@ message Job {
JobType type = 2;
Room room = 3;
optional ParticipantInfo participant = 4;
string namespace = 5;
}
// from Worker to Server
@@ -41,9 +51,15 @@ message WorkerMessage {
RegisterWorkerRequest register = 1;
// worker confirms to server that it's available for a job, or declines it
AvailabilityResponse availability = 2;
// worker can update its status to the server, including taking itself out of the pool
UpdateWorkerStatus status = 3;
JobStatusUpdate job_update = 4;
UpdateWorkerStatus update_worker = 3;
// job can send status updates to the server, useful for tracking progress
UpdateJobStatus update_job = 4;
WorkerPing ping = 5;
SimulateJobRequest simulate_job = 6;
MigrateJobRequest migrate_job = 7;
};
}
@@ -55,6 +71,7 @@ message ServerMessage {
// server asks worker to confirm availability for a job
AvailabilityRequest availability = 2;
JobAssignment assignment = 3;
WorkerPong pong = 4;
}
}
@@ -74,38 +91,84 @@ enum JobStatus {
JS_FAILED = 2;
}
message SimulateJobRequest {
JobType type = 1;
Room room = 2;
ParticipantInfo participant = 3;
}
message WorkerPing {
int64 timestamp = 1;
}
message WorkerPong {
int64 last_timestamp = 1;
int64 timestamp = 2;
}
message RegisterWorkerRequest {
JobType type = 1;
string worker_id = 2;
//string worker_id = 2;
string version = 3;
string name = 4;
uint32 ping_interval = 5;
optional string namespace = 6;
ParticipantPermission allowed_permissions = 7;
}
message RegisterWorkerResponse {
string worker_id = 1;
string server_version = 2;
ServerInfo server_info = 3;
}
message MigrateJobRequest {
string job_id = 1;
}
message AvailabilityRequest {
Job job = 1;
// True when the job was previously assigned to another worker but has been
// migrated due to different reasons (e.g. worker failure, job migration)
bool resuming = 2;
}
message AvailabilityResponse {
string job_id = 1;
bool available = 2;
bool supports_resume = 3;
string participant_name = 4;
string participant_identity = 5;
string participant_metadata = 6;
}
message JobStatusUpdate {
message UpdateJobStatus {
string job_id = 1;
JobStatus status = 2;
// The worker can indicate the job end by either specifying SUCCESS or FAILED
optional JobStatus status = 2;
// metadata shown on the dashboard, useful for debugging
string error = 3;
string user_data = 4;
// the metadata can be updated multiple times
optional string metadata = 4;
// The load that the job currently has on the worker
float load = 5;
}
message UpdateWorkerStatus {
optional WorkerStatus status = 1;
optional string metadata = 2;
float load = 3;
}
message JobAssignment {
Job job = 1;
optional string url = 2;
string token = 3;
}
message UpdateWorkerStatus {
WorkerStatus status = 1;
}

View File

@@ -59,6 +59,8 @@ message AnalyticsStream {
uint32 plis = 13;
uint32 firs = 14;
repeated AnalyticsVideoLayer video_layers = 15;
google.protobuf.Timestamp start_time = 17;
google.protobuf.Timestamp end_time = 18;
}
message AnalyticsStat {
@@ -75,7 +77,6 @@ message AnalyticsStat {
string mime = 11;
float min_score = 12;
float median_score = 13;
string project_id = 14;
}
message AnalyticsStats {
@@ -123,6 +124,9 @@ message AnalyticsClientMeta {
// udp, tcp, turn
string connection_type = 5;
ReconnectReason reconnect_reason = 6;
optional string geo_hash = 7;
optional string country = 8;
optional uint32 isp_asn = 9;
}
message AnalyticsEvent {
@@ -147,7 +151,6 @@ message AnalyticsEvent {
string error = 20;
RTPStats rtp_stats = 21;
int32 video_layer = 22;
string project_id = 23;
// NEXT_ID: 24
}
@@ -167,8 +170,11 @@ message AnalyticsRoomParticipant {
message AnalyticsRoom {
string id = 1;
string name = 2;
string project_id = 5;
google.protobuf.Timestamp created_at = 3;
repeated AnalyticsRoomParticipant participants = 4;
// NEXT_ID: 6
}
message AnalyticsNodeRooms {
@@ -176,4 +182,4 @@ message AnalyticsNodeRooms {
uint64 sequence_number = 2;
google.protobuf.Timestamp timestamp = 3;
repeated AnalyticsRoom rooms = 4;
}
}

View File

@@ -45,10 +45,14 @@ message CreateIngressRequest {
string participant_name = 5;
// metadata associated with the publishing participant
string participant_metadata = 10;
// whether to pass through the incoming media without transcoding, only compatible with some input types
bool bypass_transcoding = 8;
// [depreacted ] whether to pass through the incoming media without transcoding, only compatible with some input types. Use `enable_transcoding` instead.
bool bypass_transcoding = 8 [deprecated = true];
// Whether to transcode the ingested media. Only WHIP supports disabling transcoding currently. WHIP will default to transcoding disabled. Replaces `bypass_transcoding.
optional bool enable_transcoding = 11;
IngressAudioOptions audio = 6;
IngressVideoOptions video = 7;
// NEXT_ID: 12
}
enum IngressInput {
@@ -93,8 +97,6 @@ enum IngressVideoEncodingPreset {
H264_540P_25FPS_2_LAYERS_HIGH_MOTION = 7; // 960x540, 25fps, 1300kbps main layer, 2 layers total, higher bitrate for high motion, harder to encode content
H264_720P_30FPS_1_LAYER_HIGH_MOTION = 8; // 1280x720, 30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content
H264_1080P_30FPS_1_LAYER_HIGH_MOTION = 9; // 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content
}
message IngressAudioEncodingOptions {
@@ -122,7 +124,8 @@ message IngressInfo {
// for FILE input, it'll be a http:// URL
// for SRT input, it'll be a srt:// URL
IngressInput input_type = 5;
bool bypass_transcoding = 13;
bool bypass_transcoding = 13 [deprecated = true];
optional bool enable_transcoding = 15;
IngressAudioOptions audio = 6;
IngressVideoOptions video = 7;
string room_name = 8;
@@ -132,7 +135,7 @@ message IngressInfo {
bool reusable = 11;
IngressState state = 12; // Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth)
// NEXT_ID: 15
// NEXT_ID: 16
}
message IngressState {
@@ -151,8 +154,11 @@ message IngressState {
string room_id = 5; // ID of the current/previous room published to
int64 started_at = 7;
int64 ended_at = 8;
int64 updated_at = 10;
string resource_id = 9;
repeated TrackInfo tracks = 6;
// next ID: 11
}
message InputVideoState {
@@ -177,11 +183,12 @@ message UpdateIngressRequest {
string participant_identity = 4;
string participant_name = 5;
string participant_metadata = 9;
optional bool bypass_transcoding = 8;
optional bool bypass_transcoding = 8 [deprecated = true];
optional bool enable_transcoding = 10;
IngressAudioOptions audio = 6;
IngressVideoOptions video = 7;
// NEXT_ID: 10
// NEXT_ID: 11
}
message ListIngressRequest {

View File

@@ -186,6 +186,7 @@ message TrackInfo {
Encryption.Type encryption = 16;
string stream = 17;
TimedVersion version = 18;
repeated AudioTrackFeature audio_features = 19;
}
enum VideoQuality {
@@ -221,7 +222,9 @@ message DataPacket {
UserPacket user = 2;
ActiveSpeakerUpdate speaker = 3 [deprecated=true];
SipDTMF sip_dtmf = 6;
Transcription transcription = 7;
}
// NEXT_ID: 8
}
message ActiveSpeakerUpdate {
@@ -248,8 +251,13 @@ message UserPacket {
repeated string destination_identities = 6 [deprecated=true];
// topic under which the message was published
optional string topic = 4;
// Unique ID to indentify the message
optional string id = 8;
// start and end time allow relating the message to specific media time
optional uint64 start_time = 9;
optional uint64 end_time = 10;
// NEXT_ID: 7
// NEXT_ID: 11
}
message SipDTMF {
@@ -257,6 +265,21 @@ message SipDTMF {
string digit = 4;
}
message Transcription {
string participant_identity = 2;
string track_id = 3;
repeated TranscriptionSegment segments = 4;
string language = 5;
}
message TranscriptionSegment {
string id = 1;
string text = 2;
uint64 start_time = 3;
uint64 end_time = 4;
bool final = 5;
}
enum ConnectionQuality {
POOR = 0;
GOOD = 1;
@@ -283,6 +306,7 @@ message ServerInfo {
string node_id = 5;
// additional debugging information. sent only if server is in development mode
string debug_info = 6;
int32 agent_protocol = 7;
}
// details about the client

View File

@@ -38,7 +38,7 @@ message SignalRequest {
// Immediately terminate session
LeaveRequest leave = 8;
// Update published video layers
UpdateVideoLayers update_layers = 10;
UpdateVideoLayers update_layers = 10 [deprecated = true];
// Update subscriber permissions
SubscriptionPermission subscription_permission = 11;
// sync client's subscribe state to server during reconnect
@@ -259,6 +259,7 @@ message LeaveRequest {
// message to indicate published video track dimensions are changing
message UpdateVideoLayers {
option deprecated = true;
string track_sid = 1;
repeated VideoLayer layers = 2;
}

View File

@@ -197,9 +197,15 @@ message CreateSIPParticipantRequest {
// Optional identity of the participant in LiveKit room
string participant_identity = 4;
// Optional name of the participant in LiveKit room
string participant_name = 7;
// Optionally send following DTMF digits (extension codes) when making a call.
// Character 'w' can be used to add a 0.5 sec delay.
string dtmf = 5;
// Optionally play ringtone in the room as an audible indicator for existing participants
bool play_ringtone = 6;
}
message SIPParticipantInfo {

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "google/protobuf/empty.proto";
import "options.proto";
@@ -27,16 +27,22 @@ service AgentInternal {
option (psrpc.options).multi = true;
};
rpc JobRequest(livekit.Job) returns (google.protobuf.Empty) {
option (psrpc.options).affinity_func = true;
option (psrpc.options).topics = true;
option (psrpc.options) = {
affinity_func: true
topics: true
topic_params: {
names: ["namespace", "job_type"]
typed: false
}
};
};
rpc AgentRegistered(google.protobuf.Empty) returns (CheckEnabledResponse) {
rpc WorkerRegistered(google.protobuf.Empty) returns (google.protobuf.Empty) {
option (psrpc.options) = {
subscription: true
multi: true
topics: true
topic_params: {
names: ["project_id"]
names: ["handler_namespace"]
typed: false
}
};
@@ -48,4 +54,5 @@ message CheckEnabledRequest{}
message CheckEnabledResponse {
bool room_enabled = 1;
bool publisher_enabled = 2;
repeated string namespaces = 3;
}

View File

@@ -16,9 +16,8 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "google/protobuf/any.proto";
import "options.proto";
import "livekit_egress.proto";
@@ -59,9 +58,6 @@ message StartEgressRequest {
string room_id = 3;
string token = 8;
string ws_url = 9;
// metadata
map<string, google.protobuf.Any> metadata = 12;
}
message ListActiveEgressRequest {}

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";
import "livekit_ingress.proto";
@@ -42,7 +42,7 @@ service IngressHandler {
};
rpc DeleteWHIPResource(DeleteWHIPResourceRequest) returns (google.protobuf.Empty) {
option (psrpc.options).topics = true;
};
};
}
message ListActiveIngressRequest {}

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "livekit_egress.proto";
import "livekit_ingress.proto";
@@ -31,7 +31,7 @@ service IOInfo {
rpc UpdateMetrics(UpdateMetricsRequest) returns (google.protobuf.Empty);
// ingress
rpc CreateIngress(livekit.IngressInfo) returns (google.protobuf.Empty);
rpc CreateIngress(livekit.IngressInfo) returns (google.protobuf.Empty);
rpc GetIngressInfo(GetIngressInfoRequest) returns (GetIngressInfoResponse);
rpc UpdateIngressState(UpdateIngressStateRequest) returns (google.protobuf.Empty);
@@ -136,4 +136,4 @@ enum SIPDispatchResult {
REQUEST_PIN = 2;
REJECT = 3;
DROP = 4;
}
}

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";
import "livekit_models.proto";

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";
import "livekit_models.proto";

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";
import "livekit_internal.proto";

View File

@@ -16,7 +16,7 @@ syntax = "proto3";
package rpc;
option go_package = "github.com/livekit/livekit/pkg/service/rpc";
option go_package = "github.com/livekit/protocol/rpc";
import "options.proto";
@@ -52,6 +52,9 @@ message InternalCreateSIPParticipantRequest {
// Optionally send following DTMF digits (extension codes) when making a call.
// Character 'w' can be used to add a 0.5 sec delay.
string dtmf = 11;
// Optionally play ringtone in the room as an audible indicator for existing participants
bool play_ringtone = 12;
}
message InternalCreateSIPParticipantResponse {

View File

@@ -80,8 +80,9 @@ type CheckEnabledResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RoomEnabled bool `protobuf:"varint,1,opt,name=room_enabled,json=roomEnabled,proto3" json:"room_enabled,omitempty"`
PublisherEnabled bool `protobuf:"varint,2,opt,name=publisher_enabled,json=publisherEnabled,proto3" json:"publisher_enabled,omitempty"`
RoomEnabled bool `protobuf:"varint,1,opt,name=room_enabled,json=roomEnabled,proto3" json:"room_enabled,omitempty"`
PublisherEnabled bool `protobuf:"varint,2,opt,name=publisher_enabled,json=publisherEnabled,proto3" json:"publisher_enabled,omitempty"`
Namespaces []string `protobuf:"bytes,3,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
}
func (x *CheckEnabledResponse) Reset() {
@@ -130,6 +131,13 @@ func (x *CheckEnabledResponse) GetPublisherEnabled() bool {
return false
}
func (x *CheckEnabledResponse) GetNamespaces() []string {
if x != nil {
return x.Namespaces
}
return nil
}
var File_rpc_agent_proto protoreflect.FileDescriptor
var file_rpc_agent_proto_rawDesc = []byte{
@@ -139,33 +147,36 @@ var file_rpc_agent_proto_rawDesc = []byte{
0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x6e,
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66,
0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x65,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x6f,
0x6f, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62,
0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x32, 0xfa, 0x01, 0x0a, 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74,
0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63,
0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xb2,
0x89, 0x01, 0x02, 0x28, 0x01, 0x12, 0x3c, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x0c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f,
0x62, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x08, 0xb2, 0x89, 0x01, 0x04, 0x10,
0x01, 0x30, 0x01, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69,
0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19,
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0xb2, 0x89, 0x01, 0x14, 0x08,
0x01, 0x10, 0x01, 0x1a, 0x0c, 0x12, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69,
0x64, 0x28, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70,
0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x86,
0x01, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x6d, 0x5f,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72,
0x6f, 0x6f, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75,
0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d,
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x32, 0x96, 0x02, 0x0a, 0x0d, 0x41, 0x67, 0x65, 0x6e,
0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x0c, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x2e,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06,
0xb2, 0x89, 0x01, 0x02, 0x28, 0x01, 0x12, 0x53, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x0c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a,
0x6f, 0x62, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0xb2, 0x89, 0x01, 0x1b,
0x10, 0x01, 0x1a, 0x15, 0x12, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x10, 0x57,
0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
0x1f, 0xb2, 0x89, 0x01, 0x1b, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x13, 0x12, 0x11, 0x68, 0x61, 0x6e,
0x64, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x28, 0x01,
0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -190,10 +201,10 @@ var file_rpc_agent_proto_goTypes = []interface{}{
var file_rpc_agent_proto_depIdxs = []int32{
0, // 0: rpc.AgentInternal.CheckEnabled:input_type -> rpc.CheckEnabledRequest
2, // 1: rpc.AgentInternal.JobRequest:input_type -> livekit.Job
3, // 2: rpc.AgentInternal.AgentRegistered:input_type -> google.protobuf.Empty
3, // 2: rpc.AgentInternal.WorkerRegistered:input_type -> google.protobuf.Empty
1, // 3: rpc.AgentInternal.CheckEnabled:output_type -> rpc.CheckEnabledResponse
3, // 4: rpc.AgentInternal.JobRequest:output_type -> google.protobuf.Empty
1, // 5: rpc.AgentInternal.AgentRegistered:output_type -> rpc.CheckEnabledResponse
3, // 5: rpc.AgentInternal.WorkerRegistered:output_type -> google.protobuf.Empty
3, // [3:6] is the sub-list for method output_type
0, // [0:3] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name

View File

@@ -25,9 +25,9 @@ var _ = version.PsrpcVersion_0_5
type AgentInternalClient interface {
CheckEnabled(ctx context.Context, req *CheckEnabledRequest, opts ...psrpc.RequestOption) (<-chan *psrpc.Response[*CheckEnabledResponse], error)
JobRequest(ctx context.Context, topic string, req *livekit1.Job, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
JobRequest(ctx context.Context, namespace string, jobType string, req *livekit1.Job, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
SubscribeAgentRegistered(ctx context.Context, projectId string) (psrpc.Subscription[*CheckEnabledResponse], error)
SubscribeWorkerRegistered(ctx context.Context, handlerNamespace string) (psrpc.Subscription[*google_protobuf.Empty], error)
}
// ==================================
@@ -46,9 +46,9 @@ type AgentInternalServerImpl interface {
// ==============================
type AgentInternalServer interface {
RegisterJobRequestTopic(topic string) error
DeregisterJobRequestTopic(topic string)
PublishAgentRegistered(ctx context.Context, projectId string, msg *CheckEnabledResponse) error
RegisterJobRequestTopic(namespace string, jobType string) error
DeregisterJobRequestTopic(namespace string, jobType string)
PublishWorkerRegistered(ctx context.Context, handlerNamespace string, msg *google_protobuf.Empty) error
// Close and wait for pending RPCs to complete
Shutdown()
@@ -74,7 +74,7 @@ func NewAgentInternalClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (A
sd.RegisterMethod("CheckEnabled", false, true, false, false)
sd.RegisterMethod("JobRequest", true, false, true, false)
sd.RegisterMethod("AgentRegistered", false, true, false, false)
sd.RegisterMethod("WorkerRegistered", false, true, false, false)
rpcClient, err := client.NewRPCClient(sd, bus, opts...)
if err != nil {
@@ -90,12 +90,12 @@ func (c *agentInternalClient) CheckEnabled(ctx context.Context, req *CheckEnable
return client.RequestMulti[*CheckEnabledResponse](ctx, c.client, "CheckEnabled", nil, req, opts...)
}
func (c *agentInternalClient) JobRequest(ctx context.Context, topic string, req *livekit1.Job, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "JobRequest", []string{topic}, req, opts...)
func (c *agentInternalClient) JobRequest(ctx context.Context, namespace string, jobType string, req *livekit1.Job, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "JobRequest", []string{namespace, jobType}, req, opts...)
}
func (c *agentInternalClient) SubscribeAgentRegistered(ctx context.Context, projectId string) (psrpc.Subscription[*CheckEnabledResponse], error) {
return client.Join[*CheckEnabledResponse](ctx, c.client, "AgentRegistered", []string{projectId})
func (c *agentInternalClient) SubscribeWorkerRegistered(ctx context.Context, handlerNamespace string) (psrpc.Subscription[*google_protobuf.Empty], error) {
return client.Join[*google_protobuf.Empty](ctx, c.client, "WorkerRegistered", []string{handlerNamespace})
}
// ====================
@@ -126,23 +126,23 @@ func NewAgentInternalServer(svc AgentInternalServerImpl, bus psrpc.MessageBus, o
}
sd.RegisterMethod("JobRequest", true, false, true, false)
sd.RegisterMethod("AgentRegistered", false, true, false, false)
sd.RegisterMethod("WorkerRegistered", false, true, false, false)
return &agentInternalServer{
svc: svc,
rpc: s,
}, nil
}
func (s *agentInternalServer) RegisterJobRequestTopic(topic string) error {
return server.RegisterHandler(s.rpc, "JobRequest", []string{topic}, s.svc.JobRequest, s.svc.JobRequestAffinity)
func (s *agentInternalServer) RegisterJobRequestTopic(namespace string, jobType string) error {
return server.RegisterHandler(s.rpc, "JobRequest", []string{namespace, jobType}, s.svc.JobRequest, s.svc.JobRequestAffinity)
}
func (s *agentInternalServer) DeregisterJobRequestTopic(topic string) {
s.rpc.DeregisterHandler("JobRequest", []string{topic})
func (s *agentInternalServer) DeregisterJobRequestTopic(namespace string, jobType string) {
s.rpc.DeregisterHandler("JobRequest", []string{namespace, jobType})
}
func (s *agentInternalServer) PublishAgentRegistered(ctx context.Context, projectId string, msg *CheckEnabledResponse) error {
return s.rpc.Publish(ctx, "AgentRegistered", []string{projectId}, msg)
func (s *agentInternalServer) PublishWorkerRegistered(ctx context.Context, handlerNamespace string, msg *google_protobuf.Empty) error {
return s.rpc.Publish(ctx, "WorkerRegistered", []string{handlerNamespace}, msg)
}
func (s *agentInternalServer) Shutdown() {
@@ -154,26 +154,28 @@ func (s *agentInternalServer) Kill() {
}
var psrpcFileDescriptor0 = []byte{
// 329 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x4f, 0x4f, 0xf2, 0x40,
0x10, 0xc6, 0xb3, 0xbc, 0x6f, 0x08, 0x59, 0x4b, 0xc0, 0x45, 0x09, 0xd6, 0x8b, 0xf6, 0x44, 0xd4,
0x6c, 0x8d, 0xde, 0x0d, 0x6a, 0x38, 0x48, 0xe2, 0x85, 0xa3, 0x17, 0x64, 0x97, 0xa1, 0xac, 0x94,
0xce, 0xba, 0xbb, 0x25, 0xf1, 0xe6, 0x95, 0xaf, 0xc3, 0x27, 0x34, 0xfd, 0x63, 0x83, 0x09, 0x7a,
0x6a, 0xfa, 0xcc, 0x6f, 0x76, 0x7e, 0x79, 0x68, 0xcb, 0x68, 0x19, 0x4e, 0x23, 0x48, 0x1c, 0xd7,
0x06, 0x1d, 0xb2, 0x7f, 0x46, 0x4b, 0xff, 0x34, 0x42, 0x8c, 0x62, 0x08, 0xf3, 0x48, 0xa4, 0xf3,
0x10, 0x56, 0xda, 0x7d, 0x14, 0x84, 0xdf, 0x44, 0xed, 0x14, 0x26, 0xb6, 0xfc, 0xed, 0xc4, 0x6a,
0x0d, 0x4b, 0xe5, 0x26, 0x3b, 0xaf, 0x04, 0xc7, 0xb4, 0xf3, 0xb8, 0x00, 0xb9, 0x1c, 0x26, 0x53,
0x11, 0xc3, 0x6c, 0x0c, 0xef, 0x29, 0x58, 0x17, 0xcc, 0xe9, 0xd1, 0xcf, 0xd8, 0x6a, 0x4c, 0x2c,
0xb0, 0x73, 0xea, 0x19, 0xc4, 0xd5, 0x04, 0x8a, 0xbc, 0x47, 0xce, 0x48, 0xbf, 0x31, 0x3e, 0xc8,
0xb2, 0x12, 0x65, 0x97, 0xf4, 0x50, 0xa7, 0x22, 0x56, 0x76, 0x01, 0xa6, 0xe2, 0x6a, 0x39, 0xd7,
0xae, 0x06, 0x25, 0x7c, 0xf3, 0x59, 0xa3, 0xcd, 0xfb, 0x4c, 0xe7, 0x29, 0x71, 0x60, 0x92, 0x69,
0xcc, 0x9e, 0xa9, 0xb7, 0x7b, 0x99, 0xf5, 0xb8, 0xd1, 0x92, 0xef, 0x71, 0xf4, 0x4f, 0xf6, 0x4c,
0x0a, 0xcd, 0xa0, 0xb1, 0xdd, 0x90, 0xff, 0x83, 0x5a, 0x9f, 0xb0, 0x3b, 0x4a, 0x47, 0x28, 0xca,
0x15, 0xe6, 0xf1, 0xb2, 0x03, 0x3e, 0x42, 0xe1, 0x77, 0x79, 0xd1, 0x1e, 0xff, 0x6e, 0x8f, 0x0f,
0xb3, 0xf6, 0x02, 0xba, 0xdd, 0x90, 0x7a, 0x9b, 0x0c, 0xc8, 0x35, 0x61, 0xaf, 0xb4, 0x95, 0xfb,
0x8d, 0x21, 0x52, 0xd6, 0x81, 0x81, 0x19, 0xfb, 0x65, 0xed, 0x2f, 0x1f, 0x7f, 0xbb, 0x21, 0xdd,
0x06, 0x69, 0x13, 0xdf, 0x63, 0x54, 0x1b, 0x7c, 0x03, 0xe9, 0x26, 0x6a, 0x96, 0x19, 0x3e, 0x5c,
0xbd, 0x5c, 0x44, 0xca, 0x2d, 0x52, 0xc1, 0x25, 0xae, 0xc2, 0xd2, 0xaf, 0xfa, 0xea, 0x65, 0x14,
0x5a, 0x30, 0x6b, 0x25, 0x21, 0x34, 0x5a, 0x8a, 0x7a, 0x7e, 0xf4, 0xf6, 0x2b, 0x00, 0x00, 0xff,
0xff, 0xd5, 0xcb, 0x7e, 0x13, 0x0f, 0x02, 0x00, 0x00,
// 362 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xd1, 0x6a, 0xdb, 0x30,
0x14, 0x86, 0x51, 0x32, 0x86, 0xa3, 0x25, 0xcc, 0x51, 0x96, 0x91, 0x79, 0x6c, 0x4b, 0x7c, 0x15,
0x18, 0xc8, 0x63, 0x7b, 0x81, 0x6c, 0x23, 0x17, 0x0d, 0xf4, 0xc6, 0x50, 0x0a, 0xbd, 0x31, 0x96,
0x72, 0x6a, 0xbb, 0xb1, 0x25, 0x55, 0x92, 0x0b, 0x79, 0x81, 0x42, 0xde, 0xa1, 0x4f, 0x91, 0x27,
0x2c, 0x8e, 0x1d, 0x93, 0x42, 0xda, 0xcb, 0xf3, 0x9f, 0x5f, 0xe7, 0x7c, 0xe7, 0x47, 0xf8, 0xa3,
0x56, 0x3c, 0x88, 0x13, 0x10, 0x96, 0x2a, 0x2d, 0xad, 0x24, 0x5d, 0xad, 0xb8, 0xf7, 0x35, 0x91,
0x32, 0xc9, 0x21, 0x38, 0x48, 0xac, 0xbc, 0x0d, 0xa0, 0x50, 0x76, 0x5b, 0x3b, 0xbc, 0x81, 0x54,
0x36, 0x93, 0xc2, 0x34, 0xe5, 0x28, 0xcf, 0x1e, 0x60, 0x93, 0xd9, 0xe8, 0x64, 0x8a, 0x3f, 0xc6,
0xa3, 0xff, 0x29, 0xf0, 0xcd, 0x52, 0xc4, 0x2c, 0x87, 0x75, 0x08, 0xf7, 0x25, 0x18, 0xeb, 0x3f,
0x22, 0xfc, 0xe9, 0xa5, 0x6e, 0x94, 0x14, 0x06, 0xc8, 0x0c, 0xf7, 0xb5, 0x94, 0x45, 0x04, 0xb5,
0x3e, 0x41, 0x53, 0x34, 0x77, 0xc2, 0x0f, 0x95, 0xd6, 0x58, 0xc9, 0x4f, 0x3c, 0x54, 0x25, 0xcb,
0x33, 0x93, 0x82, 0x6e, 0x7d, 0x9d, 0x83, 0xcf, 0x6d, 0x1b, 0x47, 0xf3, 0x77, 0x8c, 0x45, 0x5c,
0x80, 0x51, 0x31, 0x07, 0x33, 0xe9, 0x4e, 0xbb, 0xf3, 0x5e, 0x78, 0xa2, 0xfc, 0x7e, 0xea, 0xe0,
0xc1, 0xdf, 0x8a, 0xf7, 0x42, 0x58, 0xd0, 0x22, 0xce, 0xc9, 0x25, 0xee, 0x9f, 0x92, 0x91, 0x09,
0xd5, 0x8a, 0xd3, 0x33, 0x47, 0x78, 0x5f, 0xce, 0x74, 0xea, 0x33, 0x7c, 0x67, 0xbf, 0x43, 0xef,
0x16, 0x9d, 0x39, 0x22, 0x57, 0x18, 0xaf, 0x24, 0x6b, 0x9e, 0x90, 0x3e, 0x6d, 0x42, 0xa2, 0x2b,
0xc9, 0xbc, 0xcf, 0xb4, 0x8e, 0x97, 0x1e, 0xe3, 0xa5, 0xcb, 0x2a, 0x5e, 0x7f, 0xb6, 0xdf, 0xa1,
0x6f, 0x2e, 0xf2, 0xc6, 0xa4, 0xd7, 0xa2, 0x12, 0xe7, 0x4e, 0xb2, 0xc8, 0x6e, 0x15, 0x2c, 0xd0,
0x2f, 0x44, 0x00, 0xbb, 0xd7, 0x52, 0x6f, 0x40, 0x87, 0x90, 0x64, 0xc6, 0x82, 0x86, 0x35, 0x79,
0x65, 0xdc, 0xdb, 0x6b, 0x1c, 0xe4, 0x22, 0x6f, 0x44, 0x86, 0x69, 0x2c, 0xd6, 0x39, 0xe8, 0xa8,
0x5d, 0x58, 0xd1, 0xff, 0x9b, 0xdd, 0xfc, 0x48, 0x32, 0x9b, 0x96, 0x8c, 0x72, 0x59, 0x04, 0x0d,
0x7b, 0xfd, 0x1b, 0xb8, 0xcc, 0x03, 0xad, 0x38, 0x7b, 0x7f, 0xa8, 0xfe, 0x3c, 0x07, 0x00, 0x00,
0xff, 0xff, 0x0e, 0x5b, 0x92, 0xc6, 0x41, 0x02, 0x00, 0x00,
}

View File

@@ -25,7 +25,6 @@ import (
_ "github.com/livekit/psrpc/protoc-gen-psrpc/options"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
anypb "google.golang.org/protobuf/types/known/anypb"
reflect "reflect"
sync "sync"
)
@@ -58,8 +57,6 @@ type StartEgressRequest struct {
RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
Token string `protobuf:"bytes,8,opt,name=token,proto3" json:"token,omitempty"`
WsUrl string `protobuf:"bytes,9,opt,name=ws_url,json=wsUrl,proto3" json:"ws_url,omitempty"`
// metadata
Metadata map[string]*anypb.Any `protobuf:"bytes,12,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *StartEgressRequest) Reset() {
@@ -164,13 +161,6 @@ func (x *StartEgressRequest) GetWsUrl() string {
return ""
}
func (x *StartEgressRequest) GetMetadata() map[string]*anypb.Any {
if x != nil {
return x.Metadata
}
return nil
}
type isStartEgressRequest_Request interface {
isStartEgressRequest_Request()
}
@@ -294,80 +284,68 @@ var File_rpc_egress_proto protoreflect.FileDescriptor
var file_rpc_egress_proto_rawDesc = []byte{
0x0a, 0x10, 0x72, 0x70, 0x63, 0x2f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x12, 0x03, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe2, 0x04, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72,
0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b,
0x0a, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x0e, 0x72,
0x6f, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f,
0x6f, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x6d,
0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x77, 0x65, 0x62,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x57, 0x65, 0x62, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x48, 0x00, 0x52, 0x03, 0x77, 0x65, 0x62, 0x12, 0x45, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
0x61, 0x6e, 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12,
0x4f, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00,
0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65,
0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x45,
0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x05,
0x74, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x77, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x08, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x51,
0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, 0x0a, 0x17,
0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x39, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41,
0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49,
0x64, 0x73, 0x32, 0xb2, 0x01, 0x0a, 0x0e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74,
0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x67,
0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74,
0x74, 0x6f, 0x12, 0x03, 0x72, 0x70, 0x63, 0x1a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f,
0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x03, 0x0a,
0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64,
0x12, 0x4c, 0x0a, 0x0e, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65,
0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52,
0x0d, 0x72, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x12, 0x2d,
0x0a, 0x03, 0x77, 0x65, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x57, 0x65, 0x62, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x03, 0x77, 0x65, 0x62, 0x12, 0x45, 0x0a,
0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72,
0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f,
0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d,
0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x70,
0x6f, 0x73, 0x69, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x07,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54,
0x72, 0x61, 0x63, 0x6b, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x48, 0x00, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f,
0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f,
0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x77, 0x73, 0x5f,
0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x73, 0x55, 0x72, 0x6c,
0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x4c,
0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x39, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63,
0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64,
0x73, 0x32, 0xb2, 0x01, 0x0a, 0x0e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65,
0x72, 0x6e, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x67, 0x72,
0x65, 0x73, 0x73, 0x12, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45,
0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66,
0x6f, 0x22, 0x08, 0xb2, 0x89, 0x01, 0x04, 0x10, 0x01, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x4c,
0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12,
0x1c, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67,
0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xb2, 0x89,
0x01, 0x04, 0x10, 0x01, 0x28, 0x01, 0x32, 0xa1, 0x01, 0x0a, 0x0d, 0x45, 0x67, 0x72, 0x65, 0x73,
0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x06, 0xb2, 0x89, 0x01,
0x02, 0x10, 0x01, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x67, 0x72, 0x65, 0x73,
0x73, 0x12, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70,
0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e,
0x66, 0x6f, 0x22, 0x08, 0xb2, 0x89, 0x01, 0x04, 0x10, 0x01, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x10,
0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73,
0x12, 0x1c, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76,
0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45,
0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xb2,
0x89, 0x01, 0x04, 0x10, 0x01, 0x28, 0x01, 0x32, 0xa1, 0x01, 0x0a, 0x0d, 0x45, 0x67, 0x72, 0x65,
0x73, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x06, 0xb2, 0x89,
0x01, 0x02, 0x10, 0x01, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x67, 0x72, 0x65,
0x73, 0x73, 0x12, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x6f,
0x70, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13,
0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x49,
0x6e, 0x66, 0x6f, 0x22, 0x06, 0xb2, 0x89, 0x01, 0x02, 0x10, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x66, 0x6f, 0x22, 0x06, 0xb2, 0x89, 0x01, 0x02, 0x10, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -382,43 +360,39 @@ func file_rpc_egress_proto_rawDescGZIP() []byte {
return file_rpc_egress_proto_rawDescData
}
var file_rpc_egress_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_rpc_egress_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_rpc_egress_proto_goTypes = []interface{}{
(*StartEgressRequest)(nil), // 0: rpc.StartEgressRequest
(*ListActiveEgressRequest)(nil), // 1: rpc.ListActiveEgressRequest
(*ListActiveEgressResponse)(nil), // 2: rpc.ListActiveEgressResponse
nil, // 3: rpc.StartEgressRequest.MetadataEntry
(*livekit.RoomCompositeEgressRequest)(nil), // 4: livekit.RoomCompositeEgressRequest
(*livekit.WebEgressRequest)(nil), // 5: livekit.WebEgressRequest
(*livekit.ParticipantEgressRequest)(nil), // 6: livekit.ParticipantEgressRequest
(*livekit.TrackCompositeEgressRequest)(nil), // 7: livekit.TrackCompositeEgressRequest
(*livekit.TrackEgressRequest)(nil), // 8: livekit.TrackEgressRequest
(*anypb.Any)(nil), // 9: google.protobuf.Any
(*livekit.UpdateStreamRequest)(nil), // 10: livekit.UpdateStreamRequest
(*livekit.StopEgressRequest)(nil), // 11: livekit.StopEgressRequest
(*livekit.EgressInfo)(nil), // 12: livekit.EgressInfo
(*StartEgressRequest)(nil), // 0: rpc.StartEgressRequest
(*ListActiveEgressRequest)(nil), // 1: rpc.ListActiveEgressRequest
(*ListActiveEgressResponse)(nil), // 2: rpc.ListActiveEgressResponse
(*livekit.RoomCompositeEgressRequest)(nil), // 3: livekit.RoomCompositeEgressRequest
(*livekit.WebEgressRequest)(nil), // 4: livekit.WebEgressRequest
(*livekit.ParticipantEgressRequest)(nil), // 5: livekit.ParticipantEgressRequest
(*livekit.TrackCompositeEgressRequest)(nil), // 6: livekit.TrackCompositeEgressRequest
(*livekit.TrackEgressRequest)(nil), // 7: livekit.TrackEgressRequest
(*livekit.UpdateStreamRequest)(nil), // 8: livekit.UpdateStreamRequest
(*livekit.StopEgressRequest)(nil), // 9: livekit.StopEgressRequest
(*livekit.EgressInfo)(nil), // 10: livekit.EgressInfo
}
var file_rpc_egress_proto_depIdxs = []int32{
4, // 0: rpc.StartEgressRequest.room_composite:type_name -> livekit.RoomCompositeEgressRequest
5, // 1: rpc.StartEgressRequest.web:type_name -> livekit.WebEgressRequest
6, // 2: rpc.StartEgressRequest.participant:type_name -> livekit.ParticipantEgressRequest
7, // 3: rpc.StartEgressRequest.track_composite:type_name -> livekit.TrackCompositeEgressRequest
8, // 4: rpc.StartEgressRequest.track:type_name -> livekit.TrackEgressRequest
3, // 5: rpc.StartEgressRequest.metadata:type_name -> rpc.StartEgressRequest.MetadataEntry
9, // 6: rpc.StartEgressRequest.MetadataEntry.value:type_name -> google.protobuf.Any
0, // 7: rpc.EgressInternal.StartEgress:input_type -> rpc.StartEgressRequest
1, // 8: rpc.EgressInternal.ListActiveEgress:input_type -> rpc.ListActiveEgressRequest
10, // 9: rpc.EgressHandler.UpdateStream:input_type -> livekit.UpdateStreamRequest
11, // 10: rpc.EgressHandler.StopEgress:input_type -> livekit.StopEgressRequest
12, // 11: rpc.EgressInternal.StartEgress:output_type -> livekit.EgressInfo
2, // 12: rpc.EgressInternal.ListActiveEgress:output_type -> rpc.ListActiveEgressResponse
12, // 13: rpc.EgressHandler.UpdateStream:output_type -> livekit.EgressInfo
12, // 14: rpc.EgressHandler.StopEgress:output_type -> livekit.EgressInfo
11, // [11:15] is the sub-list for method output_type
7, // [7:11] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
3, // 0: rpc.StartEgressRequest.room_composite:type_name -> livekit.RoomCompositeEgressRequest
4, // 1: rpc.StartEgressRequest.web:type_name -> livekit.WebEgressRequest
5, // 2: rpc.StartEgressRequest.participant:type_name -> livekit.ParticipantEgressRequest
6, // 3: rpc.StartEgressRequest.track_composite:type_name -> livekit.TrackCompositeEgressRequest
7, // 4: rpc.StartEgressRequest.track:type_name -> livekit.TrackEgressRequest
0, // 5: rpc.EgressInternal.StartEgress:input_type -> rpc.StartEgressRequest
1, // 6: rpc.EgressInternal.ListActiveEgress:input_type -> rpc.ListActiveEgressRequest
8, // 7: rpc.EgressHandler.UpdateStream:input_type -> livekit.UpdateStreamRequest
9, // 8: rpc.EgressHandler.StopEgress:input_type -> livekit.StopEgressRequest
10, // 9: rpc.EgressInternal.StartEgress:output_type -> livekit.EgressInfo
2, // 10: rpc.EgressInternal.ListActiveEgress:output_type -> rpc.ListActiveEgressResponse
10, // 11: rpc.EgressHandler.UpdateStream:output_type -> livekit.EgressInfo
10, // 12: rpc.EgressHandler.StopEgress:output_type -> livekit.EgressInfo
9, // [9:13] is the sub-list for method output_type
5, // [5:9] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_rpc_egress_proto_init() }
@@ -477,7 +451,7 @@ func file_rpc_egress_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rpc_egress_proto_rawDesc,
NumEnums: 0,
NumMessages: 4,
NumMessages: 3,
NumExtensions: 0,
NumServices: 2,
},

View File

@@ -267,42 +267,36 @@ func (s *egressHandlerServer) Kill() {
}
var psrpcFileDescriptor1 = []byte{
// 584 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0xdd, 0x6e, 0x12, 0x41,
0x14, 0x76, 0x40, 0x68, 0x39, 0x94, 0x4a, 0xc6, 0x9a, 0x4e, 0xb7, 0x6d, 0x82, 0xa8, 0x09, 0x69,
0x74, 0x31, 0xf4, 0x46, 0xbd, 0xb2, 0x35, 0xc4, 0x92, 0xd4, 0xa8, 0x5b, 0x1b, 0x13, 0xbd, 0x20,
0xc3, 0xee, 0x14, 0x27, 0x2c, 0x3b, 0xe3, 0xcc, 0x00, 0xe1, 0x11, 0xfa, 0x18, 0xbe, 0x42, 0x2f,
0x7c, 0x20, 0x9f, 0xc4, 0x30, 0x03, 0xdb, 0x85, 0x06, 0xe3, 0xd5, 0xee, 0x7c, 0x7f, 0x73, 0xce,
0x99, 0x03, 0x55, 0x25, 0xc3, 0x26, 0xeb, 0x2b, 0xa6, 0xb5, 0x2f, 0x95, 0x30, 0x02, 0xe7, 0x95,
0x0c, 0xbd, 0xbd, 0xbe, 0x10, 0xfd, 0x98, 0x35, 0x2d, 0xd4, 0x1b, 0x5d, 0x35, 0x69, 0x32, 0x75,
0xbc, 0x57, 0x11, 0xd2, 0x70, 0x91, 0xcc, 0xe5, 0xde, 0x4e, 0xcc, 0xc7, 0x6c, 0xc0, 0x4d, 0x37,
0x1b, 0x52, 0xff, 0x73, 0x1f, 0xf0, 0x85, 0xa1, 0xca, 0xb4, 0x2d, 0x1a, 0xb0, 0x9f, 0x23, 0xa6,
0x0d, 0xde, 0x87, 0x92, 0x93, 0x75, 0x79, 0x44, 0x50, 0x0d, 0x35, 0x4a, 0xc1, 0xa6, 0x03, 0x3a,
0x11, 0x3e, 0x87, 0x6d, 0x25, 0xc4, 0xb0, 0x1b, 0x8a, 0xa1, 0x14, 0x9a, 0x1b, 0x46, 0x0a, 0x35,
0xd4, 0x28, 0xb7, 0x9e, 0xf8, 0xf3, 0x2b, 0xfc, 0x40, 0x88, 0xe1, 0xbb, 0x05, 0xbb, 0x94, 0x7c,
0x76, 0x2f, 0xa8, 0xa8, 0x2c, 0x8b, 0x5f, 0x40, 0x7e, 0xc2, 0x7a, 0xa4, 0x6c, 0x23, 0xf6, 0xd2,
0x88, 0xaf, 0xac, 0xb7, 0x6a, 0x9c, 0xe9, 0x70, 0x1b, 0xca, 0x92, 0x2a, 0xc3, 0x43, 0x2e, 0x69,
0x62, 0x48, 0xc5, 0xda, 0x1e, 0xa7, 0xb6, 0x4f, 0xb7, 0xdc, 0xaa, 0x3d, 0xeb, 0xc3, 0x1f, 0xe1,
0x81, 0x51, 0x34, 0x1c, 0x64, 0x9a, 0x28, 0xda, 0xa8, 0xa7, 0x69, 0xd4, 0x97, 0x19, 0xbf, 0xb6,
0x8b, 0x6d, 0xb3, 0x44, 0xe3, 0x63, 0x28, 0x58, 0x84, 0x6c, 0xd8, 0x98, 0xfd, 0xe5, 0x98, 0x55,
0xb7, 0xd3, 0xe2, 0x5d, 0xd8, 0xb0, 0x93, 0xe4, 0x11, 0xc9, 0xdb, 0x21, 0x17, 0x67, 0xc7, 0x4e,
0x84, 0x77, 0xa0, 0x60, 0xc4, 0x80, 0x25, 0x64, 0xd3, 0xc2, 0xee, 0x80, 0x1f, 0x41, 0x71, 0xa2,
0xbb, 0x23, 0x15, 0x93, 0x92, 0x83, 0x27, 0xfa, 0x52, 0xc5, 0xf8, 0x04, 0x36, 0x87, 0xcc, 0xd0,
0x88, 0x1a, 0x4a, 0xb6, 0x6a, 0xf9, 0x46, 0xb9, 0xf5, 0xcc, 0x57, 0x32, 0xf4, 0xef, 0xbe, 0xab,
0xff, 0x61, 0xae, 0x6b, 0x27, 0x46, 0x4d, 0x83, 0xd4, 0xe6, 0x7d, 0x86, 0xca, 0x12, 0x85, 0xab,
0x90, 0x1f, 0xb0, 0xe9, 0xfc, 0xe9, 0x67, 0xbf, 0xf8, 0x08, 0x0a, 0x63, 0x1a, 0x8f, 0x18, 0xc9,
0xd9, 0x06, 0x77, 0x7c, 0xb7, 0x79, 0xfe, 0x62, 0xf3, 0xfc, 0x93, 0x64, 0x1a, 0x38, 0xc9, 0x9b,
0xdc, 0x2b, 0x74, 0x5a, 0x82, 0x0d, 0xe5, 0x6e, 0xad, 0xef, 0xc1, 0xee, 0x39, 0xd7, 0xe6, 0x24,
0x34, 0x7c, 0xbc, 0x3c, 0xc8, 0xfa, 0x6b, 0x20, 0x77, 0x29, 0x2d, 0x45, 0xa2, 0x19, 0x3e, 0x04,
0x48, 0x97, 0x50, 0x13, 0x54, 0xcb, 0x37, 0x4a, 0x41, 0x69, 0xb1, 0x85, 0xba, 0xf5, 0x1b, 0xc1,
0xb6, 0x73, 0x74, 0x12, 0xc3, 0x54, 0x42, 0x63, 0xfc, 0x1e, 0xca, 0x99, 0xa6, 0xf1, 0xee, 0x9a,
0x31, 0x78, 0x0f, 0xd3, 0xd7, 0x59, 0x04, 0x5c, 0x89, 0x3a, 0xdc, 0x5c, 0xa3, 0x62, 0x15, 0xbd,
0x45, 0x2f, 0x11, 0xfe, 0x0e, 0xd5, 0xd5, 0xb2, 0xf0, 0x81, 0x4d, 0x5b, 0xd3, 0x88, 0x77, 0xb8,
0x86, 0x75, 0xbd, 0xa4, 0xe1, 0xb9, 0x06, 0x6a, 0xfd, 0x42, 0x50, 0x71, 0xf4, 0x19, 0x4d, 0xa2,
0x98, 0x29, 0xdc, 0x81, 0xad, 0x4b, 0x19, 0x51, 0xc3, 0x2e, 0x8c, 0x62, 0x74, 0x88, 0x0f, 0xd2,
0xfa, 0xb2, 0xf0, 0x3f, 0xab, 0x2f, 0xde, 0x5c, 0xa3, 0x5c, 0x15, 0xe1, 0x36, 0xc0, 0x85, 0x11,
0x72, 0x5e, 0xb3, 0x97, 0x4a, 0x6f, 0xc1, 0xff, 0x89, 0x39, 0x7d, 0xfe, 0xed, 0xa8, 0xcf, 0xcd,
0x8f, 0x51, 0xcf, 0x0f, 0xc5, 0xb0, 0x39, 0x17, 0xa6, 0x5f, 0x39, 0xe8, 0x37, 0x35, 0x53, 0x63,
0x1e, 0xb2, 0xa6, 0x92, 0x61, 0xaf, 0x68, 0x97, 0xe0, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff,
0x95, 0xb8, 0x97, 0x1a, 0xa5, 0x04, 0x00, 0x00,
// 491 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xd1, 0x6e, 0x12, 0x41,
0x14, 0x86, 0x9d, 0x12, 0x96, 0xee, 0x41, 0x90, 0x8c, 0x35, 0x4c, 0x69, 0x1b, 0x29, 0x7a, 0xc1,
0x8d, 0x8b, 0xa1, 0x57, 0xde, 0x69, 0x0d, 0xb1, 0x24, 0x4d, 0x34, 0x60, 0x63, 0xa2, 0x17, 0x64,
0x99, 0x1d, 0xeb, 0x84, 0xdd, 0x9d, 0x71, 0xe6, 0x50, 0x9e, 0xa1, 0x8f, 0xe1, 0x2b, 0xf4, 0xc2,
0xa7, 0xf0, 0xa1, 0x0c, 0xb3, 0xb0, 0x5d, 0x68, 0x30, 0x5e, 0xce, 0xff, 0x9f, 0xff, 0xdb, 0x73,
0xce, 0xcc, 0x42, 0xc3, 0x68, 0xde, 0x13, 0xd7, 0x46, 0x58, 0x1b, 0x68, 0xa3, 0x50, 0xd1, 0x92,
0xd1, 0xbc, 0x55, 0x53, 0x1a, 0xa5, 0x4a, 0x57, 0x5a, 0xeb, 0x20, 0x96, 0x37, 0x62, 0x26, 0x71,
0x52, 0xac, 0xec, 0xfc, 0x29, 0x01, 0x1d, 0x63, 0x68, 0x70, 0xe0, 0xd4, 0x91, 0xf8, 0x39, 0x17,
0x16, 0xe9, 0x11, 0xf8, 0x59, 0xd9, 0x44, 0x46, 0x8c, 0xb4, 0x49, 0xd7, 0x1f, 0xed, 0x67, 0xc2,
0x30, 0xa2, 0x97, 0x50, 0x37, 0x4a, 0x25, 0x13, 0xae, 0x12, 0xad, 0xac, 0x44, 0xc1, 0xca, 0x6d,
0xd2, 0xad, 0xf6, 0x5f, 0x04, 0xab, 0x4f, 0x04, 0x23, 0xa5, 0x92, 0xf7, 0x6b, 0x77, 0x83, 0x7c,
0xf1, 0x68, 0x54, 0x33, 0x45, 0x97, 0xbe, 0x82, 0xd2, 0x42, 0x4c, 0x59, 0xd5, 0x21, 0x0e, 0x73,
0xc4, 0x17, 0x31, 0xdd, 0x0e, 0x2e, 0xeb, 0xe8, 0x00, 0xaa, 0x3a, 0x34, 0x28, 0xb9, 0xd4, 0x61,
0x8a, 0xac, 0xe6, 0x62, 0xa7, 0x79, 0xec, 0xd3, 0xbd, 0xb7, 0x1d, 0x2f, 0xe6, 0xe8, 0x47, 0x78,
0x82, 0x26, 0xe4, 0xb3, 0xc2, 0x10, 0x9e, 0x43, 0xbd, 0xcc, 0x51, 0x9f, 0x97, 0xfe, 0xce, 0x29,
0xea, 0xb8, 0x61, 0xd3, 0x33, 0x28, 0x3b, 0x85, 0x55, 0x1c, 0xe6, 0x68, 0x13, 0xb3, 0x9d, 0xce,
0x6a, 0x69, 0x13, 0x2a, 0x6e, 0x93, 0x32, 0x62, 0x25, 0xb7, 0x64, 0x6f, 0x79, 0x1c, 0x46, 0xf4,
0x00, 0xca, 0xa8, 0x66, 0x22, 0x65, 0xfb, 0x4e, 0xce, 0x0e, 0xf4, 0x19, 0x78, 0x0b, 0x3b, 0x99,
0x9b, 0x98, 0xf9, 0x99, 0xbc, 0xb0, 0x57, 0x26, 0x3e, 0xf7, 0xa1, 0x62, 0x32, 0x72, 0xe7, 0x10,
0x9a, 0x97, 0xd2, 0xe2, 0x3b, 0x8e, 0xf2, 0x66, 0xb3, 0xe5, 0xce, 0x1b, 0x60, 0x0f, 0x2d, 0xab,
0x55, 0x6a, 0x05, 0x3d, 0x01, 0xc8, 0xaf, 0xdb, 0x32, 0xd2, 0x2e, 0x75, 0xfd, 0x91, 0xbf, 0xbe,
0x6f, 0xdb, 0xff, 0x4d, 0xa0, 0x9e, 0x25, 0x86, 0x29, 0x0a, 0x93, 0x86, 0x31, 0xfd, 0x00, 0xd5,
0xc2, 0xb3, 0xa1, 0xcd, 0xc0, 0x68, 0x1e, 0x3c, 0x7c, 0x48, 0xad, 0xa7, 0xf9, 0x1e, 0xd6, 0x80,
0xef, 0xaa, 0x03, 0x77, 0xb7, 0xc4, 0x6b, 0x90, 0xb7, 0xe4, 0x35, 0xa1, 0xdf, 0xa0, 0xb1, 0xdd,
0x16, 0x3d, 0x76, 0xb4, 0x1d, 0x83, 0xb4, 0x4e, 0x76, 0xb8, 0xd9, 0x2c, 0x39, 0x7c, 0xaf, 0x4b,
0xfa, 0xbf, 0x08, 0xd4, 0x32, 0xfb, 0x22, 0x4c, 0xa3, 0x58, 0x18, 0x3a, 0x84, 0xc7, 0x57, 0x3a,
0x0a, 0x51, 0x8c, 0xd1, 0x88, 0x30, 0xa1, 0xc7, 0x79, 0x7f, 0x45, 0xf9, 0x9f, 0xdd, 0x7b, 0x77,
0xb7, 0x64, 0xaf, 0x41, 0xe8, 0x00, 0x60, 0x8c, 0x4a, 0xaf, 0x7a, 0x6e, 0xe5, 0xa5, 0xf7, 0xe2,
0xff, 0x60, 0xce, 0x4f, 0xbf, 0x3e, 0xbf, 0x96, 0xf8, 0x63, 0x3e, 0x0d, 0xb8, 0x4a, 0x7a, 0xab,
0xc2, 0x9e, 0xfb, 0x3b, 0xb9, 0x8a, 0x7b, 0x46, 0xf3, 0xa9, 0xe7, 0x4e, 0x67, 0x7f, 0x03, 0x00,
0x00, 0xff, 0xff, 0x47, 0x4e, 0x8e, 0x31, 0xe9, 0x03, 0x00, 0x00,
}

View File

@@ -56,7 +56,7 @@ func NewEgressClient(params ClientParams) (EgressClient, error) {
return nil, nil
}
opts := clientOptions(params)
opts := params.Options()
timeout := params.Timeout
if timeout < 10*time.Second {
timeout = 10 * time.Second

View File

@@ -312,10 +312,10 @@ var file_rpc_ingress_proto_rawDesc = []byte{
0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x48, 0x49, 0x50, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x22, 0x06, 0xb2, 0x89, 0x01, 0x02, 0x10, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x22, 0x06, 0xb2, 0x89, 0x01, 0x02, 0x10, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (

View File

@@ -285,38 +285,38 @@ func (s *ingressHandlerServer) Kill() {
}
var psrpcFileDescriptor2 = []byte{
// 524 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xd1, 0x8b, 0xd3, 0x4e,
0x10, 0x66, 0xd3, 0xfb, 0x95, 0xdf, 0xcd, 0xd9, 0xb3, 0xb7, 0x5e, 0x25, 0x17, 0x39, 0x2d, 0x79,
0x2a, 0x2a, 0x89, 0xd4, 0x17, 0x11, 0x1f, 0xaa, 0x78, 0xd2, 0xe2, 0x09, 0x92, 0xf3, 0x10, 0x14,
0x0c, 0x69, 0x32, 0x8d, 0x4b, 0xd3, 0x6c, 0xdc, 0xdd, 0xf4, 0xe8, 0xab, 0xf8, 0xd2, 0x7f, 0xa7,
0xaf, 0xfe, 0x73, 0x92, 0x6c, 0x72, 0xb4, 0xb6, 0x05, 0x9f, 0xda, 0xfd, 0xe6, 0x9b, 0x6f, 0xbe,
0x99, 0xcc, 0xc0, 0x89, 0xc8, 0x42, 0x97, 0xa5, 0xb1, 0x40, 0x29, 0x9d, 0x4c, 0x70, 0xc5, 0x69,
0x43, 0x64, 0xa1, 0xd5, 0xe2, 0x99, 0x62, 0x3c, 0xad, 0x30, 0xab, 0x93, 0xb0, 0x39, 0x4e, 0x99,
0xf2, 0x37, 0xa8, 0xd6, 0x83, 0x98, 0xf3, 0x38, 0x41, 0xb7, 0x7c, 0x8d, 0xf3, 0x89, 0x8b, 0xb3,
0x4c, 0x2d, 0x74, 0xd0, 0xb6, 0xc0, 0xbc, 0x64, 0x52, 0xbd, 0x0e, 0x15, 0x9b, 0xe3, 0x48, 0xe7,
0x79, 0xf8, 0x23, 0x47, 0xa9, 0xec, 0x57, 0x70, 0xb6, 0x23, 0x26, 0x33, 0x9e, 0x4a, 0xa4, 0x8f,
0xe0, 0xa8, 0x2a, 0xe3, 0xb3, 0x48, 0x9a, 0xa4, 0xdb, 0xe8, 0x1d, 0x7a, 0x50, 0x41, 0xa3, 0x48,
0xda, 0x5f, 0xe1, 0xec, 0x2d, 0x26, 0xa8, 0xf0, 0xf3, 0x70, 0xf4, 0xd1, 0x43, 0xc9, 0x73, 0x11,
0x62, 0x25, 0x5d, 0x64, 0x8b, 0x0a, 0xf2, 0x59, 0x64, 0x92, 0x2e, 0x29, 0xb2, 0x6b, 0x68, 0x14,
0xd1, 0x73, 0x00, 0xa9, 0x04, 0x06, 0x33, 0x7f, 0x8a, 0x0b, 0xd3, 0x28, 0xe3, 0x87, 0x1a, 0x79,
0x8f, 0x0b, 0xfb, 0xa7, 0x01, 0xf7, 0xae, 0x54, 0x20, 0xd4, 0xa6, 0x65, 0xda, 0x83, 0x03, 0x96,
0x4e, 0x78, 0x29, 0x78, 0xd4, 0x3f, 0x75, 0xaa, 0x89, 0x38, 0x15, 0x6d, 0x94, 0x4e, 0xb8, 0x57,
0x32, 0xe8, 0x29, 0xfc, 0xa7, 0xf8, 0x14, 0xd3, 0x4a, 0x5b, 0x3f, 0x68, 0x07, 0x9a, 0x37, 0xd2,
0xcf, 0x45, 0x62, 0x36, 0x34, 0x7c, 0x23, 0xaf, 0x45, 0x42, 0x3d, 0x38, 0x4e, 0x78, 0x1c, 0xb3,
0x34, 0xf6, 0x27, 0x0c, 0x93, 0x48, 0x9a, 0x07, 0xdd, 0x46, 0xef, 0xa8, 0xff, 0xc4, 0x11, 0x59,
0xe8, 0xec, 0x30, 0xe2, 0x5c, 0x6a, 0xfa, 0xbb, 0x92, 0x7d, 0x91, 0x2a, 0xb1, 0xf0, 0x5a, 0xc9,
0x3a, 0x66, 0x0d, 0x80, 0x6e, 0x93, 0x68, 0x1b, 0x1a, 0x45, 0xc3, 0x7a, 0x20, 0xc5, 0xdf, 0xc2,
0xe8, 0x3c, 0x48, 0x72, 0xac, 0x8d, 0x96, 0x8f, 0x97, 0xc6, 0x0b, 0xd2, 0xff, 0x4d, 0xe0, 0xee,
0x6d, 0x63, 0x0a, 0x45, 0x1a, 0x24, 0x74, 0x08, 0x77, 0xd6, 0xed, 0x50, 0x73, 0x9f, 0x43, 0x6b,
0xe7, 0x70, 0xec, 0xff, 0x57, 0x4b, 0x72, 0x30, 0x20, 0xcf, 0x08, 0xfd, 0x06, 0x27, 0x5b, 0x5f,
0x9f, 0x9e, 0x97, 0x72, 0xfb, 0x36, 0xc6, 0x7a, 0xb8, 0x2f, 0xac, 0x97, 0xc6, 0x86, 0xd5, 0x92,
0x34, 0xdb, 0x64, 0x60, 0xf4, 0x48, 0xff, 0x97, 0x01, 0xc7, 0x55, 0x7c, 0x18, 0xa4, 0x51, 0x82,
0x82, 0x7e, 0x80, 0xd6, 0x75, 0x16, 0x05, 0x6a, 0xad, 0x5c, 0xed, 0x71, 0x03, 0xaf, 0xcb, 0x75,
0xfe, 0x6e, 0xe1, 0x4a, 0x05, 0x0a, 0xed, 0xe6, 0x6a, 0x49, 0x8c, 0x36, 0x29, 0xe4, 0xf4, 0x06,
0x6e, 0xcb, 0x6d, 0xe0, 0xff, 0x28, 0xf7, 0x09, 0xe8, 0xf6, 0x42, 0x53, 0xdd, 0xf2, 0xde, 0x4d,
0xb7, 0xee, 0x3b, 0xfa, 0xfc, 0x9c, 0xfa, 0xfc, 0x9c, 0x8b, 0xe2, 0xfc, 0x6a, 0xd5, 0x37, 0x4f,
0xbf, 0x3c, 0x8e, 0x99, 0xfa, 0x9e, 0x8f, 0x9d, 0x90, 0xcf, 0xdc, 0xca, 0xc0, 0xed, 0x6f, 0x36,
0x8d, 0x5d, 0x89, 0x62, 0xce, 0x42, 0x74, 0x45, 0x16, 0x8e, 0x9b, 0xa5, 0xca, 0xf3, 0x3f, 0x01,
0x00, 0x00, 0xff, 0xff, 0x92, 0x24, 0x86, 0x55, 0x12, 0x04, 0x00, 0x00,
// 516 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x51, 0x8b, 0xd3, 0x40,
0x10, 0x66, 0xd3, 0xb3, 0x78, 0x73, 0xde, 0x79, 0xb7, 0x5e, 0x25, 0x17, 0x39, 0xaf, 0xe6, 0xa9,
0x20, 0xa4, 0x52, 0x5f, 0x44, 0x7c, 0xa8, 0xe2, 0x49, 0x8b, 0x27, 0x48, 0xce, 0x43, 0x50, 0x30,
0xa4, 0xc9, 0x34, 0x2e, 0xdd, 0x66, 0xe3, 0xee, 0xa6, 0x47, 0x5f, 0xc5, 0x97, 0xfe, 0x9d, 0xbe,
0xfa, 0xe7, 0x24, 0xd9, 0x44, 0x5a, 0xdb, 0x82, 0x6f, 0x99, 0x6f, 0xbe, 0xfd, 0xe6, 0x9b, 0xc9,
0x0c, 0x9c, 0xc8, 0x2c, 0xea, 0xb2, 0x34, 0x91, 0xa8, 0x94, 0x97, 0x49, 0xa1, 0x05, 0x6d, 0xc8,
0x2c, 0x72, 0x0e, 0x45, 0xa6, 0x99, 0x48, 0x2b, 0xcc, 0x69, 0x71, 0x36, 0xc3, 0x09, 0xd3, 0xc1,
0x1a, 0xd5, 0x79, 0x94, 0x08, 0x91, 0x70, 0xec, 0x96, 0xd1, 0x28, 0x1f, 0x77, 0x71, 0x9a, 0xe9,
0xb9, 0x49, 0xba, 0x0e, 0xd8, 0x57, 0x4c, 0xe9, 0xd7, 0x91, 0x66, 0x33, 0x1c, 0x9a, 0x77, 0x3e,
0xfe, 0xc8, 0x51, 0x69, 0xf7, 0x15, 0x9c, 0x6d, 0xc9, 0xa9, 0x4c, 0xa4, 0x0a, 0xe9, 0x05, 0x1c,
0x54, 0x65, 0x02, 0x16, 0x2b, 0x9b, 0xb4, 0x1b, 0x9d, 0x7d, 0x1f, 0x2a, 0x68, 0x18, 0x2b, 0xf7,
0x2b, 0x9c, 0xbd, 0x45, 0x8e, 0x1a, 0x3f, 0x0f, 0x86, 0x1f, 0x7d, 0x54, 0x22, 0x97, 0x11, 0x56,
0xd2, 0xc5, 0x6b, 0x59, 0x41, 0x01, 0x8b, 0x6d, 0xd2, 0x26, 0xc5, 0xeb, 0x1a, 0x1a, 0xc6, 0xf4,
0x1c, 0x40, 0x69, 0x89, 0xe1, 0x34, 0x98, 0xe0, 0xdc, 0xb6, 0xca, 0xfc, 0xbe, 0x41, 0xde, 0xe3,
0xdc, 0xfd, 0x69, 0xc1, 0x83, 0x6b, 0x1d, 0x4a, 0xbd, 0x6e, 0x99, 0x76, 0x60, 0x8f, 0xa5, 0x63,
0x51, 0x0a, 0x1e, 0xf4, 0x4e, 0xbd, 0x6a, 0x22, 0x5e, 0x45, 0x1b, 0xa6, 0x63, 0xe1, 0x97, 0x0c,
0x7a, 0x0a, 0x77, 0xb4, 0x98, 0x60, 0x5a, 0x69, 0x9b, 0x80, 0xb6, 0xa0, 0x79, 0xab, 0x82, 0x5c,
0x72, 0xbb, 0x61, 0xe0, 0x5b, 0x75, 0x23, 0x39, 0xf5, 0xe1, 0x88, 0x8b, 0x24, 0x61, 0x69, 0x12,
0x8c, 0x19, 0xf2, 0x58, 0xd9, 0x7b, 0xed, 0x46, 0xe7, 0xa0, 0xf7, 0xd4, 0x93, 0x59, 0xe4, 0x6d,
0x31, 0xe2, 0x5d, 0x19, 0xfa, 0xbb, 0x92, 0x7d, 0x99, 0x6a, 0x39, 0xf7, 0x0f, 0xf9, 0x2a, 0xe6,
0xf4, 0x81, 0x6e, 0x92, 0xe8, 0x31, 0x34, 0x8a, 0x86, 0xcd, 0x40, 0x8a, 0xcf, 0xc2, 0xe8, 0x2c,
0xe4, 0x39, 0xd6, 0x46, 0xcb, 0xe0, 0xa5, 0xf5, 0x82, 0xf4, 0x7e, 0x13, 0xb8, 0xff, 0xb7, 0x31,
0x8d, 0x32, 0x0d, 0x39, 0x1d, 0xc0, 0xbd, 0x55, 0x3b, 0xd4, 0xde, 0xe5, 0xd0, 0xd9, 0x3a, 0x1c,
0xf7, 0xee, 0x72, 0x41, 0xf6, 0xfa, 0xe4, 0x19, 0xa1, 0xdf, 0xe0, 0x64, 0xe3, 0xef, 0xd3, 0xf3,
0x52, 0x6e, 0xd7, 0xc6, 0x38, 0x8f, 0x77, 0xa5, 0xcd, 0xd2, 0xb8, 0xb0, 0x5c, 0x90, 0xe6, 0x31,
0xe9, 0x5b, 0x1d, 0xd2, 0xfb, 0x65, 0xc1, 0x51, 0x95, 0x1f, 0x84, 0x69, 0xcc, 0x51, 0xd2, 0x0f,
0x70, 0x78, 0x93, 0xc5, 0xa1, 0x5e, 0x29, 0x57, 0x7b, 0x5c, 0xc3, 0xeb, 0x72, 0xad, 0x7f, 0x5b,
0xb8, 0xd6, 0xa1, 0x46, 0xb7, 0xb9, 0x5c, 0x10, 0xeb, 0x98, 0x14, 0x72, 0x66, 0x03, 0x37, 0xe5,
0xd6, 0xf0, 0xff, 0x94, 0xfb, 0x04, 0x74, 0x73, 0xa1, 0xa9, 0x69, 0x79, 0xe7, 0xa6, 0x3b, 0x0f,
0x3d, 0x73, 0x7e, 0x5e, 0x7d, 0x7e, 0xde, 0x65, 0x71, 0x7e, 0xb5, 0xea, 0x9b, 0x27, 0x5f, 0x2e,
0x12, 0xa6, 0xbf, 0xe7, 0x23, 0x2f, 0x12, 0xd3, 0x6e, 0x65, 0xc0, 0xdc, 0x6a, 0x24, 0x78, 0x57,
0x66, 0xd1, 0xa8, 0x59, 0x46, 0xcf, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x53, 0x41, 0x1b, 0x63,
0x07, 0x04, 0x00, 0x00,
}

View File

@@ -28,7 +28,7 @@ func NewIngressClient(params ClientParams) (IngressClient, error) {
if params.Bus == nil {
return nil, nil
}
opts := clientOptions(params)
opts := params.Options()
internalClient, err := NewIngressInternalClient(params.Bus, opts...)
if err != nil {

View File

@@ -867,10 +867,9 @@ var file_rpc_io_proto_rawDesc = []byte{
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45,
0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74,
0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42,
0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b,
0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69,
0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72,
0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -271,68 +271,68 @@ func (s *iOInfoServer) Kill() {
}
var psrpcFileDescriptor3 = []byte{
// 1004 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x5d, 0x53, 0xe4, 0x44,
0x14, 0x75, 0x3e, 0x97, 0xb9, 0x03, 0x38, 0xf6, 0x0e, 0x38, 0x84, 0xd2, 0xc5, 0x59, 0x51, 0x6a,
0xdd, 0xca, 0x94, 0xf8, 0xa0, 0xa5, 0x65, 0x95, 0x30, 0x1b, 0x31, 0x8a, 0x30, 0x06, 0xe6, 0x41,
0x5f, 0x62, 0x48, 0x9a, 0xd0, 0x92, 0x49, 0xb7, 0xdd, 0x1d, 0x58, 0xde, 0x7c, 0x52, 0xff, 0xaf,
0xfe, 0x00, 0xab, 0x3f, 0x32, 0x0c, 0xcb, 0xcc, 0x62, 0xed, 0x53, 0xd2, 0xe7, 0x9e, 0x7b, 0x73,
0xee, 0x49, 0xf7, 0x6d, 0x58, 0xe6, 0x2c, 0x1e, 0x10, 0xea, 0x32, 0x4e, 0x25, 0x45, 0x35, 0xce,
0x62, 0xa7, 0x9b, 0x91, 0x2b, 0x7c, 0x49, 0x64, 0x88, 0x53, 0x8e, 0x85, 0x30, 0x21, 0x67, 0xad,
0x44, 0x49, 0x3e, 0x0b, 0x6f, 0xa6, 0x94, 0xa6, 0x19, 0x1e, 0xe8, 0xd5, 0x59, 0x71, 0x3e, 0xc0,
0x13, 0x26, 0x6f, 0x4c, 0xb0, 0x3f, 0x80, 0xce, 0x01, 0x96, 0x9e, 0xe6, 0x07, 0xf8, 0xf7, 0x02,
0x0b, 0x89, 0x36, 0xa1, 0x65, 0xea, 0x86, 0x24, 0xe9, 0x55, 0xb6, 0x2a, 0x3b, 0xad, 0x60, 0xc9,
0x00, 0x7e, 0xd2, 0xff, 0xab, 0x02, 0xdd, 0x31, 0x4b, 0x22, 0x89, 0x7f, 0xc4, 0x92, 0x93, 0x78,
0x9a, 0xf5, 0x31, 0xd4, 0x49, 0x7e, 0x4e, 0x75, 0x42, 0x7b, 0xf7, 0xb1, 0x6b, 0xc5, 0xb8, 0xa6,
0xb6, 0x9f, 0x9f, 0xd3, 0x40, 0x13, 0x50, 0x1f, 0x56, 0xa2, 0xab, 0x34, 0x8c, 0x59, 0x11, 0x16,
0x22, 0x4a, 0x71, 0xaf, 0xb6, 0x55, 0xd9, 0xa9, 0x06, 0xed, 0xe8, 0x2a, 0x1d, 0xb2, 0x62, 0xac,
0x20, 0xc5, 0x99, 0x44, 0x2f, 0x67, 0x38, 0x75, 0xc3, 0x99, 0x44, 0x2f, 0x4b, 0x4e, 0x7f, 0x0c,
0x6b, 0x07, 0x58, 0xfa, 0xf9, 0x6d, 0x7d, 0xab, 0xe4, 0x3d, 0x00, 0xeb, 0xc0, 0x6d, 0x03, 0x2d,
0x8b, 0xf8, 0x89, 0x0a, 0x0b, 0xc9, 0x71, 0x34, 0x09, 0x2f, 0xf1, 0x4d, 0xaf, 0x6a, 0xc2, 0x06,
0xf9, 0x01, 0xdf, 0xf4, 0xff, 0xae, 0xc2, 0xfa, 0xab, 0x75, 0x05, 0xa3, 0xb9, 0xc0, 0x68, 0xe7,
0x4e, 0x8b, 0xdd, 0x69, 0x8b, 0xb3, 0x5c, 0xd3, 0x63, 0x17, 0x1a, 0x92, 0x5e, 0xe2, 0xdc, 0x96,
0x37, 0x0b, 0xb4, 0x06, 0xcd, 0x6b, 0x11, 0x16, 0x3c, 0xd3, 0x2d, 0xb7, 0x82, 0xc6, 0xb5, 0x18,
0xf3, 0x0c, 0x8d, 0x61, 0x35, 0xa3, 0x69, 0x4a, 0xf2, 0x34, 0x3c, 0x27, 0x38, 0x4b, 0x44, 0xaf,
0xbe, 0x55, 0xdb, 0x69, 0xef, 0xba, 0x2e, 0x67, 0xb1, 0x3b, 0x5f, 0x8b, 0x7b, 0x68, 0x32, 0xbe,
0xd5, 0x09, 0x5e, 0x2e, 0xf9, 0x4d, 0xb0, 0x92, 0xcd, 0x62, 0xce, 0x37, 0x80, 0xee, 0x93, 0x50,
0x07, 0x6a, 0xaa, 0x6d, 0xe3, 0x8a, 0x7a, 0x55, 0x5a, 0xaf, 0xa2, 0xac, 0xc0, 0xa5, 0x56, 0xbd,
0xf8, 0xb2, 0xfa, 0x45, 0xa5, 0x9f, 0xc2, 0x86, 0xf9, 0xd5, 0x56, 0xc0, 0x89, 0x8c, 0x24, 0xfe,
0x9f, 0x2e, 0x7f, 0x02, 0x0d, 0xa1, 0xe8, 0xba, 0x6a, 0x7b, 0x77, 0xed, 0x55, 0xb3, 0x4c, 0x2d,
0xc3, 0xe9, 0xff, 0x51, 0x81, 0xad, 0x03, 0x2c, 0x4f, 0xfc, 0xd1, 0x29, 0x2f, 0xf2, 0xcb, 0xbd,
0x42, 0x5e, 0xe0, 0x5c, 0x92, 0x38, 0x92, 0x84, 0xe6, 0xe5, 0x07, 0x11, 0xd4, 0xcf, 0x39, 0x9d,
0x58, 0x99, 0xfa, 0x1d, 0xad, 0x42, 0x55, 0x52, 0xeb, 0x66, 0x55, 0x52, 0xf4, 0x04, 0xda, 0x82,
0xc7, 0x61, 0x94, 0x24, 0xea, 0x1b, 0x7a, 0xd7, 0xb4, 0x02, 0x10, 0x3c, 0xde, 0x33, 0x08, 0x7a,
0x17, 0x1e, 0x49, 0x1a, 0x5e, 0x50, 0x21, 0x7b, 0x0d, 0x1d, 0x6c, 0x4a, 0xfa, 0x1d, 0x15, 0xb2,
0x4f, 0xe1, 0x83, 0xd7, 0x28, 0xb0, 0x1b, 0xc0, 0x81, 0xa5, 0x42, 0x60, 0x9e, 0x47, 0x13, 0x5c,
0x1e, 0x8c, 0x72, 0xad, 0x62, 0x2c, 0x12, 0xe2, 0x9a, 0xf2, 0xc4, 0x4a, 0x9c, 0xae, 0x95, 0xf4,
0x84, 0x53, 0xa6, 0x85, 0x2e, 0x05, 0xfa, 0xbd, 0xff, 0x67, 0x15, 0x9e, 0x78, 0xca, 0xeb, 0x48,
0xe2, 0x13, 0x7f, 0xf4, 0x82, 0x08, 0x16, 0xc9, 0xf8, 0x22, 0x28, 0x32, 0x3c, 0x3d, 0x53, 0xcf,
0x01, 0x09, 0xc2, 0x42, 0x16, 0x71, 0x49, 0x62, 0xc2, 0xa2, 0x5c, 0xde, 0x7a, 0xdd, 0x11, 0x84,
0x8d, 0x6e, 0x03, 0x7e, 0x82, 0xb6, 0x61, 0x35, 0x8e, 0xb2, 0x4c, 0xed, 0xa3, 0xbc, 0x98, 0x9c,
0x61, 0x6e, 0x75, 0xac, 0x58, 0xf4, 0x48, 0x83, 0xe8, 0x29, 0x68, 0x00, 0x27, 0x25, 0xcb, 0xd8,
0xb7, 0x6c, 0x40, 0x4b, 0x7a, 0xd0, 0xc8, 0x0e, 0xd4, 0x18, 0xc9, 0xad, 0x89, 0xea, 0x55, 0xed,
0xee, 0x9c, 0x86, 0x0a, 0x6c, 0xea, 0x36, 0x1b, 0x39, 0x1d, 0x91, 0x5c, 0x55, 0xb2, 0x9f, 0xd3,
0xae, 0x3f, 0x32, 0x95, 0x0c, 0xa4, 0x9d, 0xff, 0xb7, 0x02, 0x5b, 0x8b, 0x8d, 0xb0, 0xce, 0x6f,
0x42, 0x8b, 0x53, 0x3a, 0x09, 0x67, 0xad, 0x57, 0xc0, 0x91, 0xb2, 0xfe, 0x53, 0xe8, 0xde, 0xb5,
0x48, 0xfd, 0x3a, 0x59, 0x9e, 0xed, 0xc7, 0x6c, 0xd6, 0x25, 0x13, 0x42, 0x4f, 0xa1, 0xcd, 0x8d,
0xc9, 0x5a, 0xb1, 0xfe, 0x31, 0xfb, 0xd5, 0x5e, 0x25, 0x00, 0x0b, 0x2b, 0xe9, 0xd3, 0x53, 0x5c,
0x9f, 0x7f, 0x8a, 0x1b, 0xb3, 0xa7, 0xd8, 0x85, 0x26, 0xc7, 0xa2, 0xc8, 0xa4, 0x6e, 0x7f, 0x75,
0x77, 0x5d, 0x9f, 0xde, 0xd9, 0x86, 0x74, 0x34, 0xb0, 0xac, 0x67, 0xbf, 0xc2, 0x3b, 0xf7, 0x82,
0xa8, 0x07, 0xdd, 0x43, 0xef, 0x60, 0x6f, 0xf8, 0x73, 0xb8, 0x37, 0x1c, 0x7a, 0xa3, 0xd3, 0xf0,
0x38, 0x08, 0x47, 0xfe, 0x51, 0xe7, 0x2d, 0x04, 0xd0, 0x34, 0x50, 0xa7, 0x82, 0xde, 0x86, 0x76,
0xe0, 0xfd, 0x34, 0xf6, 0x4e, 0x4e, 0x75, 0xb0, 0xaa, 0x82, 0x81, 0xf7, 0xbd, 0x37, 0x3c, 0xed,
0xd4, 0xd0, 0x12, 0xd4, 0x5f, 0x04, 0xc7, 0xa3, 0x4e, 0x7d, 0xf7, 0x9f, 0x06, 0x34, 0xfd, 0x63,
0x35, 0x35, 0xd0, 0x57, 0xb0, 0x3c, 0xe4, 0x38, 0x92, 0xd8, 0x4c, 0x63, 0x34, 0x6f, 0x3c, 0x3b,
0xeb, 0xae, 0xb9, 0x29, 0xdc, 0xf2, 0xa6, 0x70, 0x3d, 0x75, 0x53, 0xa8, 0x64, 0x33, 0x06, 0xde,
0x24, 0xf9, 0x73, 0x68, 0x4d, 0x2f, 0x18, 0xb4, 0x56, 0x4e, 0xb4, 0x3b, 0x17, 0x8e, 0x33, 0xaf,
0x20, 0xf2, 0x00, 0x0e, 0x89, 0x28, 0x33, 0x9d, 0x29, 0xe5, 0x16, 0x2c, 0xd3, 0x37, 0xe7, 0xc6,
0xec, 0xc6, 0xd9, 0x87, 0x95, 0x3b, 0xd7, 0x15, 0xda, 0xd0, 0x1a, 0xe6, 0x5d, 0x61, 0x0b, 0x7b,
0xf8, 0x1a, 0x56, 0x8c, 0x7b, 0x76, 0x76, 0xa1, 0xb9, 0xa3, 0x7f, 0x61, 0xba, 0x0f, 0xab, 0x77,
0x87, 0x38, 0x72, 0xe6, 0x4e, 0xf6, 0xb2, 0x9b, 0xc5, 0x53, 0x1f, 0x1d, 0x02, 0xba, 0x3f, 0x91,
0xd1, 0xfb, 0x33, 0x2d, 0xcd, 0x19, 0xd5, 0x0b, 0x85, 0xfd, 0x06, 0x1b, 0x0b, 0x67, 0x1e, 0xda,
0x2e, 0x75, 0xbc, 0x76, 0x2a, 0x3b, 0x1f, 0x3d, 0x44, 0xb3, 0xca, 0x53, 0xe8, 0x2d, 0x3a, 0xe4,
0xe8, 0x43, 0x5d, 0xe3, 0x81, 0x61, 0xe8, 0x6c, 0x3f, 0xc0, 0x32, 0x1f, 0xda, 0x7f, 0xfe, 0xcb,
0xb3, 0x94, 0xc8, 0x8b, 0xe2, 0xcc, 0x8d, 0xe9, 0x64, 0x60, 0xff, 0xd3, 0xf4, 0xc9, 0x2e, 0xd3,
0x81, 0xc0, 0xfc, 0x8a, 0xc4, 0x78, 0xc0, 0x59, 0x7c, 0xd6, 0xd4, 0x96, 0x7c, 0xf6, 0x5f, 0x00,
0x00, 0x00, 0xff, 0xff, 0x67, 0xb7, 0xc7, 0x3b, 0x65, 0x09, 0x00, 0x00,
// 997 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x73, 0xe3, 0x34,
0x14, 0x25, 0x9f, 0xdb, 0xdc, 0xb4, 0x25, 0x68, 0xd3, 0x92, 0xba, 0x03, 0xed, 0x66, 0x29, 0x74,
0x80, 0x71, 0x86, 0xf0, 0x00, 0x03, 0xc3, 0x0c, 0x6d, 0xd6, 0x14, 0x43, 0x69, 0x83, 0xdb, 0x3c,
0xc0, 0x8b, 0x71, 0x6d, 0xc5, 0x15, 0x75, 0x2c, 0x23, 0xc9, 0xed, 0xf6, 0x8d, 0x27, 0xe0, 0xff,
0xc2, 0x0f, 0x60, 0xf4, 0xe1, 0x7c, 0x6c, 0x93, 0x2d, 0xc3, 0x9b, 0x75, 0xee, 0xb9, 0xd7, 0xe7,
0x1e, 0x4b, 0x57, 0x86, 0x75, 0x96, 0x85, 0x3d, 0x42, 0xed, 0x8c, 0x51, 0x41, 0x51, 0x85, 0x65,
0xa1, 0xd5, 0x4e, 0xc8, 0x2d, 0xbe, 0x21, 0xc2, 0xc7, 0x31, 0xc3, 0x9c, 0xeb, 0x90, 0xb5, 0x55,
0xa0, 0x24, 0x9d, 0x87, 0x77, 0x63, 0x4a, 0xe3, 0x04, 0xf7, 0xd4, 0xea, 0x2a, 0x1f, 0xf7, 0xf0,
0x24, 0x13, 0xf7, 0x3a, 0xd8, 0xed, 0x41, 0xeb, 0x04, 0x0b, 0x47, 0xf1, 0x3d, 0xfc, 0x5b, 0x8e,
0xb9, 0x40, 0xbb, 0xd0, 0xd0, 0x75, 0x7d, 0x12, 0x75, 0x4a, 0xfb, 0xa5, 0xc3, 0x86, 0xb7, 0xa6,
0x01, 0x37, 0xea, 0xfe, 0x59, 0x82, 0xf6, 0x28, 0x8b, 0x02, 0x81, 0x7f, 0xc0, 0x82, 0x91, 0x70,
0x9a, 0xf5, 0x01, 0x54, 0x49, 0x3a, 0xa6, 0x2a, 0xa1, 0xd9, 0x7f, 0x6a, 0x1b, 0x31, 0xb6, 0xae,
0xed, 0xa6, 0x63, 0xea, 0x29, 0x02, 0xea, 0xc2, 0x46, 0x70, 0x1b, 0xfb, 0x61, 0x96, 0xfb, 0x39,
0x0f, 0x62, 0xdc, 0xa9, 0xec, 0x97, 0x0e, 0xcb, 0x5e, 0x33, 0xb8, 0x8d, 0x07, 0x59, 0x3e, 0x92,
0x90, 0xe4, 0x4c, 0x82, 0x97, 0x73, 0x9c, 0xaa, 0xe6, 0x4c, 0x82, 0x97, 0x05, 0xa7, 0x3b, 0x82,
0xad, 0x13, 0x2c, 0xdc, 0x74, 0x56, 0xdf, 0x28, 0x79, 0x07, 0xc0, 0x38, 0x30, 0x6b, 0xa0, 0x61,
0x10, 0x37, 0x92, 0x61, 0x2e, 0x18, 0x0e, 0x26, 0xfe, 0x0d, 0xbe, 0xef, 0x94, 0x75, 0x58, 0x23,
0xdf, 0xe3, 0xfb, 0xee, 0x5f, 0x65, 0xd8, 0x7e, 0xb5, 0x2e, 0xcf, 0x68, 0xca, 0x31, 0x3a, 0x5c,
0x68, 0xb1, 0x3d, 0x6d, 0x71, 0x9e, 0xab, 0x7b, 0x6c, 0x43, 0x4d, 0xd0, 0x1b, 0x9c, 0x9a, 0xf2,
0x7a, 0x81, 0xb6, 0xa0, 0x7e, 0xc7, 0xfd, 0x9c, 0x25, 0xaa, 0xe5, 0x86, 0x57, 0xbb, 0xe3, 0x23,
0x96, 0xa0, 0x11, 0x6c, 0x26, 0x34, 0x8e, 0x49, 0x1a, 0xfb, 0x63, 0x82, 0x93, 0x88, 0x77, 0xaa,
0xfb, 0x95, 0xc3, 0x66, 0xdf, 0xb6, 0x59, 0x16, 0xda, 0xcb, 0xb5, 0xd8, 0xa7, 0x3a, 0xe3, 0x1b,
0x95, 0xe0, 0xa4, 0x82, 0xdd, 0x7b, 0x1b, 0xc9, 0x3c, 0x66, 0x7d, 0x0d, 0xe8, 0x21, 0x09, 0xb5,
0xa0, 0x22, 0xdb, 0xd6, 0xae, 0xc8, 0x47, 0xa9, 0xf5, 0x36, 0x48, 0x72, 0x5c, 0x68, 0x55, 0x8b,
0x2f, 0xca, 0x9f, 0x97, 0xba, 0x31, 0xec, 0xe8, 0x4f, 0x6d, 0x04, 0x5c, 0x88, 0x40, 0xe0, 0xff,
0xe8, 0xf2, 0x47, 0x50, 0xe3, 0x92, 0xae, 0xaa, 0x36, 0xfb, 0x5b, 0xaf, 0x9a, 0xa5, 0x6b, 0x69,
0x4e, 0xf7, 0xf7, 0x12, 0xec, 0x9f, 0x60, 0x71, 0xe1, 0x0e, 0x2f, 0x59, 0x9e, 0xde, 0x1c, 0xe5,
0xe2, 0x1a, 0xa7, 0x82, 0x84, 0x81, 0x20, 0x34, 0x2d, 0x5e, 0x88, 0xa0, 0x3a, 0x66, 0x74, 0x62,
0x64, 0xaa, 0x67, 0xb4, 0x09, 0x65, 0x41, 0x8d, 0x9b, 0x65, 0x41, 0xd1, 0x1e, 0x34, 0x39, 0x0b,
0xfd, 0x20, 0x8a, 0xe4, 0x3b, 0xd4, 0xae, 0x69, 0x78, 0xc0, 0x59, 0x78, 0xa4, 0x11, 0xf4, 0x36,
0x3c, 0x11, 0xd4, 0xbf, 0xa6, 0x5c, 0x74, 0x6a, 0x2a, 0x58, 0x17, 0xf4, 0x5b, 0xca, 0x45, 0x97,
0xc2, 0xb3, 0xd7, 0x28, 0x30, 0x1b, 0xc0, 0x82, 0xb5, 0x9c, 0x63, 0x96, 0x06, 0x13, 0x5c, 0x1c,
0x8c, 0x62, 0x2d, 0x63, 0x59, 0xc0, 0xf9, 0x1d, 0x65, 0x91, 0x91, 0x38, 0x5d, 0x4b, 0xe9, 0x11,
0xa3, 0x99, 0x12, 0xba, 0xe6, 0xa9, 0xe7, 0xee, 0x1f, 0x65, 0xd8, 0x73, 0xa4, 0xd7, 0x81, 0xc0,
0x17, 0xee, 0xf0, 0x05, 0xe1, 0x59, 0x20, 0xc2, 0x6b, 0x2f, 0x4f, 0xf0, 0xf4, 0x4c, 0x7d, 0x0c,
0x88, 0x93, 0xcc, 0xcf, 0x02, 0x26, 0x48, 0x48, 0xb2, 0x20, 0x15, 0x33, 0xaf, 0x5b, 0x9c, 0x64,
0xc3, 0x59, 0xc0, 0x8d, 0xd0, 0x01, 0x6c, 0x86, 0x41, 0x92, 0xc8, 0x7d, 0x94, 0xe6, 0x93, 0x2b,
0xcc, 0x8c, 0x8e, 0x0d, 0x83, 0x9e, 0x29, 0x10, 0x3d, 0x07, 0x05, 0xe0, 0xa8, 0x60, 0x69, 0xfb,
0xd6, 0x35, 0x68, 0x48, 0x8f, 0x1a, 0xd9, 0x82, 0x4a, 0x46, 0x52, 0x63, 0xa2, 0x7c, 0x94, 0xbb,
0x3b, 0xa5, 0xbe, 0x04, 0xeb, 0xaa, 0xcd, 0x5a, 0x4a, 0x87, 0x24, 0x95, 0x95, 0xcc, 0xeb, 0x94,
0xeb, 0x4f, 0x74, 0x25, 0x0d, 0x29, 0xe7, 0xff, 0x29, 0xc1, 0xfe, 0x6a, 0x23, 0x8c, 0xf3, 0xbb,
0xd0, 0x60, 0x94, 0x4e, 0xfc, 0x79, 0xeb, 0x25, 0x70, 0x26, 0xad, 0xff, 0x04, 0xda, 0x8b, 0x16,
0xc9, 0x4f, 0x27, 0x8a, 0xb3, 0xfd, 0x34, 0x9b, 0x77, 0x49, 0x87, 0xd0, 0x73, 0x68, 0x32, 0x6d,
0xb2, 0x52, 0xac, 0x3e, 0xcc, 0x71, 0xb9, 0x53, 0xf2, 0xc0, 0xc0, 0x52, 0xfa, 0xf4, 0x14, 0x57,
0x97, 0x9f, 0xe2, 0xda, 0xfc, 0x29, 0xb6, 0xa1, 0xce, 0x30, 0xcf, 0x13, 0xa1, 0xda, 0xdf, 0xec,
0x6f, 0xab, 0xd3, 0x3b, 0xdf, 0x90, 0x8a, 0x7a, 0x86, 0xf5, 0xe1, 0x2f, 0xf0, 0xd6, 0x83, 0x20,
0xea, 0x40, 0xfb, 0xd4, 0x39, 0x39, 0x1a, 0xfc, 0xe4, 0x1f, 0x0d, 0x06, 0xce, 0xf0, 0xd2, 0x3f,
0xf7, 0xfc, 0xa1, 0x7b, 0xd6, 0x7a, 0x03, 0x01, 0xd4, 0x35, 0xd4, 0x2a, 0xa1, 0x37, 0xa1, 0xe9,
0x39, 0x3f, 0x8e, 0x9c, 0x8b, 0x4b, 0x15, 0x2c, 0xcb, 0xa0, 0xe7, 0x7c, 0xe7, 0x0c, 0x2e, 0x5b,
0x15, 0xb4, 0x06, 0xd5, 0x17, 0xde, 0xf9, 0xb0, 0x55, 0xed, 0xff, 0x5d, 0x83, 0xba, 0x7b, 0x2e,
0xa7, 0x06, 0xfa, 0x12, 0xd6, 0x07, 0x0c, 0x07, 0x02, 0xeb, 0x69, 0x8c, 0x96, 0x8d, 0x67, 0x6b,
0xdb, 0xd6, 0x37, 0x85, 0x5d, 0xdc, 0x14, 0xb6, 0x23, 0x6f, 0x0a, 0x99, 0xac, 0xc7, 0xc0, 0xff,
0x49, 0xfe, 0x0c, 0x1a, 0xd3, 0x0b, 0x06, 0x6d, 0x15, 0x13, 0x6d, 0xe1, 0xc2, 0xb1, 0x96, 0x15,
0x44, 0x0e, 0xc0, 0x29, 0xe1, 0x45, 0xa6, 0x35, 0xa5, 0xcc, 0xc0, 0x22, 0x7d, 0x77, 0x69, 0xcc,
0x6c, 0x9c, 0x63, 0xd8, 0x58, 0xb8, 0xae, 0xd0, 0x8e, 0xd2, 0xb0, 0xec, 0x0a, 0x5b, 0xd9, 0xc3,
0x57, 0xb0, 0xa1, 0xdd, 0x33, 0xb3, 0x0b, 0x2d, 0x1d, 0xfd, 0x2b, 0xd3, 0x5d, 0xd8, 0x5c, 0x1c,
0xe2, 0xc8, 0x5a, 0x3a, 0xd9, 0x8b, 0x6e, 0x56, 0x4f, 0x7d, 0x74, 0x0a, 0xe8, 0xe1, 0x44, 0x46,
0xef, 0xce, 0xb5, 0xb4, 0x64, 0x54, 0xaf, 0x14, 0xf6, 0x2b, 0xec, 0xac, 0x9c, 0x79, 0xe8, 0xa0,
0xd0, 0xf1, 0xda, 0xa9, 0x6c, 0xbd, 0xff, 0x18, 0xcd, 0x28, 0x8f, 0xa1, 0xb3, 0xea, 0x90, 0xa3,
0xf7, 0x54, 0x8d, 0x47, 0x86, 0xa1, 0x75, 0xf0, 0x08, 0x4b, 0xbf, 0xe8, 0xf8, 0xd9, 0xcf, 0x7b,
0x31, 0x11, 0xd7, 0xf9, 0x95, 0x1d, 0xd2, 0x49, 0xcf, 0x7c, 0x27, 0xfd, 0xf3, 0x13, 0xd2, 0xa4,
0xc7, 0xb2, 0xf0, 0xaa, 0xae, 0x56, 0x9f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa8, 0xf3, 0x56,
0x26, 0x5a, 0x09, 0x00, 0x00,
}

View File

@@ -95,11 +95,10 @@ var file_rpc_keepalive_proto_rawDesc = []byte{
0x72, 0x70, 0x63, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x50, 0x69, 0x6e,
0x67, 0x1a, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76,
0x65, 0x50, 0x69, 0x6e, 0x67, 0x22, 0x16, 0xb2, 0x89, 0x01, 0x12, 0x08, 0x01, 0x10, 0x01, 0x1a,
0x0a, 0x12, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x28, 0x01, 0x42, 0x2c, 0x5a,
0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
0x0a, 0x12, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x28, 0x01, 0x42, 0x21, 0x5a,
0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x70, 0x63,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -115,7 +115,7 @@ func (s *keepaliveServer[NodeIDTopicType]) Kill() {
}
var psrpcFileDescriptor4 = []byte{
// 185 bytes of a gzipped FileDescriptorProto
// 178 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2e, 0x2a, 0x48, 0xd6,
0xcf, 0x4e, 0x4d, 0x2d, 0x48, 0xcc, 0xc9, 0x2c, 0x4b, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
0x62, 0x2e, 0x2a, 0x48, 0x96, 0xe2, 0xcd, 0x2f, 0x28, 0xc9, 0xcc, 0xcf, 0x2b, 0x86, 0x88, 0x29,
@@ -124,8 +124,8 @@ var psrpcFileDescriptor4 = []byte{
0x8c, 0x42, 0xb9, 0x38, 0xe1, 0xca, 0x85, 0x3c, 0xb8, 0x58, 0xc0, 0x5a, 0x84, 0xf4, 0x8a, 0x0a,
0x92, 0xf5, 0x50, 0x8c, 0x91, 0xc2, 0x22, 0xa6, 0x24, 0xb1, 0xa9, 0x93, 0x51, 0x84, 0x83, 0x51,
0x80, 0x51, 0x8a, 0x4b, 0x88, 0x2d, 0x2f, 0x3f, 0x25, 0xd5, 0xd3, 0x45, 0x82, 0xd1, 0x81, 0x49,
0x83, 0xd1, 0x49, 0x27, 0x4a, 0x2b, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57,
0x1f, 0xa4, 0x21, 0x3b, 0xb3, 0x04, 0x4e, 0x17, 0x64, 0xa7, 0xeb, 0x17, 0xa7, 0x16, 0x95, 0x65,
0x26, 0xa7, 0xea, 0x17, 0x15, 0x24, 0x27, 0xb1, 0x81, 0x9d, 0x6e, 0x0c, 0x08, 0x00, 0x00, 0xff,
0xff, 0x94, 0x0b, 0x56, 0x29, 0xe5, 0x00, 0x00, 0x00,
0x83, 0xd1, 0x49, 0x31, 0x4a, 0x3e, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57,
0x1f, 0xa4, 0x21, 0x3b, 0xb3, 0x44, 0x1f, 0xec, 0xc2, 0xe4, 0xfc, 0x1c, 0xfd, 0xa2, 0x82, 0xe4,
0x24, 0x36, 0x30, 0xcf, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x1d, 0x8f, 0xd1, 0xda, 0x00,
0x00, 0x00,
}

View File

@@ -15,9 +15,13 @@
package rpc
import (
"sort"
sync "sync"
"time"
"github.com/prometheus/client_golang/prometheus"
"go.uber.org/atomic"
"golang.org/x/exp/maps"
"github.com/livekit/psrpc"
"github.com/livekit/psrpc/pkg/middleware"
@@ -27,56 +31,122 @@ const (
livekitNamespace = "livekit"
)
type psrpcMetrics struct {
requestTime prometheus.ObserverVec
streamSendTime prometheus.ObserverVec
streamReceiveTotal *prometheus.CounterVec
streamCurrent *prometheus.GaugeVec
errorTotal *prometheus.CounterVec
}
var (
psrpcRequestTime *prometheus.HistogramVec
psrpcStreamSendTime *prometheus.HistogramVec
psrpcStreamReceiveTotal *prometheus.CounterVec
psrpcStreamCurrent *prometheus.GaugeVec
psrpcErrorTotal *prometheus.CounterVec
metricsBase struct {
mu sync.RWMutex
initialized bool
curryLabels prometheus.Labels
psrpcMetrics
}
metrics atomic.Pointer[psrpcMetrics]
)
func InitPSRPCStats(constLabels prometheus.Labels) {
labels := []string{"role", "kind", "service", "method"}
streamLabels := []string{"role", "service", "method"}
type psrpcMetricsOptions struct {
curryLabels prometheus.Labels
}
psrpcRequestTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
type PSRPCMetricsOption func(*psrpcMetricsOptions)
func WithCurryLabels(labels prometheus.Labels) PSRPCMetricsOption {
return func(o *psrpcMetricsOptions) {
maps.Copy(o.curryLabels, labels)
}
}
func InitPSRPCStats(constLabels prometheus.Labels, opts ...PSRPCMetricsOption) {
metricsBase.mu.Lock()
if metricsBase.initialized {
metricsBase.mu.Unlock()
return
}
metricsBase.initialized = true
o := psrpcMetricsOptions{
curryLabels: prometheus.Labels{},
}
for _, opt := range opts {
opt(&o)
}
metricsBase.curryLabels = o.curryLabels
curryLabelNames := maps.Keys(o.curryLabels)
sort.Strings(curryLabelNames)
labels := append(curryLabelNames, "role", "kind", "service", "method")
streamLabels := append(curryLabelNames, "role", "service", "method")
metricsBase.requestTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: livekitNamespace,
Subsystem: "psrpc",
Name: "request_time_ms",
ConstLabels: constLabels,
Buckets: []float64{10, 50, 100, 300, 500, 1000, 1500, 2000, 5000, 10000},
}, labels)
psrpcStreamSendTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
metricsBase.streamSendTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: livekitNamespace,
Subsystem: "psrpc",
Name: "stream_send_time_ms",
ConstLabels: constLabels,
Buckets: []float64{10, 50, 100, 300, 500, 1000, 1500, 2000, 5000, 10000},
}, streamLabels)
psrpcStreamReceiveTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
metricsBase.streamReceiveTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
Namespace: livekitNamespace,
Subsystem: "psrpc",
Name: "stream_receive_total",
ConstLabels: constLabels,
}, streamLabels)
psrpcStreamCurrent = prometheus.NewGaugeVec(prometheus.GaugeOpts{
metricsBase.streamCurrent = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: livekitNamespace,
Subsystem: "psrpc",
Name: "stream_count",
ConstLabels: constLabels,
}, streamLabels)
psrpcErrorTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
metricsBase.errorTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
Namespace: livekitNamespace,
Subsystem: "psrpc",
Name: "error_total",
ConstLabels: constLabels,
}, labels)
prometheus.MustRegister(psrpcRequestTime)
prometheus.MustRegister(psrpcStreamSendTime)
prometheus.MustRegister(psrpcStreamReceiveTotal)
prometheus.MustRegister(psrpcStreamCurrent)
prometheus.MustRegister(psrpcErrorTotal)
metricsBase.mu.Unlock()
prometheus.MustRegister(metricsBase.requestTime)
prometheus.MustRegister(metricsBase.streamSendTime)
prometheus.MustRegister(metricsBase.streamReceiveTotal)
prometheus.MustRegister(metricsBase.streamCurrent)
prometheus.MustRegister(metricsBase.errorTotal)
CurryMetricLabels(o.curryLabels)
}
func CurryMetricLabels(labels prometheus.Labels) {
metricsBase.mu.Lock()
defer metricsBase.mu.Unlock()
if !metricsBase.initialized {
return
}
for k := range metricsBase.curryLabels {
if v, ok := labels[k]; ok {
metricsBase.curryLabels[k] = v
}
}
metrics.Store(&psrpcMetrics{
requestTime: metricsBase.requestTime.MustCurryWith(metricsBase.curryLabels),
streamSendTime: metricsBase.streamSendTime.MustCurryWith(metricsBase.curryLabels),
streamReceiveTotal: metricsBase.streamReceiveTotal.MustCurryWith(metricsBase.curryLabels),
streamCurrent: metricsBase.streamCurrent.MustCurryWith(metricsBase.curryLabels),
errorTotal: metricsBase.errorTotal.MustCurryWith(metricsBase.curryLabels),
})
}
var _ middleware.MetricsObserver = PSRPCMetricsObserver{}
@@ -85,46 +155,46 @@ type PSRPCMetricsObserver struct{}
func (o PSRPCMetricsObserver) OnUnaryRequest(role middleware.MetricRole, info psrpc.RPCInfo, duration time.Duration, err error) {
if err != nil {
psrpcErrorTotal.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Inc()
metrics.Load().errorTotal.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Inc()
} else if role == middleware.ClientRole {
psrpcRequestTime.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
metrics.Load().requestTime.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
} else {
psrpcRequestTime.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
metrics.Load().requestTime.WithLabelValues(role.String(), "rpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
}
}
func (o PSRPCMetricsObserver) OnMultiRequest(role middleware.MetricRole, info psrpc.RPCInfo, duration time.Duration, responseCount int, errorCount int) {
if responseCount == 0 {
psrpcErrorTotal.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Inc()
metrics.Load().errorTotal.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Inc()
} else if role == middleware.ClientRole {
psrpcRequestTime.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
metrics.Load().requestTime.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
} else {
psrpcRequestTime.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
metrics.Load().requestTime.WithLabelValues(role.String(), "multirpc", info.Service, info.Method).Observe(float64(duration.Milliseconds()))
}
}
func (o PSRPCMetricsObserver) OnStreamSend(role middleware.MetricRole, info psrpc.RPCInfo, duration time.Duration, err error) {
if err != nil {
psrpcErrorTotal.WithLabelValues(role.String(), "stream", info.Service, info.Method).Inc()
metrics.Load().errorTotal.WithLabelValues(role.String(), "stream", info.Service, info.Method).Inc()
} else {
psrpcStreamSendTime.WithLabelValues(role.String(), info.Service, info.Method).Observe(float64(duration.Milliseconds()))
metrics.Load().streamSendTime.WithLabelValues(role.String(), info.Service, info.Method).Observe(float64(duration.Milliseconds()))
}
}
func (o PSRPCMetricsObserver) OnStreamRecv(role middleware.MetricRole, info psrpc.RPCInfo, err error) {
if err != nil {
psrpcErrorTotal.WithLabelValues(role.String(), "stream", info.Service, info.Method).Inc()
metrics.Load().errorTotal.WithLabelValues(role.String(), "stream", info.Service, info.Method).Inc()
} else {
psrpcStreamReceiveTotal.WithLabelValues(role.String(), info.Service, info.Method).Inc()
metrics.Load().streamReceiveTotal.WithLabelValues(role.String(), info.Service, info.Method).Inc()
}
}
func (o PSRPCMetricsObserver) OnStreamOpen(role middleware.MetricRole, info psrpc.RPCInfo) {
psrpcStreamCurrent.WithLabelValues(role.String(), info.Service, info.Method).Inc()
metrics.Load().streamCurrent.WithLabelValues(role.String(), info.Service, info.Method).Inc()
}
func (o PSRPCMetricsObserver) OnStreamClose(role middleware.MetricRole, info psrpc.RPCInfo) {
psrpcStreamCurrent.WithLabelValues(role.String(), info.Service, info.Method).Dec()
metrics.Load().streamCurrent.WithLabelValues(role.String(), info.Service, info.Method).Dec()
}
type UnimplementedMetricsObserver struct{}

View File

@@ -76,10 +76,9 @@ var file_rpc_participant_proto_rawDesc = []byte{
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0xb2, 0x89,
0x01, 0x20, 0x10, 0x01, 0x1a, 0x1c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
0x61, 0x6e, 0x74, 0x12, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x18, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x18, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_rpc_participant_proto_goTypes = []interface{}{

View File

@@ -202,24 +202,24 @@ func (s *participantServer[ParticipantTopicType]) Kill() {
}
var psrpcFileDescriptor5 = []byte{
// 299 bytes of a gzipped FileDescriptorProto
// 293 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcf, 0x4a, 0xc3, 0x40,
0x10, 0xc6, 0x09, 0x8a, 0x87, 0x2d, 0x82, 0x5d, 0x15, 0x4a, 0x50, 0xa9, 0xb5, 0x27, 0x91, 0x04,
0xf4, 0x0d, 0xbc, 0x79, 0x10, 0x4a, 0xd4, 0x8b, 0x17, 0x49, 0x36, 0x63, 0xbb, 0xe4, 0xcf, 0x8c,
0xbb, 0x93, 0x40, 0x4f, 0xde, 0x04, 0x7d, 0x1c, 0x9f, 0x50, 0xda, 0x34, 0x69, 0x5a, 0x51, 0xda,
0x53, 0xc8, 0xef, 0x9b, 0xf9, 0xbe, 0x9d, 0xd9, 0x15, 0xc7, 0x86, 0x94, 0x4f, 0xa1, 0x61, 0xad,
0x34, 0x85, 0x39, 0x7b, 0x64, 0x90, 0x51, 0xee, 0x18, 0x52, 0xee, 0x3e, 0x12, 0x6b, 0xcc, 0x6d,
0xc5, 0xdc, 0xa3, 0x54, 0x97, 0x90, 0x68, 0x7e, 0xc9, 0x30, 0x86, 0xb4, 0xa6, 0xb2, 0xa6, 0x06,
0x31, 0xab, 0xd8, 0xf5, 0xd7, 0xae, 0xe8, 0x8c, 0x96, 0x9e, 0xf2, 0x5d, 0x74, 0x03, 0xc8, 0xb0,
0x84, 0x36, 0xec, 0x7b, 0x8b, 0x4e, 0x2f, 0x40, 0xcc, 0x5a, 0xca, 0x5d, 0x0c, 0x39, 0x6b, 0x9e,
0xba, 0x83, 0x65, 0xc5, 0x7a, 0x77, 0x00, 0x96, 0x30, 0xb7, 0x30, 0x18, 0x7e, 0x7f, 0x3a, 0xfd,
0x03, 0xc7, 0x3d, 0x11, 0x9d, 0xd6, 0x14, 0xb2, 0xfd, 0xd3, 0x73, 0xe4, 0x54, 0xc8, 0xfb, 0x82,
0x61, 0x54, 0x44, 0xa9, 0xb6, 0x13, 0x88, 0x1f, 0x4d, 0xa8, 0x12, 0x79, 0xda, 0xf8, 0xcf, 0xc4,
0xd9, 0x29, 0xe6, 0x3c, 0x80, 0xb7, 0x02, 0x2c, 0xbb, 0x67, 0x7f, 0xc9, 0x5b, 0x45, 0x97, 0xa2,
0xfb, 0x44, 0x71, 0xc8, 0x2b, 0xb3, 0x9f, 0x37, 0xd6, 0xbf, 0xb4, 0x3a, 0xbd, 0xd7, 0x94, 0xb4,
0x57, 0x93, 0xbf, 0xe2, 0x86, 0xb9, 0x1f, 0x8e, 0x38, 0xac, 0xcc, 0x1f, 0x8a, 0xc8, 0x2a, 0xa3,
0xab, 0xbb, 0x94, 0x17, 0x6b, 0xd1, 0x2b, 0x6a, 0x1d, 0x3e, 0xfc, 0xbf, 0x68, 0x9b, 0x05, 0xdc,
0x5e, 0x3d, 0x5f, 0x8e, 0x35, 0x4f, 0x8a, 0xc8, 0x53, 0x98, 0xf9, 0x0b, 0xdf, 0xe6, 0x4b, 0xc9,
0xd8, 0xb7, 0x60, 0x4a, 0xad, 0xc0, 0x37, 0xa4, 0xa2, 0xbd, 0xf9, 0x0b, 0xba, 0xf9, 0x09, 0x00,
0x00, 0xff, 0xff, 0x0d, 0x71, 0xfb, 0x47, 0x98, 0x02, 0x00, 0x00,
0x10, 0xc6, 0x09, 0x8a, 0x87, 0x2d, 0x82, 0x5d, 0x15, 0x4a, 0xf0, 0x4f, 0x5b, 0x7b, 0x4e, 0x40,
0xdf, 0xc0, 0x9b, 0x07, 0xa1, 0x44, 0xbd, 0x78, 0x91, 0x64, 0x33, 0xda, 0xa5, 0xc9, 0xce, 0xba,
0x3b, 0x5b, 0xe8, 0xc9, 0x9b, 0xa0, 0x8f, 0xe3, 0x13, 0x4a, 0x93, 0x26, 0xdd, 0x56, 0x14, 0x7b,
0x9c, 0xdf, 0x37, 0xf3, 0x7d, 0x99, 0xc9, 0xb2, 0x63, 0xa3, 0x45, 0xac, 0x53, 0x43, 0x52, 0x48,
0x9d, 0x2a, 0x8a, 0xb4, 0x41, 0x42, 0xbe, 0x63, 0xb4, 0x08, 0xf7, 0x51, 0x93, 0x44, 0x65, 0x6b,
0x16, 0x1e, 0x15, 0x72, 0x06, 0x53, 0x49, 0x4f, 0x25, 0xe6, 0x50, 0x34, 0x94, 0x37, 0xd4, 0x20,
0x96, 0x35, 0xbb, 0xfc, 0xdc, 0x65, 0x9d, 0xf1, 0xca, 0x93, 0xbf, 0xb1, 0x6e, 0x02, 0x25, 0xce,
0xc0, 0x87, 0xfd, 0x68, 0x39, 0x19, 0x25, 0x88, 0xa5, 0xa7, 0xdc, 0xe4, 0xa0, 0x48, 0xd2, 0x3c,
0x1c, 0xae, 0x3a, 0x36, 0xa7, 0x13, 0xb0, 0x1a, 0x95, 0x85, 0xe1, 0xe8, 0xeb, 0x23, 0xe8, 0x1f,
0x04, 0xe1, 0x09, 0xeb, 0x78, 0x5b, 0x70, 0xbf, 0xe8, 0x05, 0x7c, 0xce, 0xf8, 0xad, 0x23, 0x18,
0xbb, 0xac, 0x90, 0x76, 0x02, 0xf9, 0xbd, 0x49, 0xc5, 0x94, 0x9f, 0xb6, 0xfe, 0x0b, 0x71, 0xf1,
0x15, 0x15, 0x4f, 0xe0, 0xd5, 0x81, 0xa5, 0xf0, 0xec, 0x37, 0x79, 0xab, 0xe8, 0x19, 0xeb, 0x3e,
0xe8, 0x3c, 0xa5, 0xb5, 0xdd, 0x07, 0xad, 0xf5, 0x0f, 0xad, 0x49, 0xef, 0xb5, 0x2d, 0xfe, 0x69,
0xd4, 0x33, 0xfe, 0x33, 0xf7, 0x3d, 0x60, 0x87, 0xb5, 0xf9, 0x9d, 0xcb, 0xac, 0x30, 0xb2, 0xfe,
0x97, 0xfc, 0x62, 0x23, 0x7a, 0x4d, 0x6d, 0xc2, 0x47, 0x7f, 0x37, 0x6d, 0x73, 0x80, 0xeb, 0xc1,
0xe3, 0xf9, 0x8b, 0xa4, 0x89, 0xcb, 0x22, 0x81, 0x65, 0xbc, 0xf4, 0x8d, 0xab, 0x87, 0x22, 0xb0,
0x88, 0x8d, 0x16, 0xd9, 0x5e, 0x55, 0x5d, 0x7d, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xd9, 0xcf,
0x9a, 0x8d, 0x02, 0x00, 0x00,
}

View File

@@ -61,10 +61,9 @@ var file_rpc_room_proto_rawDesc = []byte{
0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65,
0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x22, 0x16, 0xb2, 0x89, 0x01, 0x12, 0x10, 0x01,
0x1a, 0x0e, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x01,
0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70,
0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c,
0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_rpc_room_proto_goTypes = []interface{}{

View File

@@ -181,7 +181,7 @@ func (s *roomServer[RoomTopicType]) Kill() {
}
var psrpcFileDescriptor6 = []byte{
// 237 bytes of a gzipped FileDescriptorProto
// 230 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x2a, 0x48, 0xd6,
0x2f, 0xca, 0xcf, 0xcf, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2e, 0x2a, 0x48, 0x96,
0xe2, 0xcd, 0x2f, 0x28, 0xc9, 0xcc, 0xcf, 0x2b, 0x86, 0x88, 0x49, 0x89, 0xe4, 0x64, 0x96, 0xa5,
@@ -193,8 +193,8 @@ var psrpcFileDescriptor6 = []byte{
0x50, 0x38, 0x17, 0x47, 0x70, 0x6a, 0x5e, 0x8a, 0x4b, 0x62, 0x49, 0xa2, 0x90, 0x04, 0xdc, 0x00,
0x98, 0x10, 0xcc, 0x68, 0x49, 0x2c, 0x32, 0x04, 0x0c, 0x8e, 0xe7, 0x12, 0x0a, 0x2d, 0x48, 0x49,
0x84, 0x38, 0xc3, 0x37, 0xb5, 0x24, 0x31, 0x05, 0x64, 0x85, 0x12, 0xdc, 0x20, 0x4c, 0x49, 0x98,
0x65, 0xbc, 0x70, 0x35, 0x20, 0x59, 0x5c, 0x16, 0x38, 0xe9, 0x44, 0x69, 0xa5, 0x67, 0x96, 0x64,
0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x43, 0xb5, 0xc0, 0xe9, 0x82, 0xec, 0x74, 0xfd, 0xe2,
0xd4, 0xa2, 0xb2, 0xcc, 0xe4, 0x54, 0xfd, 0xa2, 0x82, 0xe4, 0x24, 0x36, 0x70, 0xb0, 0x1a, 0x03,
0x02, 0x00, 0x00, 0xff, 0xff, 0x53, 0xa6, 0x88, 0x04, 0xa6, 0x01, 0x00, 0x00,
0x65, 0xbc, 0x70, 0x35, 0x20, 0x59, 0x5c, 0x16, 0x38, 0x29, 0x46, 0xc9, 0xa7, 0x67, 0x96, 0x64,
0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x43, 0xb5, 0xe8, 0x83, 0x43, 0x2f, 0x39, 0x3f, 0x47,
0xbf, 0xa8, 0x20, 0x39, 0x89, 0x0d, 0xcc, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xa6, 0x87,
0xc0, 0x3a, 0x9b, 0x01, 0x00, 0x00,
}

View File

@@ -202,11 +202,10 @@ var file_rpc_signal_proto_rawDesc = []byte{
0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52,
0x65, 0x6c, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x17, 0xb2, 0x89, 0x01, 0x13, 0x10, 0x01, 0x1a, 0x0d, 0x12, 0x07, 0x6e, 0x6f,
0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x20, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67,
0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x20, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
0x74, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -121,25 +121,25 @@ func (s *signalServer[NodeIdTopicType]) Kill() {
}
var psrpcFileDescriptor7 = []byte{
// 313 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0x02, 0x31,
0x10, 0xc6, 0x53, 0x17, 0x10, 0x8b, 0x24, 0x58, 0x14, 0x9a, 0x3d, 0x6d, 0x38, 0x6d, 0x8c, 0xe9,
0x26, 0x6b, 0xbc, 0x78, 0xf4, 0x11, 0xca, 0x49, 0x2f, 0x04, 0xca, 0x04, 0x1b, 0xd6, 0xb6, 0x74,
0x0a, 0x89, 0x8f, 0xe0, 0xbb, 0x78, 0xf2, 0x09, 0x0d, 0x94, 0x3f, 0x6b, 0xf0, 0xb4, 0x33, 0xf3,
0x7d, 0xfb, 0xfd, 0x26, 0x53, 0xda, 0xf3, 0x4e, 0x15, 0xa8, 0x17, 0x66, 0x5a, 0x09, 0xe7, 0x6d,
0xb0, 0x2c, 0xf1, 0x4e, 0xa5, 0x5d, 0xeb, 0x82, 0xb6, 0x06, 0xe3, 0x2c, 0x1d, 0x54, 0x7a, 0x03,
0x4b, 0x1d, 0x26, 0xda, 0x04, 0xf0, 0x47, 0x6f, 0x7a, 0x73, 0x98, 0xfb, 0xa0, 0xe2, 0x68, 0xf4,
0x4d, 0x28, 0x93, 0x50, 0x4d, 0x3f, 0xc7, 0xbb, 0x50, 0x09, 0xab, 0x35, 0x60, 0x60, 0xcf, 0xb4,
0x8b, 0x61, 0xea, 0xc3, 0x04, 0x01, 0x51, 0x5b, 0xc3, 0x49, 0x46, 0xf2, 0x4e, 0x79, 0x27, 0xf6,
0x09, 0x62, 0xbc, 0x55, 0xc7, 0x51, 0x94, 0xd7, 0x58, 0xeb, 0x58, 0x49, 0xdb, 0x3e, 0xc6, 0x20,
0x4f, 0xb2, 0x24, 0xef, 0x94, 0x83, 0xd3, 0x6f, 0x75, 0x8a, 0x3c, 0xfa, 0x58, 0x8f, 0x26, 0x08,
0x2b, 0xde, 0xc8, 0x48, 0xde, 0x90, 0xdb, 0x92, 0xdd, 0xd2, 0xa6, 0xaa, 0x2c, 0x02, 0x6f, 0x66,
0x24, 0x6f, 0xcb, 0xd8, 0x8c, 0x02, 0xed, 0xff, 0xd9, 0x16, 0x9d, 0x35, 0x08, 0xec, 0x89, 0x5e,
0xf9, 0x7d, 0x8d, 0xfc, 0x62, 0xc7, 0x1c, 0x9e, 0x31, 0xa3, 0x2e, 0x4f, 0xce, 0x03, 0x35, 0xf9,
0x87, 0xda, 0xa8, 0x51, 0x4b, 0x45, 0x5b, 0x31, 0x84, 0xbd, 0xd2, 0x4e, 0x8d, 0xcf, 0x86, 0xc2,
0x3b, 0x25, 0xce, 0xef, 0x97, 0xf2, 0x73, 0x21, 0x42, 0x47, 0xc3, 0x9f, 0x2f, 0xd2, 0xef, 0x91,
0xb4, 0xcb, 0x2e, 0x8d, 0x9d, 0xc3, 0x44, 0xcf, 0xb7, 0xb7, 0xcd, 0xc8, 0xcb, 0xc3, 0xdb, 0xfd,
0x42, 0x87, 0xf7, 0xf5, 0x4c, 0x28, 0xfb, 0x51, 0xec, 0x97, 0x3f, 0x7e, 0xdd, 0x72, 0x51, 0x20,
0xf8, 0x8d, 0x56, 0x50, 0x78, 0xa7, 0x66, 0xad, 0xdd, 0xf3, 0x3d, 0xfe, 0x06, 0x00, 0x00, 0xff,
0xff, 0x44, 0x2f, 0x12, 0x62, 0x11, 0x02, 0x00, 0x00,
// 307 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xb1, 0x4e, 0xc3, 0x30,
0x10, 0x86, 0x65, 0xd2, 0x96, 0xe2, 0x52, 0xa9, 0xb8, 0xd0, 0x5a, 0x59, 0x08, 0x9d, 0x32, 0x39,
0x52, 0x10, 0x0b, 0x23, 0x8f, 0xe0, 0x4e, 0xb0, 0x54, 0xa9, 0x6b, 0x15, 0x8b, 0x60, 0xbb, 0x3e,
0x17, 0x89, 0x47, 0xe0, 0x5d, 0x98, 0x78, 0x42, 0x94, 0x38, 0x6d, 0x83, 0xc2, 0x76, 0x77, 0xff,
0xef, 0xff, 0x3b, 0x9d, 0xf1, 0xc4, 0x59, 0x91, 0x81, 0xda, 0xea, 0xa2, 0x64, 0xd6, 0x19, 0x6f,
0x48, 0xe4, 0xac, 0x88, 0xc7, 0xc6, 0x7a, 0x65, 0x34, 0x84, 0x59, 0x3c, 0x2b, 0xd5, 0x87, 0x7c,
0x53, 0x7e, 0xa5, 0xb4, 0x97, 0xee, 0xe8, 0x8d, 0xaf, 0x0e, 0x73, 0xe7, 0x45, 0x18, 0x2d, 0xbe,
0x11, 0x26, 0x5c, 0x96, 0xc5, 0xe7, 0xb2, 0x0e, 0xe5, 0x72, 0xb7, 0x97, 0xe0, 0xc9, 0x23, 0x1e,
0x83, 0x2f, 0x9c, 0x5f, 0x81, 0x04, 0x50, 0x46, 0x53, 0x94, 0xa0, 0x74, 0x94, 0xdf, 0xb0, 0x26,
0x81, 0x2d, 0x2b, 0x75, 0x19, 0x44, 0x7e, 0x09, 0xad, 0x8e, 0xe4, 0x78, 0xe8, 0x42, 0x0c, 0xd0,
0x28, 0x89, 0xd2, 0x51, 0x3e, 0x3b, 0x3d, 0x6b, 0x53, 0xf8, 0xd1, 0x47, 0x26, 0x38, 0x02, 0xb9,
0xa3, 0xbd, 0x04, 0xa5, 0x3d, 0x5e, 0x95, 0xe4, 0x1a, 0xf7, 0x45, 0x69, 0x40, 0xd2, 0x7e, 0x82,
0xd2, 0x21, 0x0f, 0xcd, 0xc2, 0xe3, 0xe9, 0x9f, 0x6d, 0xc1, 0x1a, 0x0d, 0x92, 0x3c, 0xe0, 0x0b,
0xd7, 0xd4, 0x40, 0xcf, 0x6a, 0xe6, 0xbc, 0xc3, 0x0c, 0x3a, 0x3f, 0x39, 0x0f, 0xd4, 0xe8, 0x1f,
0x6a, 0xaf, 0x45, 0xcd, 0x05, 0x1e, 0x84, 0x10, 0xf2, 0x8c, 0x47, 0x2d, 0x3e, 0x99, 0x33, 0x67,
0x05, 0xeb, 0xde, 0x2f, 0xa6, 0x5d, 0x21, 0x40, 0x17, 0xf3, 0x9f, 0x2f, 0x34, 0x9d, 0xa0, 0x78,
0x4c, 0xce, 0xb5, 0xd9, 0xc8, 0x95, 0xda, 0x54, 0xb7, 0x4d, 0xd0, 0xd3, 0xdd, 0xcb, 0xed, 0x56,
0xf9, 0xd7, 0xfd, 0x9a, 0x09, 0xf3, 0x9e, 0x35, 0xcb, 0x67, 0xf5, 0x2f, 0x09, 0x53, 0x66, 0xce,
0x8a, 0xf5, 0xa0, 0xee, 0xee, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x18, 0x2b, 0x54, 0xdb, 0x06,
0x02, 0x00, 0x00,
}

View File

@@ -57,6 +57,8 @@ type InternalCreateSIPParticipantRequest struct {
// Optionally send following DTMF digits (extension codes) when making a call.
// Character 'w' can be used to add a 0.5 sec delay.
Dtmf string `protobuf:"bytes,11,opt,name=dtmf,proto3" json:"dtmf,omitempty"`
// Optionally play ringtone in the room as an audible indicator for existing participants
PlayRingtone bool `protobuf:"varint,12,opt,name=play_ringtone,json=playRingtone,proto3" json:"play_ringtone,omitempty"`
}
func (x *InternalCreateSIPParticipantRequest) Reset() {
@@ -161,6 +163,13 @@ func (x *InternalCreateSIPParticipantRequest) GetDtmf() string {
return ""
}
func (x *InternalCreateSIPParticipantRequest) GetPlayRingtone() bool {
if x != nil {
return x.PlayRingtone
}
return false
}
type InternalCreateSIPParticipantResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -221,7 +230,7 @@ var File_rpc_sip_proto protoreflect.FileDescriptor
var file_rpc_sip_proto_rawDesc = []byte{
0x0a, 0x0d, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x03, 0x72, 0x70, 0x63, 0x1a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x02, 0x0a, 0x23, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x6f, 0x74, 0x6f, 0x22, 0xde, 0x02, 0x0a, 0x23, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64,
@@ -240,27 +249,29 @@ var file_rpc_sip_proto_rawDesc = []byte{
0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x77, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64,
0x74, 0x6d, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x22,
0x80, 0x01, 0x0a, 0x24, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12,
0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x32, 0x84, 0x01, 0x0a, 0x0b, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x12, 0x75, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50,
0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x72, 0x70, 0x63,
0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74,
0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x08, 0xb2, 0x89, 0x01, 0x04, 0x10, 0x01, 0x30, 0x01, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f,
0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x6d, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x12,
0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x69, 0x6e, 0x67,
0x74, 0x6f, 0x6e, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x24, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a,
0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x32, 0x84, 0x01, 0x0a, 0x0b, 0x53, 0x49, 0x50, 0x49,
0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x75, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12,
0x28, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x70, 0x63, 0x2e,
0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49,
0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xb2, 0x89, 0x01, 0x04, 0x10, 0x01, 0x30, 0x01, 0x42, 0x21,
0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76,
0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x70,
0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@@ -122,29 +122,30 @@ func (s *sIPInternalServer) Kill() {
}
var psrpcFileDescriptor8 = []byte{
// 374 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x6f, 0xda, 0x30,
0x18, 0xc6, 0x65, 0xfe, 0x04, 0x78, 0x11, 0xd3, 0xe4, 0xb1, 0xcd, 0x62, 0x97, 0x89, 0x6d, 0x12,
0x9b, 0xa6, 0xa4, 0x7f, 0xbe, 0x40, 0xd5, 0x9e, 0x72, 0xa9, 0x10, 0xb4, 0x97, 0x5e, 0xa2, 0xe0,
0xb8, 0xd4, 0x22, 0xb1, 0x5d, 0xdb, 0x21, 0xea, 0xad, 0xa7, 0x4a, 0xfd, 0x3a, 0xbd, 0xf5, 0xdb,
0x55, 0x71, 0x80, 0x16, 0xa9, 0x54, 0x9c, 0x92, 0xe7, 0xf9, 0xbd, 0xaf, 0xfd, 0xbc, 0xb6, 0xa1,
0xa7, 0x15, 0x0d, 0x0c, 0x57, 0xbe, 0xd2, 0xd2, 0x4a, 0x5c, 0xd7, 0x8a, 0x0e, 0x7a, 0x52, 0x59,
0x2e, 0x85, 0xa9, 0xbc, 0xe1, 0x73, 0x0d, 0x7e, 0x85, 0xc2, 0x32, 0x2d, 0xe2, 0xf4, 0x4c, 0xb3,
0xd8, 0xb2, 0x69, 0x38, 0x1e, 0xc7, 0xda, 0x72, 0xca, 0x55, 0x2c, 0xec, 0x84, 0xdd, 0xe6, 0xcc,
0x58, 0x4c, 0xa0, 0x15, 0x27, 0x89, 0x66, 0xc6, 0x90, 0xda, 0x4f, 0x34, 0xea, 0x4c, 0xd6, 0x12,
0x7f, 0x03, 0x4f, 0xe4, 0xd9, 0x8c, 0x69, 0x52, 0x77, 0x60, 0xa5, 0xf0, 0x77, 0x68, 0xd1, 0x38,
0x4d, 0x23, 0x2b, 0x49, 0xa3, 0x02, 0xa5, 0xbc, 0x90, 0x78, 0x00, 0xed, 0xdc, 0x94, 0x1b, 0x66,
0x8c, 0x34, 0x1d, 0xd9, 0xe8, 0x92, 0xa9, 0xd8, 0x98, 0x42, 0xea, 0x84, 0x78, 0x15, 0x5b, 0x6b,
0xfc, 0x03, 0x3a, 0x5a, 0xca, 0x2c, 0x72, 0x8d, 0xad, 0x0a, 0x96, 0xc6, 0x79, 0xd9, 0x78, 0x08,
0x7d, 0xf5, 0x9a, 0x3a, 0xe2, 0x09, 0x13, 0x96, 0xdb, 0x3b, 0xd2, 0x76, 0x75, 0x5f, 0xde, 0xb0,
0x70, 0x85, 0x70, 0x1f, 0x9a, 0x56, 0x2e, 0x98, 0x20, 0x1d, 0x57, 0x53, 0x09, 0xfc, 0x15, 0xbc,
0xc2, 0x44, 0xb9, 0x4e, 0x09, 0x54, 0x76, 0x61, 0x2e, 0x75, 0x8a, 0x31, 0x34, 0x12, 0x9b, 0x5d,
0x93, 0xae, 0x33, 0xdd, 0xff, 0xf0, 0x1e, 0xc1, 0xef, 0x8f, 0xcf, 0xce, 0x28, 0x29, 0x0c, 0xc3,
0x7f, 0xe0, 0xd3, 0x76, 0x38, 0x82, 0xdc, 0x32, 0xbd, 0xad, 0x58, 0x3b, 0x67, 0xa8, 0xed, 0x9c,
0xe1, 0xe8, 0x01, 0x41, 0x77, 0x1a, 0x8e, 0xd7, 0x29, 0x70, 0x01, 0xfd, 0xf7, 0x92, 0xe0, 0x91,
0xaf, 0x15, 0xf5, 0xf7, 0xb8, 0xe8, 0xc1, 0xdf, 0x3d, 0x2a, 0xab, 0xb1, 0x86, 0xf0, 0xf4, 0x88,
0xbc, 0xcf, 0xe8, 0x04, 0x1d, 0xa0, 0xd3, 0xff, 0x57, 0xff, 0xe6, 0xdc, 0xde, 0xe4, 0x33, 0x9f,
0xca, 0x2c, 0x48, 0xf9, 0x92, 0x2d, 0xb8, 0xdd, 0x7c, 0xd5, 0x62, 0x1e, 0x18, 0xa6, 0x97, 0x9c,
0xb2, 0x40, 0x2b, 0x3a, 0xf3, 0xdc, 0xe3, 0x3b, 0x7e, 0x09, 0x00, 0x00, 0xff, 0xff, 0x83, 0x4e,
0x8f, 0x5b, 0xa1, 0x02, 0x00, 0x00,
// 389 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xbf, 0xce, 0xd3, 0x30,
0x14, 0xc5, 0xe5, 0x7e, 0xdf, 0x97, 0xb6, 0xb7, 0x0d, 0x42, 0xa6, 0x80, 0x55, 0x06, 0x4a, 0x0b,
0x52, 0x59, 0x12, 0xfe, 0xbc, 0x00, 0x82, 0x29, 0x0b, 0xaa, 0x52, 0x58, 0x58, 0x22, 0xd7, 0x31,
0xc5, 0xaa, 0x63, 0x1b, 0xdb, 0x21, 0xea, 0xc6, 0x84, 0xc4, 0xeb, 0xf0, 0x40, 0x3c, 0x0b, 0x8a,
0xd3, 0x02, 0x95, 0x28, 0xea, 0x96, 0x73, 0x7e, 0xd7, 0xba, 0xe7, 0x44, 0x17, 0x62, 0x6b, 0x58,
0xea, 0x84, 0x49, 0x8c, 0xd5, 0x5e, 0xe3, 0x2b, 0x6b, 0xd8, 0x34, 0xd6, 0xc6, 0x0b, 0xad, 0x5c,
0xe7, 0xcd, 0x7f, 0xf6, 0x60, 0x91, 0x29, 0xcf, 0xad, 0xa2, 0xf2, 0x8d, 0xe5, 0xd4, 0xf3, 0x75,
0xb6, 0x5a, 0x51, 0xeb, 0x05, 0x13, 0x86, 0x2a, 0x9f, 0xf3, 0xcf, 0x35, 0x77, 0x1e, 0x13, 0xe8,
0xd3, 0xb2, 0xb4, 0xdc, 0x39, 0xd2, 0x9b, 0xa1, 0xe5, 0x30, 0x3f, 0x4a, 0x7c, 0x0f, 0x22, 0x55,
0x57, 0x1b, 0x6e, 0xc9, 0x55, 0x00, 0x07, 0x85, 0xef, 0x43, 0x9f, 0x51, 0x29, 0x0b, 0xaf, 0xc9,
0x75, 0x07, 0x5a, 0xf9, 0x4e, 0xe3, 0x29, 0x0c, 0x6a, 0xd7, 0x2e, 0xac, 0x38, 0xb9, 0x09, 0xe4,
0xb7, 0x6e, 0x99, 0xa1, 0xce, 0x35, 0xda, 0x96, 0x24, 0xea, 0xd8, 0x51, 0xe3, 0x07, 0x30, 0xb4,
0x5a, 0x57, 0x45, 0x78, 0xd8, 0xef, 0x60, 0x6b, 0xbc, 0x6d, 0x1f, 0x3e, 0x87, 0x89, 0xf9, 0x93,
0xba, 0x10, 0x25, 0x57, 0x5e, 0xf8, 0x3d, 0x19, 0x84, 0xb9, 0x3b, 0x7f, 0xb1, 0xec, 0x80, 0xf0,
0x04, 0x6e, 0xbc, 0xde, 0x71, 0x45, 0x86, 0x61, 0xa6, 0x13, 0xf8, 0x2e, 0x44, 0x8d, 0x2b, 0x6a,
0x2b, 0x09, 0x74, 0x76, 0xe3, 0xde, 0x5b, 0x89, 0x31, 0x5c, 0x97, 0xbe, 0xfa, 0x48, 0x46, 0xc1,
0x0c, 0xdf, 0x78, 0x01, 0xb1, 0x91, 0x74, 0x5f, 0x58, 0xa1, 0xb6, 0x5e, 0x2b, 0x4e, 0xc6, 0x33,
0xb4, 0x1c, 0xe4, 0xe3, 0xd6, 0xcc, 0x0f, 0xde, 0xfc, 0x2b, 0x82, 0xc7, 0xff, 0xff, 0xc1, 0xce,
0x68, 0xe5, 0x38, 0x7e, 0x02, 0xb7, 0x4e, 0x1b, 0x10, 0x14, 0x76, 0xc5, 0x27, 0xd9, 0xcf, 0x16,
0xed, 0x9d, 0x2d, 0xfa, 0xe2, 0x1b, 0x82, 0xd1, 0x3a, 0x5b, 0x1d, 0x53, 0xe0, 0x06, 0x26, 0xff,
0x4a, 0x82, 0x97, 0x89, 0x35, 0x2c, 0xb9, 0xe0, 0x1a, 0xa6, 0x4f, 0x2f, 0x98, 0xec, 0x6a, 0xcd,
0xe1, 0xc7, 0x77, 0x14, 0xdd, 0x46, 0xaf, 0xd0, 0x33, 0xf4, 0xfa, 0xd1, 0x87, 0x87, 0x5b, 0xe1,
0x3f, 0xd5, 0x9b, 0x84, 0xe9, 0x2a, 0x95, 0xe2, 0x0b, 0xdf, 0x09, 0x9f, 0x86, 0x43, 0x64, 0x5a,
0xa6, 0xd6, 0xb0, 0x4d, 0x14, 0xd4, 0xcb, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x20, 0xef, 0x65,
0xcf, 0xbb, 0x02, 0x00, 0x00,
}

View File

@@ -61,22 +61,22 @@ func NewClientParams(
}
}
func clientOptions(params ClientParams) []psrpc.ClientOption {
func (p *ClientParams) Options() []psrpc.ClientOption {
opts := make([]psrpc.ClientOption, 0, 4)
if params.BufferSize != 0 {
opts = append(opts, psrpc.WithClientChannelSize(params.BufferSize))
if p.BufferSize != 0 {
opts = append(opts, psrpc.WithClientChannelSize(p.BufferSize))
}
if params.Observer != nil {
opts = append(opts, middleware.WithClientMetrics(params.Observer))
if p.Observer != nil {
opts = append(opts, middleware.WithClientMetrics(p.Observer))
}
if params.Logger != nil {
opts = append(opts, WithClientLogger(params.Logger))
if p.Logger != nil {
opts = append(opts, WithClientLogger(p.Logger))
}
if params.MaxAttempts != 0 || params.Timeout != 0 || params.Backoff != 0 {
if p.MaxAttempts != 0 || p.Timeout != 0 || p.Backoff != 0 {
opts = append(opts, middleware.WithRPCRetries(middleware.RetryOptions{
MaxAttempts: params.MaxAttempts,
Timeout: params.Timeout,
Backoff: params.Backoff,
MaxAttempts: p.MaxAttempts,
Timeout: p.Timeout,
Backoff: p.Backoff,
}))
}
return opts
@@ -130,7 +130,7 @@ type TypedRoomClient = RoomClient[RoomTopic]
type TypedRoomServer = RoomServer[RoomTopic]
func NewTypedRoomClient(params ClientParams) (TypedRoomClient, error) {
return NewRoomClient[RoomTopic](params.Bus, clientOptions(params)...)
return NewRoomClient[RoomTopic](params.Bus, params.Options()...)
}
func NewTypedRoomServer(svc RoomServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (TypedRoomServer, error) {
@@ -142,7 +142,7 @@ type TypedParticipantClient = ParticipantClient[ParticipantTopic]
type TypedParticipantServer = ParticipantServer[ParticipantTopic]
func NewTypedParticipantClient(params ClientParams) (TypedParticipantClient, error) {
return NewParticipantClient[ParticipantTopic](params.Bus, clientOptions(params)...)
return NewParticipantClient[ParticipantTopic](params.Bus, params.Options()...)
}
func NewTypedParticipantServer(svc ParticipantServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (TypedParticipantServer, error) {
@@ -161,7 +161,7 @@ type keepalivePubSub struct {
}
func NewKeepalivePubSub(params ClientParams) (KeepalivePubSub, error) {
client, err := NewKeepaliveClient[livekit.NodeID](params.Bus, clientOptions(params)...)
client, err := NewKeepaliveClient[livekit.NodeID](params.Bus, params.Options()...)
if err != nil {
return nil, err
}

30
utils/clock.go Normal file
View File

@@ -0,0 +1,30 @@
package utils
import (
"time"
"github.com/benbjohnson/clock"
)
type Clock interface {
Now() time.Time
Sleep(time.Duration)
}
type SystemClock struct{}
var _ Clock = &SystemClock{}
func (SystemClock) Now() time.Time {
return time.Now()
}
func (SystemClock) Sleep(d time.Duration) {
time.Sleep(d)
}
type SimulatedClock struct {
clock.Mock
}
var _ Clock = &SimulatedClock{}

71
utils/hedge.go Normal file
View File

@@ -0,0 +1,71 @@
// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package utils
import (
"context"
"time"
"go.uber.org/multierr"
)
type HedgeParams[T any] struct {
Timeout time.Duration
RetryDelay time.Duration
MaxAttempts int
IsRecoverable func(err error) bool
Func func(context.Context) (T, error)
}
// race retries if the function takes to long to return
// |---------------- attempt 1 ----------------|
// | delay |--------- attempt 2 ---------|
func HedgeCall[T any](ctx context.Context, params HedgeParams[T]) (v T, err error) {
ctx, cancel := context.WithTimeout(ctx, params.Timeout)
defer cancel()
type result struct {
value T
err error
}
ch := make(chan result, params.MaxAttempts)
race := func() {
value, err := params.Func(ctx)
ch <- result{value, err}
}
var attempt int
delay := time.NewTimer(0)
defer delay.Stop()
for {
select {
case <-delay.C:
go race()
if attempt++; attempt < params.MaxAttempts {
delay.Reset(params.RetryDelay)
}
case res := <-ch:
if res.err == nil || params.IsRecoverable == nil || !params.IsRecoverable(res.err) {
return res.value, res.err
}
err = multierr.Append(err, res.err)
case <-ctx.Done():
err = multierr.Append(err, ctx.Err())
return
}
}
}

41
utils/hedge_test.go Normal file
View File

@@ -0,0 +1,41 @@
// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package utils
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
"go.uber.org/atomic"
)
func TestHedgeCall(t *testing.T) {
var attempts atomic.Uint32
res, err := HedgeCall(context.Background(), HedgeParams[uint32]{
Timeout: 200 * time.Millisecond,
RetryDelay: 50 * time.Millisecond,
MaxAttempts: 2,
Func: func(context.Context) (uint32, error) {
n := attempts.Add(1)
time.Sleep(75 * time.Millisecond)
return n, nil
},
})
require.NoError(t, err)
require.EqualValues(t, 1, res)
require.EqualValues(t, 2, attempts.Load())
}

View File

@@ -15,14 +15,19 @@
package utils
import (
"crypto/rand"
"crypto/sha1"
"encoding/binary"
"fmt"
"os"
"sync"
"time"
"github.com/jxskiss/base62"
"github.com/lithammer/shortuuid/v4"
"github.com/livekit/protocol/livekit"
"github.com/livekit/protocol/logger"
)
const GuidSize = 12
@@ -41,13 +46,17 @@ const (
WHIPResourcePrefix = "WH_"
RTMPResourcePrefix = "RT_"
URLResourcePrefix = "UR_"
AgentWorkerPrefix = "AW_"
AgentJobPrefix = "AJ_"
)
var defaultGuidGenerator = newGuidGenerator(4096, GuidSize+10)
func NewGuid(prefix string) string {
return prefix + shortuuid.New()[:GuidSize]
return defaultGuidGenerator.NewGuid(prefix)
}
// Creates a hashed ID from a unique string
// HashedID creates a hashed ID from a unique string
func HashedID(id string) string {
h := sha1.New()
h.Write([]byte(id))
@@ -64,17 +73,91 @@ func LocalNodeID() (string, error) {
return fmt.Sprintf("%s%s", NodePrefix, HashedID(hostname)[:8]), nil
}
var b62Index = newB62Index()
var b62Chars = []byte(shortuuid.DefaultAlphabet)
var b57Index = newB57Index()
var b57Chars = []byte(shortuuid.DefaultAlphabet)
func newB62Index() [256]byte {
func newB57Index() [256]byte {
var index [256]byte
for i := 0; i < len(b62Chars); i++ {
index[b62Chars[i]] = byte(i)
for i := 0; i < len(b57Chars); i++ {
index[b57Chars[i]] = byte(i)
}
return index
}
type guidGenerator struct {
pool sync.Pool
mu sync.Mutex
buf []byte
pos int
}
func newGuidGenerator(bufSize, scratchSize int) *guidGenerator {
return &guidGenerator{
pool: sync.Pool{
New: func() any {
b := make([]byte, scratchSize)
return &b
},
},
buf: make([]byte, bufSize),
pos: bufSize,
}
}
func (g *guidGenerator) refillBuf() {
for {
_, err := rand.Read(g.buf)
if err == nil {
return
}
logger.Errorw("unable to refill guid buffer", err)
time.Sleep(time.Millisecond)
}
}
func (g *guidGenerator) uint32() uint32 {
if g.pos == len(g.buf) {
g.refillBuf()
g.pos = 0
}
n := binary.BigEndian.Uint32(g.buf[g.pos:])
g.pos += 4
return n
}
func (g *guidGenerator) readIDChars(b []byte) {
g.mu.Lock()
defer g.mu.Unlock()
var n int
for {
r := g.uint32()
for i := 0; i < 5; i++ {
if int(r&0x3f) < len(b57Chars) {
b[n] = b57Chars[r&0x3f]
n++
if n == len(b) {
return
}
}
r >>= 6
}
}
}
func (g *guidGenerator) NewGuid(prefix string) string {
b := g.pool.Get().(*[]byte)
defer g.pool.Put(b)
*b = append((*b)[:0], make([]byte, len(prefix)+GuidSize)...)
copy(*b, prefix)
g.readIDChars((*b)[len(prefix):])
return string(*b)
}
func guidPrefix[T livekit.Guid]() string {
var id T
switch any(id).(type) {
@@ -95,9 +178,9 @@ func MarshalGuid[T livekit.Guid](id T) livekit.GuidBlock {
for i := 0; i < 3; i++ {
j := i * 3
k := i * 4
b[j] = b62Index[idb[k]]<<2 | b62Index[idb[k+1]]>>4
b[j+1] = b62Index[idb[k+1]]<<4 | b62Index[idb[k+2]]>>2
b[j+2] = b62Index[idb[k+2]]<<6 | b62Index[idb[k+3]]
b[j] = b57Index[idb[k]]<<2 | b57Index[idb[k+1]]>>4
b[j+1] = b57Index[idb[k+1]]<<4 | b57Index[idb[k+2]]>>2
b[j+2] = b57Index[idb[k+2]]<<6 | b57Index[idb[k+3]]
}
return b
}
@@ -110,10 +193,10 @@ func UnmarshalGuid[T livekit.Guid](b livekit.GuidBlock) T {
for i := 0; i < 3; i++ {
j := i * 3
k := i * 4
idb[k] = b62Chars[b[j]>>2]
idb[k+1] = b62Chars[(b[j]&3)<<4|b[j+1]>>4]
idb[k+2] = b62Chars[(b[j+1]&15)<<2|b[j+2]>>6]
idb[k+3] = b62Chars[b[j+2]&63]
idb[k] = b57Chars[b[j]>>2]
idb[k+1] = b57Chars[(b[j]&3)<<4|b[j+1]>>4]
idb[k+2] = b57Chars[(b[j+1]&15)<<2|b[j+2]>>6]
idb[k+3] = b57Chars[b[j+2]&63]
}
return T(id)
}

View File

@@ -30,3 +30,13 @@ func TestMarshalUnmarshalGuid(t *testing.T) {
require.EqualValues(t, id0, id1)
require.EqualValues(t, b0, b1)
}
func BenchmarkNewGuid(b *testing.B) {
b.Run("new", func(b *testing.B) {
var guid string
for i := 0; i < b.N; i++ {
guid = NewGuid(TrackPrefix)
}
_ = guid
})
}

52
utils/promise.go Normal file
View File

@@ -0,0 +1,52 @@
package utils
var closedPromiseChan = make(chan struct{})
func init() {
close(closedPromiseChan)
}
type Promise[T any] struct {
Result T
Err error
done chan struct{}
}
func NewPromise[T any]() *Promise[T] {
return &Promise[T]{
done: make(chan struct{}),
}
}
func GoPromise[T any](f func() (T, error)) *Promise[T] {
p := NewPromise[T]()
go func() { p.Resolve(f()) }()
return p
}
func NewResolvedPromise[T any](result T, err error) *Promise[T] {
return &Promise[T]{
Result: result,
Err: err,
done: closedPromiseChan,
}
}
func (p *Promise[T]) Resolve(result T, err error) {
p.Result = result
p.Err = err
close(p.done)
}
func (p *Promise[T]) Done() <-chan struct{} {
return p.done
}
func (p *Promise[T]) Resolved() bool {
select {
case <-p.done:
return true
default:
return false
}
}

114
utils/rate.go Normal file
View File

@@ -0,0 +1,114 @@
// Copyright (c) 2016,2020 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// SOURCE: https://github.com/uber-go/ratelimit/blob/main/limiter_mutexbased.go
// EDIT: slight modification to allow setting rate limit on the fly
// SCOPE: LeakyBucket
package utils
import (
"sync"
"time"
"go.uber.org/atomic"
)
type LeakyBucket struct {
mutex sync.Mutex
last time.Time
sleepFor time.Duration
cfg atomic.Pointer[leakyBucketConfig]
clock Clock
}
type leakyBucketConfig struct {
perRequest time.Duration
maxSlack time.Duration
}
// NewLeakyBucket initiates LeakyBucket with rateLimit, slack, and clock.
//
// rateLimit is defined as the number of request per second.
//
// slack is defined as the number of allowed requests before limiting.
// e.g. when slack=5, LeakyBucket will allow 5 requests to pass through Take
// without a sleep as long as these requests are under perRequest duration.
func NewLeakyBucket(rateLimit int, slack int, clock Clock) *LeakyBucket {
var lb LeakyBucket
lb.clock = clock
lb.Update(rateLimit, slack)
return &lb
}
// Update sets the underlying rate limit and slack.
// The setting may not be applied immediately.
//
// Update is THREAD SAFE and NON-BLOCKING.
func (lb *LeakyBucket) Update(rateLimit int, slack int) {
perRequest := time.Second / time.Duration(rateLimit)
maxSlack := -1 * time.Duration(slack) * perRequest
cfg := leakyBucketConfig{
perRequest: perRequest,
maxSlack: maxSlack,
}
lb.cfg.Store(&cfg)
}
// Take blocks to ensure that the time spent between multiple Take calls
// is on average time.Second/rate.
//
// Take is THREAD SAFE and BLOCKING.
func (lb *LeakyBucket) Take() time.Time {
lb.mutex.Lock()
defer lb.mutex.Unlock()
cfg := lb.cfg.Load()
now := lb.clock.Now()
// If this is our first request, then we allow it.
if lb.last.IsZero() {
lb.last = now
return lb.last
}
// sleepFor calculates how much time we should sleep based on
// the perRequest budget and how long the last request took.
// Since the request may take longer than the budget, this number
// can get negative, and is summed across requests.
lb.sleepFor += cfg.perRequest - now.Sub(lb.last)
// We shouldn't allow sleepFor to get too negative, since it would mean that
// a service that slowed down a lot for a short period of time would get
// a much higher RPS following that.
if lb.sleepFor < cfg.maxSlack {
lb.sleepFor = cfg.maxSlack
}
// If sleepFor is positive, then we should sleep now.
if lb.sleepFor > 0 {
lb.clock.Sleep(lb.sleepFor)
lb.last = now.Add(lb.sleepFor)
lb.sleepFor = 0
} else {
lb.last = now
}
return lb.last
}

531
utils/rate_test.go Normal file
View File

@@ -0,0 +1,531 @@
// Copyright (c) 2016,2020 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// SOURCE: https://github.com/uber-go/ratelimit/blob/main/ratelimit_test.go
// EDIT: slight modification to allow setting rate limit on the fly
// SCOPE: LeakyBucket
package utils
import (
"sync"
"testing"
"time"
"go.uber.org/atomic"
"github.com/benbjohnson/clock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
const UnstableTest = "UNSTABLE TEST"
// options from upstream, but stripped these
// Note: This file is inspired by:
// https://github.com/prashantv/go-bench/blob/master/ratelimit
// Limiter is used to rate-limit some process, possibly across goroutines.
// The process is expected to call Take() before every iteration, which
// may block to throttle the goroutine.
type Limiter interface {
// Take should block to make sure that the RPS is met.
Take() time.Time
}
// config configures a limiter.
type config struct {
clock Clock
slack int
per time.Duration
}
// buildConfig combines defaults with options.
func buildConfig(opts []Option) config {
c := config{
clock: clock.New(),
slack: 10,
per: time.Second,
}
for _, opt := range opts {
opt.apply(&c)
}
return c
}
// Option configures a Limiter.
type Option interface {
apply(*config)
}
type clockOption struct {
clock Clock
}
func (o clockOption) apply(c *config) {
c.clock = o.clock
}
// WithClock returns an option for ratelimit.New that provides an alternate
// Clock implementation, typically a mock Clock for testing.
func WithClock(clock Clock) Option {
return clockOption{clock: clock}
}
type slackOption int
func (o slackOption) apply(c *config) {
c.slack = int(o)
}
// WithoutSlack configures the limiter to be strict and not to accumulate
// previously "unspent" requests for future bursts of traffic.
var WithoutSlack Option = slackOption(0)
// WithSlack configures custom slack.
// Slack allows the limiter to accumulate "unspent" requests
// for future bursts of traffic.
func WithSlack(slack int) Option {
return slackOption(slack)
}
type perOption time.Duration
func (p perOption) apply(c *config) {
c.per = time.Duration(p)
}
// Per allows configuring limits for different time windows.
//
// The default window is one second, so New(100) produces a one hundred per
// second (100 Hz) rate limiter.
//
// New(2, Per(60*time.Second)) creates a 2 per minute rate limiter.
func Per(per time.Duration) Option {
return perOption(per)
}
type testRunner interface {
// createLimiter builds a limiter with given options.
createLimiter(int, ...Option) Limiter
// takeOnceAfter attempts to Take at a specific time.
takeOnceAfter(time.Duration, Limiter)
// startTaking tries to Take() on passed in limiters in a loop/goroutine.
startTaking(rls ...Limiter)
// assertCountAt asserts the limiters have Taken() a number of times at the given time.
// It's a thin wrapper around afterFunc to reduce boilerplate code.
assertCountAt(d time.Duration, count int)
// afterFunc executes a func at a given time.
// not using clock.AfterFunc because andres-erbsen/clock misses a nap there.
afterFunc(d time.Duration, fn func())
// some tests want raw access to the clock.
getClock() *clock.Mock
}
type runnerImpl struct {
t *testing.T
clock *clock.Mock
constructor func(int, ...Option) Limiter
count atomic.Int32
// maxDuration is the time we need to move into the future for a test.
// It's populated automatically based on assertCountAt/afterFunc.
maxDuration time.Duration
doneCh chan struct{}
wg sync.WaitGroup
}
func runTest(t *testing.T, fn func(testRunner)) {
impls := []struct {
name string
constructor func(int, ...Option) Limiter
}{
{
name: "mutex",
constructor: func(rate int, opts ...Option) Limiter {
config := buildConfig(opts)
perRequest := config.per / time.Duration(rate)
cfg := leakyBucketConfig{
perRequest: perRequest,
maxSlack: -1 * time.Duration(config.slack) * perRequest,
}
l := &LeakyBucket{
clock: config.clock,
}
l.cfg.Store(&cfg)
return l
},
},
}
for _, tt := range impls {
t.Run(tt.name, func(t *testing.T) {
// Set a non-default time.Time since some limiters (int64 in particular) use
// the default value as "non-initialized" state.
clockMock := clock.NewMock()
clockMock.Set(time.Now())
r := runnerImpl{
t: t,
clock: clockMock,
constructor: tt.constructor,
doneCh: make(chan struct{}),
}
defer close(r.doneCh)
defer r.wg.Wait()
fn(&r)
r.clock.Add(r.maxDuration)
})
}
}
// createLimiter builds a limiter with given options.
func (r *runnerImpl) createLimiter(rate int, opts ...Option) Limiter {
opts = append(opts, WithClock(r.clock))
return r.constructor(rate, opts...)
}
func (r *runnerImpl) getClock() *clock.Mock {
return r.clock
}
// startTaking tries to Take() on passed in limiters in a loop/goroutine.
func (r *runnerImpl) startTaking(rls ...Limiter) {
r.goWait(func() {
for {
for _, rl := range rls {
rl.Take()
}
r.count.Inc()
select {
case <-r.doneCh:
return
default:
}
}
})
}
// takeOnceAfter attempts to Take at a specific time.
func (r *runnerImpl) takeOnceAfter(d time.Duration, rl Limiter) {
r.wg.Add(1)
r.afterFunc(d, func() {
rl.Take()
r.count.Inc()
r.wg.Done()
})
}
// assertCountAt asserts the limiters have Taken() a number of times at a given time.
func (r *runnerImpl) assertCountAt(d time.Duration, count int) {
r.wg.Add(1)
r.afterFunc(d, func() {
assert.Equal(r.t, int32(count), r.count.Load(), "count not as expected")
r.wg.Done()
})
}
// afterFunc executes a func at a given time.
func (r *runnerImpl) afterFunc(d time.Duration, fn func()) {
if d > r.maxDuration {
r.maxDuration = d
}
r.goWait(func() {
select {
case <-r.doneCh:
return
case <-r.clock.After(d):
}
fn()
})
}
// goWait runs a function in a goroutine and makes sure the goroutine was scheduled.
func (r *runnerImpl) goWait(fn func()) {
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
wg.Done()
fn()
}()
wg.Wait()
}
func TestRateLimiter(t *testing.T) {
t.Parallel()
runTest(t, func(r testRunner) {
rl := r.createLimiter(100, WithoutSlack)
// Create copious counts concurrently.
r.startTaking(rl)
r.startTaking(rl)
r.startTaking(rl)
r.startTaking(rl)
r.assertCountAt(1*time.Second, 100)
r.assertCountAt(2*time.Second, 200)
r.assertCountAt(3*time.Second, 300)
})
}
func TestDelayedRateLimiter(t *testing.T) {
t.Skip(UnstableTest)
t.Parallel()
runTest(t, func(r testRunner) {
slow := r.createLimiter(10, WithoutSlack)
fast := r.createLimiter(100, WithoutSlack)
r.startTaking(slow, fast)
r.afterFunc(20*time.Second, func() {
r.startTaking(fast)
r.startTaking(fast)
r.startTaking(fast)
r.startTaking(fast)
})
r.assertCountAt(30*time.Second, 1200)
})
}
func TestPer(t *testing.T) {
t.Parallel()
runTest(t, func(r testRunner) {
rl := r.createLimiter(7, WithoutSlack, Per(time.Minute))
r.startTaking(rl)
r.startTaking(rl)
r.assertCountAt(1*time.Second, 1)
r.assertCountAt(1*time.Minute, 8)
r.assertCountAt(2*time.Minute, 15)
})
}
// TestInitial verifies that the initial sequence is scheduled as expected.
func TestInitial(t *testing.T) {
t.Parallel()
tests := []struct {
msg string
opts []Option
}{
{
msg: "With Slack",
},
{
msg: "Without Slack",
opts: []Option{WithoutSlack},
},
}
for _, tt := range tests {
t.Run(tt.msg, func(t *testing.T) {
runTest(t, func(r testRunner) {
rl := r.createLimiter(10, tt.opts...)
var (
clk = r.getClock()
prev = clk.Now()
results = make(chan time.Time)
have []time.Duration
startWg sync.WaitGroup
)
startWg.Add(3)
for i := 0; i < 3; i++ {
go func() {
startWg.Done()
results <- rl.Take()
}()
}
startWg.Wait()
clk.Add(time.Second)
for i := 0; i < 3; i++ {
ts := <-results
have = append(have, ts.Sub(prev))
prev = ts
}
assert.Equal(t,
[]time.Duration{
0,
time.Millisecond * 100,
time.Millisecond * 100,
},
have,
"bad timestamps for inital takes",
)
})
})
}
}
func TestMaxSlack(t *testing.T) {
t.Parallel()
runTest(t, func(r testRunner) {
rl := r.createLimiter(1, WithSlack(1))
r.takeOnceAfter(time.Nanosecond, rl)
r.takeOnceAfter(2*time.Second+1*time.Nanosecond, rl)
r.takeOnceAfter(2*time.Second+2*time.Nanosecond, rl)
r.takeOnceAfter(2*time.Second+3*time.Nanosecond, rl)
r.takeOnceAfter(2*time.Second+4*time.Nanosecond, rl)
r.assertCountAt(3*time.Second, 3)
r.assertCountAt(10*time.Second, 5)
})
}
func TestSlack(t *testing.T) {
t.Parallel()
// To simulate slack, we combine two limiters.
// - First, we start a single goroutine with both of them,
// during this time the slow limiter will dominate,
// and allow the fast limiter to accumulate slack.
// - After 2 seconds, we start another goroutine with
// only the faster limiter. This will allow it to max out,
// and consume all the slack.
// - After 3 seconds, we look at the final result, and we expect,
// a sum of:
// - slower limiter running for 3 seconds
// - faster limiter running for 1 second
// - slack accumulated by the faster limiter during the two seconds.
// it was blocked by slower limiter.
tests := []struct {
msg string
opt []Option
want int
}{
{
msg: "no option, defaults to 10",
// 2*10 + 1*100 + 1*10 (slack)
want: 130,
},
{
msg: "slack of 10, like default",
opt: []Option{WithSlack(10)},
// 2*10 + 1*100 + 1*10 (slack)
want: 130,
},
{
msg: "slack of 20",
opt: []Option{WithSlack(20)},
// 2*10 + 1*100 + 1*20 (slack)
want: 140,
},
{
// Note this is bigger then the rate of the limiter.
msg: "slack of 150",
opt: []Option{WithSlack(150)},
// 2*10 + 1*100 + 1*150 (slack)
want: 270,
},
{
msg: "no option, defaults to 10, with per",
// 2*(10*2) + 1*(100*2) + 1*10 (slack)
opt: []Option{Per(500 * time.Millisecond)},
want: 230,
},
{
msg: "slack of 10, like default, with per",
opt: []Option{WithSlack(10), Per(500 * time.Millisecond)},
// 2*(10*2) + 1*(100*2) + 1*10 (slack)
want: 230,
},
{
msg: "slack of 20, with per",
opt: []Option{WithSlack(20), Per(500 * time.Millisecond)},
// 2*(10*2) + 1*(100*2) + 1*20 (slack)
want: 240,
},
{
// Note this is bigger then the rate of the limiter.
msg: "slack of 150, with per",
opt: []Option{WithSlack(150), Per(500 * time.Millisecond)},
// 2*(10*2) + 1*(100*2) + 1*150 (slack)
want: 370,
},
}
for _, tt := range tests {
cfg := buildConfig(tt.opt)
if cfg.slack >= 100 {
t.Skip(UnstableTest)
}
t.Run(tt.msg, func(t *testing.T) {
runTest(t, func(r testRunner) {
slow := r.createLimiter(10, WithoutSlack)
fast := r.createLimiter(100, tt.opt...)
r.startTaking(slow, fast)
r.afterFunc(2*time.Second, func() {
r.startTaking(fast)
r.startTaking(fast)
})
// limiter with 10hz dominates here - we're always at 10.
r.assertCountAt(1*time.Second, 10)
r.assertCountAt(3*time.Second, tt.want)
})
})
}
}
func TestSetRateLimitOnTheFly(t *testing.T) {
runTest(t, func(r testRunner) {
// Set rate to 1hz
limiter, ok := r.createLimiter(1, WithoutSlack).(*LeakyBucket)
if !ok {
t.Skip("Update is not supported")
}
r.startTaking(limiter)
r.assertCountAt(time.Second, 2)
r.getClock().Add(time.Second)
r.assertCountAt(time.Second, 3)
// increase to 2hz
limiter.Update(2, 0)
r.getClock().Add(time.Second)
r.assertCountAt(time.Second, 4) // <- delayed due to paying sleepFor debt
r.getClock().Add(time.Second)
r.assertCountAt(time.Second, 6)
// reduce to 1hz again
limiter.Update(1, 0)
r.getClock().Add(time.Second)
r.assertCountAt(time.Second, 7)
r.getClock().Add(time.Second)
r.assertCountAt(time.Second, 8)
slack := 3
require.GreaterOrEqual(t, limiter.sleepFor, time.Duration(0))
limiter.Update(1, slack)
r.getClock().Add(time.Second * time.Duration(slack))
r.assertCountAt(time.Second, 8+slack)
})
}

View File

@@ -22,8 +22,6 @@ import (
"sync"
"time"
"go.uber.org/atomic"
"github.com/livekit/protocol/livekit"
)
@@ -33,19 +31,18 @@ const tickMask uint64 = (1 << tickBits) - 1
var epoch = time.Date(2000, 0, 0, 0, 0, 0, 0, time.UTC).UnixMicro()
type TimedVersionGenerator interface {
New() *TimedVersion
Next() TimedVersion
}
func timedVersionComponents(v uint64) (ts int64, ticks int32) {
return int64(v>>tickBits) + epoch, int32(v & tickMask)
func timedVersionComponents(v TimedVersion) (ts int64, ticks int32) {
return int64(v>>tickBits) + epoch, int32(uint64(v) & tickMask)
}
func timedVersionFromComponents(ts int64, ticks int32) TimedVersion {
if ts < epoch {
ts = epoch
}
return TimedVersion{v: *atomic.NewUint64((uint64(ts-epoch) << tickBits) | uint64(ticks))}
return TimedVersion((uint64(ts-epoch) << tickBits) | uint64(ticks))
}
type timedVersionGenerator struct {
@@ -90,19 +87,7 @@ func (g *timedVersionGenerator) Next() TimedVersion {
}
}
type TimedVersion struct {
v atomic.Uint64
}
func NewTimedVersionFromProto(proto *livekit.TimedVersion) *TimedVersion {
v := timedVersionFromComponents(proto.GetUnixMicro(), proto.GetTicks())
return &v
}
func NewTimedVersionFromTime(t time.Time) *TimedVersion {
v := timedVersionFromComponents(t.UnixMicro(), 0)
return &v
}
type TimedVersion uint64
func TimedVersionFromProto(proto *livekit.TimedVersion) TimedVersion {
return timedVersionFromComponents(proto.GetUnixMicro(), proto.GetTicks())
@@ -112,74 +97,67 @@ func TimedVersionFromTime(t time.Time) TimedVersion {
return timedVersionFromComponents(t.UnixMicro(), 0)
}
func (t *TimedVersion) Update(other *TimedVersion) bool {
func (t *TimedVersion) Update(other TimedVersion) bool {
return t.Upgrade(other)
}
func (t *TimedVersion) Upgrade(other *TimedVersion) bool {
return t.update(other, func(ov, prev uint64) bool { return ov > prev })
}
func (t *TimedVersion) Downgrade(other *TimedVersion) bool {
return t.update(other, func(ov, prev uint64) bool { return ov < prev })
}
func (t *TimedVersion) update(other *TimedVersion, cmp func(ov, prev uint64) bool) bool {
ov := other.v.Load()
for {
prev := t.v.Load()
if !cmp(ov, prev) {
return false
}
if t.v.CompareAndSwap(prev, ov) {
return true
}
func (t *TimedVersion) Upgrade(other TimedVersion) bool {
if *t < other {
*t = other
return true
}
return false
}
func (t *TimedVersion) Store(other *TimedVersion) {
t.v.Store(other.v.Load())
func (t *TimedVersion) Downgrade(other TimedVersion) bool {
if *t > other {
*t = other
return true
}
return false
}
func (t *TimedVersion) Load() TimedVersion {
return TimedVersion{v: *atomic.NewUint64(t.v.Load())}
func (t *TimedVersion) Store(other TimedVersion) {
*t = other
}
func (t *TimedVersion) After(other *TimedVersion) bool {
return t.v.Load() > other.v.Load()
func (t TimedVersion) Load() TimedVersion {
return t
}
func (t *TimedVersion) Compare(other *TimedVersion) int {
ov := other.v.Load()
v := t.v.Load()
if v < ov {
func (t TimedVersion) After(other TimedVersion) bool {
return t > other
}
func (t TimedVersion) Compare(other TimedVersion) int {
if t < other {
return -1
}
if v == ov {
if t == other {
return 0
}
return 1
}
func (t *TimedVersion) IsZero() bool {
return t.v.Load() == 0
func (t TimedVersion) IsZero() bool {
return t == 0
}
func (t *TimedVersion) ToProto() *livekit.TimedVersion {
ts, ticks := timedVersionComponents(t.v.Load())
func (t TimedVersion) ToProto() *livekit.TimedVersion {
ts, ticks := timedVersionComponents(t)
return &livekit.TimedVersion{
UnixMicro: ts,
Ticks: ticks,
}
}
func (t *TimedVersion) Time() time.Time {
ts, _ := timedVersionComponents(t.v.Load())
func (t TimedVersion) Time() time.Time {
ts, _ := timedVersionComponents(t)
return time.UnixMicro(ts)
}
func (t *TimedVersion) String() string {
ts, ticks := timedVersionComponents(t.v.Load())
func (t TimedVersion) String() string {
ts, ticks := timedVersionComponents(t)
return fmt.Sprintf("%d.%d", ts, ticks)
}
@@ -188,7 +166,7 @@ func (t TimedVersion) Value() (driver.Value, error) {
return nil, nil
}
ts, ticks := timedVersionComponents(t.v.Load())
ts, ticks := timedVersionComponents(t)
b := make([]byte, 0, 12)
b = binary.BigEndian.AppendUint64(b, uint64(ts))
b = binary.BigEndian.AppendUint32(b, uint32(ticks))
@@ -200,7 +178,7 @@ func (t *TimedVersion) Scan(src interface{}) (err error) {
case []byte:
switch len(b) {
case 0:
t.v.Store(0)
*t = 0
case 12:
ts := int64(binary.BigEndian.Uint64(b))
ticks := int32(binary.BigEndian.Uint32(b[8:]))
@@ -209,7 +187,7 @@ func (t *TimedVersion) Scan(src interface{}) (err error) {
return errors.New("(*TimedVersion).Scan: unsupported format")
}
case nil:
t.v.Store(0)
*t = 0
default:
return errors.New("(*TimedVersion).Scan: unsupported data type")
}

View File

@@ -24,9 +24,9 @@ import (
func TestTimedVersion(t *testing.T) {
t.Run("timed versions are monotonic and comparable", func(t *testing.T) {
gen := NewDefaultTimedVersionGenerator()
tv1 := gen.New()
tv2 := gen.New()
tv3 := gen.New()
tv1 := gen.Next()
tv2 := gen.Next()
tv3 := gen.Next()
require.True(t, tv3.After(tv1))
require.True(t, tv3.After(tv2))
@@ -44,28 +44,28 @@ func TestTimedVersion(t *testing.T) {
t.Run("protobuf roundtrip", func(t *testing.T) {
gen := NewDefaultTimedVersionGenerator()
tv1 := gen.New()
tv2 := NewTimedVersionFromProto(tv1.ToProto())
require.Equal(t, tv1.v.Load(), tv2.v.Load())
tv1 := gen.Next()
tv2 := TimedVersionFromProto(tv1.ToProto())
require.Equal(t, tv1, tv2)
})
t.Run("from zero time yields epoch version", func(t *testing.T) {
gen := NewDefaultTimedVersionGenerator()
tv1 := NewTimedVersionFromTime(time.Date(0, 0, 0, 0, 0, 0, 0, time.UTC))
tv2 := gen.New()
tv1 := TimedVersionFromTime(time.Date(0, 0, 0, 0, 0, 0, 0, time.UTC))
tv2 := gen.Next()
require.True(t, tv2.After(tv1))
})
t.Run("time.Time roundtrip", func(t *testing.T) {
ts1 := time.Now().Round(time.Microsecond)
tv1 := NewTimedVersionFromTime(ts1)
tv1 := TimedVersionFromTime(ts1)
ts2 := tv1.Time()
tv2 := NewTimedVersionFromTime(ts2)
tv2 := TimedVersionFromTime(ts2)
require.Equal(t, ts1, ts2)
require.Equal(t, tv1.v.Load(), tv2.v.Load())
require.Equal(t, tv1, tv2)
})
t.Run("timed version from nil is zero", func(t *testing.T) {
require.True(t, NewTimedVersionFromProto(nil).IsZero())
require.True(t, TimedVersionFromProto(nil).IsZero())
})
}

View File

@@ -19,7 +19,6 @@ import (
"errors"
"fmt"
"math"
"sync"
"time"
)
@@ -86,6 +85,28 @@ func (t TimeSeriesCompareOp) String() string {
// ------------------------------------------------
type ReverseIterator[T number] struct {
limit time.Time
e *list.Element
s TimeSeriesSample[T]
}
func (it *ReverseIterator[T]) Next() bool {
if it.e == nil {
return false
}
it.s = it.e.Value.(TimeSeriesSample[T])
it.e = it.e.Prev()
return it.s.At.After(it.limit)
}
func (it *ReverseIterator[T]) Value() TimeSeriesSample[T] {
return it.s
}
// ------------------------------------------------
type number interface {
uint32 | uint64 | int | int32 | int64 | float32 | float64
}
@@ -104,7 +125,6 @@ type TimeSeriesParams struct {
type TimeSeries[T number] struct {
params TimeSeriesParams
lock sync.RWMutex
samples *list.List
activeSample T
isActiveSample bool
@@ -127,9 +147,6 @@ func NewTimeSeries[T number](params TimeSeriesParams) *TimeSeries[T] {
}
func (t *TimeSeries[T]) UpdateSample(val T) {
t.lock.Lock()
defer t.lock.Unlock()
if !t.isActiveSample {
t.isActiveSample = true
t.activeSample = val
@@ -153,9 +170,6 @@ func (t *TimeSeries[T]) CommitActiveSample() {
}
func (t *TimeSeries[T]) CommitActiveSampleAt(at time.Time) {
t.lock.Lock()
defer t.lock.Unlock()
if !t.isActiveSample {
return
}
@@ -169,16 +183,10 @@ func (t *TimeSeries[T]) AddSample(val T) {
}
func (t *TimeSeries[T]) AddSampleAt(val T, at time.Time) {
t.lock.Lock()
defer t.lock.Unlock()
t.addSampleAt(val, at)
}
func (t *TimeSeries[T]) GetSamples() []TimeSeriesSample[T] {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
samples := make([]TimeSeriesSample[T], 0, t.samples.Len())
@@ -189,9 +197,6 @@ func (t *TimeSeries[T]) GetSamples() []TimeSeriesSample[T] {
}
func (t *TimeSeries[T]) GetSamplesAfter(at time.Time) []TimeSeriesSample[T] {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
samples := make([]TimeSeriesSample[T], 0, t.samples.Len())
@@ -204,17 +209,20 @@ func (t *TimeSeries[T]) GetSamplesAfter(at time.Time) []TimeSeriesSample[T] {
return samples
}
func (t *TimeSeries[T]) ClearSamples() {
t.lock.Lock()
defer t.lock.Unlock()
func (t *TimeSeries[T]) ReverseIterateSamplesAfter(at time.Time) ReverseIterator[T] {
t.prune()
return ReverseIterator[T]{
limit: at,
e: t.samples.Back(),
}
}
func (t *TimeSeries[T]) ClearSamples() {
t.initSamples()
}
func (t *TimeSeries[T]) Sum() float64 {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
sum := float64(0.0)
@@ -226,10 +234,25 @@ func (t *TimeSeries[T]) Sum() float64 {
return sum
}
func (t *TimeSeries[T]) Min() T {
t.lock.Lock()
defer t.lock.Unlock()
func (t *TimeSeries[T]) HasSamplesAfter(at time.Time) bool {
t.prune()
if e := t.samples.Back(); e != nil {
return e.Value.(TimeSeriesSample[T]).At.After(at)
}
return false
}
func (t *TimeSeries[T]) Back() TimeSeriesSample[T] {
t.prune()
if e := t.samples.Back(); e != nil {
return e.Value.(TimeSeriesSample[T])
}
return TimeSeriesSample[T]{}
}
func (t *TimeSeries[T]) Min() T {
t.prune()
return t.minLocked(t.samples.Len())
@@ -248,9 +271,6 @@ func (t *TimeSeries[T]) minLocked(numSamples int) T {
}
func (t *TimeSeries[T]) Max() T {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
return t.maxLocked(t.samples.Len())
@@ -269,9 +289,6 @@ func (t *TimeSeries[T]) maxLocked(numSamples int) T {
}
func (t *TimeSeries[T]) CurrentRun(threshold T, op TimeSeriesCompareOp) time.Duration {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
start := time.Time{}
@@ -311,16 +328,10 @@ func (t *TimeSeries[T]) CurrentRun(threshold T, op TimeSeriesCompareOp) time.Dur
}
func (t *TimeSeries[T]) OnlineAverage() float64 {
t.lock.RLock()
defer t.lock.RUnlock()
return t.welfordM
}
func (t *TimeSeries[T]) OnlineVariance() float64 {
t.lock.RLock()
defer t.lock.RUnlock()
return t.onlineVarianceLocked()
}
@@ -333,9 +344,6 @@ func (t *TimeSeries[T]) onlineVarianceLocked() float64 {
}
func (t *TimeSeries[T]) OnlineStdDev() float64 {
t.lock.RLock()
defer t.lock.RUnlock()
return t.onlineStdDevLocked()
}
@@ -344,9 +352,6 @@ func (t *TimeSeries[T]) onlineStdDevLocked() float64 {
}
func (t *TimeSeries[T]) ZScore(val T) float64 {
t.lock.RLock()
defer t.lock.RUnlock()
onlineStdDev := t.onlineStdDevLocked()
if onlineStdDev != 0.0 {
return (float64(val) - t.welfordM) / onlineStdDev
@@ -356,9 +361,6 @@ func (t *TimeSeries[T]) ZScore(val T) float64 {
}
func (t *TimeSeries[T]) Slope() float64 {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
numSamples := t.samples.Len()
@@ -418,9 +420,6 @@ func (t *TimeSeries[T]) linearFitLocked(numSamples int) (slope float64, intercep
}
func (t *TimeSeries[T]) LinearExtrapolateTo(numSamplesToUse int, after time.Duration) (float64, error) {
t.lock.Lock()
defer t.lock.Unlock()
t.prune()
slope, intercept, startedAt, endedAt := t.linearFitLocked(numSamplesToUse)
@@ -434,11 +433,9 @@ func (t *TimeSeries[T]) LinearExtrapolateTo(numSamplesToUse int, after time.Dura
}
func (t *TimeSeries[T]) KendallsTau(numSamplesToUse int) (float64, error) {
t.lock.Lock()
t.prune()
if t.samples.Len() < numSamplesToUse {
t.lock.Unlock()
return 0.0, errNotEnoughSamples
}
@@ -453,7 +450,6 @@ func (t *TimeSeries[T]) KendallsTau(numSamplesToUse int) (float64, error) {
values[idx] = s.Value
idx--
}
t.lock.Unlock()
concordantPairs := 0
discordantPairs := 0
@@ -532,17 +528,14 @@ func (t *TimeSeries[T]) prune() {
thresh := t.welfordLast.Add(-t.params.Window)
//thresh := time.Now().Add(-t.params.Window)
toRemove := make([]*list.Element, 0, t.samples.Len())
for e := t.samples.Front(); e != nil; e = e.Next() {
for next := t.samples.Front(); next != nil; {
e := next
s := e.Value.(TimeSeriesSample[T])
if s.At.After(thresh) {
break
}
next = e.Next()
toRemove = append(toRemove, e)
}
for _, e := range toRemove {
t.samples.Remove(e)
}
}

View File

@@ -15,6 +15,7 @@
package timeseries
import (
"slices"
"testing"
"time"
@@ -122,7 +123,17 @@ func TestTimeSeries(t *testing.T) {
})
}
}
require.Equal(t, expectedSamples, ts.GetSamplesAfter(now.Add(5*time.Second)))
threshold := now.Add(5 * time.Second)
require.True(t, ts.HasSamplesAfter(threshold))
require.Equal(t, expectedSamples, ts.GetSamplesAfter(threshold))
history := make([]TimeSeriesSample[uint32], 0, 4)
for it := ts.ReverseIterateSamplesAfter(threshold); it.Next(); {
history = append(history, it.Value())
}
slices.Reverse(history)
require.Equal(t, expectedSamples, ts.GetSamplesAfter(threshold))
})
t.Run("sum", func(t *testing.T) {