Compare commits

...

6 Commits

Author SHA1 Message Date
github-actions[bot]
499c17c480 Version Packages (#1061)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-09 09:29:13 +08:00
cnderrauber
690e17ffca changeset for MoveParticipant (#1065) 2025-05-08 15:50:11 +08:00
David Zhao
677d114d56 feat: MoveParticipant API (#1051)
* feat: MoveParticipant API

This new API would move a participant from one cloud room to another.
It will support the following use cases:
- warm transfer in voice AI
- fast switching between different live streams
- prejoin room in meetings

* generated protobuf

* add RTC message

* repeat field number

* generated protobuf

* rpc

* generated protobuf

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: cnderrauber <zengjie9004@gmail.com>
2025-05-07 10:28:20 +08:00
Paul Wells
86628c07da allow extending pion log filter (#1064) 2025-05-05 21:13:05 -07:00
Raja Subramanian
781992d0c7 Fix paths and simplify. (#1062)
* debug memory v2

* more debug

* simplify

* clean up

* clean up

* Create young-clouds-pull.md
2025-05-05 18:56:18 +05:30
Raja Subramanian
8c4ed46b56 fix memory path for cgroups v2 (#1060)
* fix memory path for cgroups v2

* Create lazy-snails-happen.md
2025-05-05 16:14:41 +05:30
17 changed files with 1060 additions and 329 deletions

View File

@@ -1,5 +1,11 @@
# github.com/livekit/protocol
## 1.38.0
### Minor Changes
- feat: MoveParticipant API - [#1065](https://github.com/livekit/protocol/pull/1065) ([@cnderrauber](https://github.com/cnderrauber))
## 1.37.1
### Patch Changes

View File

@@ -1362,6 +1362,105 @@ func (*ForwardParticipantResponse) Descriptor() ([]byte, []int) {
return file_livekit_room_proto_rawDescGZIP(), []int{21}
}
type MoveParticipantRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// room to move participant from
Room string `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
// identity of the participant to move to
Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
// room to move participant to
DestinationRoom string `protobuf:"bytes,3,opt,name=destination_room,json=destinationRoom,proto3" json:"destination_room,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MoveParticipantRequest) Reset() {
*x = MoveParticipantRequest{}
mi := &file_livekit_room_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MoveParticipantRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MoveParticipantRequest) ProtoMessage() {}
func (x *MoveParticipantRequest) ProtoReflect() protoreflect.Message {
mi := &file_livekit_room_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MoveParticipantRequest.ProtoReflect.Descriptor instead.
func (*MoveParticipantRequest) Descriptor() ([]byte, []int) {
return file_livekit_room_proto_rawDescGZIP(), []int{22}
}
func (x *MoveParticipantRequest) GetRoom() string {
if x != nil {
return x.Room
}
return ""
}
func (x *MoveParticipantRequest) GetIdentity() string {
if x != nil {
return x.Identity
}
return ""
}
func (x *MoveParticipantRequest) GetDestinationRoom() string {
if x != nil {
return x.DestinationRoom
}
return ""
}
type MoveParticipantResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MoveParticipantResponse) Reset() {
*x = MoveParticipantResponse{}
mi := &file_livekit_room_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MoveParticipantResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MoveParticipantResponse) ProtoMessage() {}
func (x *MoveParticipantResponse) ProtoReflect() protoreflect.Message {
mi := &file_livekit_room_proto_msgTypes[23]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MoveParticipantResponse.ProtoReflect.Descriptor instead.
func (*MoveParticipantResponse) Descriptor() ([]byte, []int) {
return file_livekit_room_proto_rawDescGZIP(), []int{23}
}
var File_livekit_room_proto protoreflect.FileDescriptor
const file_livekit_room_proto_rawDesc = "" +
@@ -1464,7 +1563,12 @@ const file_livekit_room_proto_rawDesc = "" +
"\x04room\x18\x01 \x01(\tR\x04room\x12\x1a\n" +
"\bidentity\x18\x02 \x01(\tR\bidentity\x12)\n" +
"\x10destination_room\x18\x03 \x01(\tR\x0fdestinationRoom\"\x1c\n" +
"\x1aForwardParticipantResponse2\xc5\a\n" +
"\x1aForwardParticipantResponse\"s\n" +
"\x16MoveParticipantRequest\x12\x12\n" +
"\x04room\x18\x01 \x01(\tR\x04room\x12\x1a\n" +
"\bidentity\x18\x02 \x01(\tR\bidentity\x12)\n" +
"\x10destination_room\x18\x03 \x01(\tR\x0fdestinationRoom\"\x19\n" +
"\x17MoveParticipantResponse2\x9b\b\n" +
"\vRoomService\x127\n" +
"\n" +
"CreateRoom\x12\x1a.livekit.CreateRoomRequest\x1a\r.livekit.Room\x12B\n" +
@@ -1479,7 +1583,8 @@ const file_livekit_room_proto_rawDesc = "" +
"\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\x12?\n" +
"\bSendData\x12\x18.livekit.SendDataRequest\x1a\x19.livekit.SendDataResponse\x12G\n" +
"\x12UpdateRoomMetadata\x12\".livekit.UpdateRoomMetadataRequest\x1a\r.livekit.Room\x12]\n" +
"\x12ForwardParticipant\x12\".livekit.ForwardParticipantRequest\x1a#.livekit.ForwardParticipantResponseBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3"
"\x12ForwardParticipant\x12\".livekit.ForwardParticipantRequest\x1a#.livekit.ForwardParticipantResponse\x12T\n" +
"\x0fMoveParticipant\x12\x1f.livekit.MoveParticipantRequest\x1a .livekit.MoveParticipantResponseBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3"
var (
file_livekit_room_proto_rawDescOnce sync.Once
@@ -1493,7 +1598,7 @@ func file_livekit_room_proto_rawDescGZIP() []byte {
return file_livekit_room_proto_rawDescData
}
var file_livekit_room_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_livekit_room_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_livekit_room_proto_goTypes = []any{
(*CreateRoomRequest)(nil), // 0: livekit.CreateRoomRequest
(*RoomEgress)(nil), // 1: livekit.RoomEgress
@@ -1517,34 +1622,36 @@ var file_livekit_room_proto_goTypes = []any{
(*RoomConfiguration)(nil), // 19: livekit.RoomConfiguration
(*ForwardParticipantRequest)(nil), // 20: livekit.ForwardParticipantRequest
(*ForwardParticipantResponse)(nil), // 21: livekit.ForwardParticipantResponse
nil, // 22: livekit.UpdateParticipantRequest.AttributesEntry
(*RoomAgentDispatch)(nil), // 23: livekit.RoomAgentDispatch
(*RoomCompositeEgressRequest)(nil), // 24: livekit.RoomCompositeEgressRequest
(*AutoParticipantEgress)(nil), // 25: livekit.AutoParticipantEgress
(*AutoTrackEgress)(nil), // 26: livekit.AutoTrackEgress
(*Room)(nil), // 27: livekit.Room
(*ParticipantInfo)(nil), // 28: livekit.ParticipantInfo
(*TrackInfo)(nil), // 29: livekit.TrackInfo
(*ParticipantPermission)(nil), // 30: livekit.ParticipantPermission
(*ParticipantTracks)(nil), // 31: livekit.ParticipantTracks
(DataPacket_Kind)(0), // 32: livekit.DataPacket.Kind
(*MoveParticipantRequest)(nil), // 22: livekit.MoveParticipantRequest
(*MoveParticipantResponse)(nil), // 23: livekit.MoveParticipantResponse
nil, // 24: livekit.UpdateParticipantRequest.AttributesEntry
(*RoomAgentDispatch)(nil), // 25: livekit.RoomAgentDispatch
(*RoomCompositeEgressRequest)(nil), // 26: livekit.RoomCompositeEgressRequest
(*AutoParticipantEgress)(nil), // 27: livekit.AutoParticipantEgress
(*AutoTrackEgress)(nil), // 28: livekit.AutoTrackEgress
(*Room)(nil), // 29: livekit.Room
(*ParticipantInfo)(nil), // 30: livekit.ParticipantInfo
(*TrackInfo)(nil), // 31: livekit.TrackInfo
(*ParticipantPermission)(nil), // 32: livekit.ParticipantPermission
(*ParticipantTracks)(nil), // 33: livekit.ParticipantTracks
(DataPacket_Kind)(0), // 34: livekit.DataPacket.Kind
}
var file_livekit_room_proto_depIdxs = []int32{
1, // 0: livekit.CreateRoomRequest.egress:type_name -> livekit.RoomEgress
23, // 1: livekit.CreateRoomRequest.agents:type_name -> livekit.RoomAgentDispatch
24, // 2: livekit.RoomEgress.room:type_name -> livekit.RoomCompositeEgressRequest
25, // 3: livekit.RoomEgress.participant:type_name -> livekit.AutoParticipantEgress
26, // 4: livekit.RoomEgress.tracks:type_name -> livekit.AutoTrackEgress
23, // 5: livekit.RoomAgent.dispatches:type_name -> livekit.RoomAgentDispatch
27, // 6: livekit.ListRoomsResponse.rooms:type_name -> livekit.Room
28, // 7: livekit.ListParticipantsResponse.participants:type_name -> livekit.ParticipantInfo
29, // 8: livekit.MuteRoomTrackResponse.track:type_name -> livekit.TrackInfo
30, // 9: livekit.UpdateParticipantRequest.permission:type_name -> livekit.ParticipantPermission
22, // 10: livekit.UpdateParticipantRequest.attributes:type_name -> livekit.UpdateParticipantRequest.AttributesEntry
31, // 11: livekit.UpdateSubscriptionsRequest.participant_tracks:type_name -> livekit.ParticipantTracks
32, // 12: livekit.SendDataRequest.kind:type_name -> livekit.DataPacket.Kind
25, // 1: livekit.CreateRoomRequest.agents:type_name -> livekit.RoomAgentDispatch
26, // 2: livekit.RoomEgress.room:type_name -> livekit.RoomCompositeEgressRequest
27, // 3: livekit.RoomEgress.participant:type_name -> livekit.AutoParticipantEgress
28, // 4: livekit.RoomEgress.tracks:type_name -> livekit.AutoTrackEgress
25, // 5: livekit.RoomAgent.dispatches:type_name -> livekit.RoomAgentDispatch
29, // 6: livekit.ListRoomsResponse.rooms:type_name -> livekit.Room
30, // 7: livekit.ListParticipantsResponse.participants:type_name -> livekit.ParticipantInfo
31, // 8: livekit.MuteRoomTrackResponse.track:type_name -> livekit.TrackInfo
32, // 9: livekit.UpdateParticipantRequest.permission:type_name -> livekit.ParticipantPermission
24, // 10: livekit.UpdateParticipantRequest.attributes:type_name -> livekit.UpdateParticipantRequest.AttributesEntry
33, // 11: livekit.UpdateSubscriptionsRequest.participant_tracks:type_name -> livekit.ParticipantTracks
34, // 12: livekit.SendDataRequest.kind:type_name -> livekit.DataPacket.Kind
1, // 13: livekit.RoomConfiguration.egress:type_name -> livekit.RoomEgress
23, // 14: livekit.RoomConfiguration.agents:type_name -> livekit.RoomAgentDispatch
25, // 14: livekit.RoomConfiguration.agents:type_name -> livekit.RoomAgentDispatch
0, // 15: livekit.RoomService.CreateRoom:input_type -> livekit.CreateRoomRequest
3, // 16: livekit.RoomService.ListRooms:input_type -> livekit.ListRoomsRequest
5, // 17: livekit.RoomService.DeleteRoom:input_type -> livekit.DeleteRoomRequest
@@ -1557,20 +1664,22 @@ var file_livekit_room_proto_depIdxs = []int32{
16, // 24: livekit.RoomService.SendData:input_type -> livekit.SendDataRequest
18, // 25: livekit.RoomService.UpdateRoomMetadata:input_type -> livekit.UpdateRoomMetadataRequest
20, // 26: livekit.RoomService.ForwardParticipant:input_type -> livekit.ForwardParticipantRequest
27, // 27: livekit.RoomService.CreateRoom:output_type -> livekit.Room
4, // 28: livekit.RoomService.ListRooms:output_type -> livekit.ListRoomsResponse
6, // 29: livekit.RoomService.DeleteRoom:output_type -> livekit.DeleteRoomResponse
8, // 30: livekit.RoomService.ListParticipants:output_type -> livekit.ListParticipantsResponse
28, // 31: livekit.RoomService.GetParticipant:output_type -> livekit.ParticipantInfo
10, // 32: livekit.RoomService.RemoveParticipant:output_type -> livekit.RemoveParticipantResponse
12, // 33: livekit.RoomService.MutePublishedTrack:output_type -> livekit.MuteRoomTrackResponse
28, // 34: livekit.RoomService.UpdateParticipant:output_type -> livekit.ParticipantInfo
15, // 35: livekit.RoomService.UpdateSubscriptions:output_type -> livekit.UpdateSubscriptionsResponse
17, // 36: livekit.RoomService.SendData:output_type -> livekit.SendDataResponse
27, // 37: livekit.RoomService.UpdateRoomMetadata:output_type -> livekit.Room
21, // 38: livekit.RoomService.ForwardParticipant:output_type -> livekit.ForwardParticipantResponse
27, // [27:39] is the sub-list for method output_type
15, // [15:27] is the sub-list for method input_type
22, // 27: livekit.RoomService.MoveParticipant:input_type -> livekit.MoveParticipantRequest
29, // 28: livekit.RoomService.CreateRoom:output_type -> livekit.Room
4, // 29: livekit.RoomService.ListRooms:output_type -> livekit.ListRoomsResponse
6, // 30: livekit.RoomService.DeleteRoom:output_type -> livekit.DeleteRoomResponse
8, // 31: livekit.RoomService.ListParticipants:output_type -> livekit.ListParticipantsResponse
30, // 32: livekit.RoomService.GetParticipant:output_type -> livekit.ParticipantInfo
10, // 33: livekit.RoomService.RemoveParticipant:output_type -> livekit.RemoveParticipantResponse
12, // 34: livekit.RoomService.MutePublishedTrack:output_type -> livekit.MuteRoomTrackResponse
30, // 35: livekit.RoomService.UpdateParticipant:output_type -> livekit.ParticipantInfo
15, // 36: livekit.RoomService.UpdateSubscriptions:output_type -> livekit.UpdateSubscriptionsResponse
17, // 37: livekit.RoomService.SendData:output_type -> livekit.SendDataResponse
29, // 38: livekit.RoomService.UpdateRoomMetadata:output_type -> livekit.Room
21, // 39: livekit.RoomService.ForwardParticipant:output_type -> livekit.ForwardParticipantResponse
23, // 40: livekit.RoomService.MoveParticipant:output_type -> livekit.MoveParticipantResponse
28, // [28:41] is the sub-list for method output_type
15, // [15:28] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
@@ -1591,7 +1700,7 @@ func file_livekit_room_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_room_proto_rawDesc), len(file_livekit_room_proto_rawDesc)),
NumEnums: 0,
NumMessages: 23,
NumMessages: 25,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -64,10 +64,17 @@ type RoomService interface {
// Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin`
UpdateRoomMetadata(context.Context, *UpdateRoomMetadataRequest) (*Room, error)
// Forward a participant's track(s) to another room. Requires `roomAdmin` and `destinationRoom`. The forwarding will
// Cloud-only
// a connected participant's track(s) to another room. Requires `roomAdmin` and `destinationRoom`. The forwarding will
// stop when the participant leaves the room or `RemoveParticipant` has been called in the destination room.
// A participant can be forwarded to multiple rooms. The destination room will be created if it does not exist.
ForwardParticipant(context.Context, *ForwardParticipantRequest) (*ForwardParticipantResponse, error)
// Cloud-only
// Move a connected participant to a different room. Requires `roomAdmin` and `destinationRoom`.
// The participant will be removed from the current room and added to the destination room.
// From the other observers' perspective, the participant would've disconnected from the previous room and joined the new one.
MoveParticipant(context.Context, *MoveParticipantRequest) (*MoveParticipantResponse, error)
}
// ===========================
@@ -76,7 +83,7 @@ type RoomService interface {
type roomServiceProtobufClient struct {
client HTTPClient
urls [12]string
urls [13]string
interceptor twirp.Interceptor
opts twirp.ClientOptions
}
@@ -104,7 +111,7 @@ func NewRoomServiceProtobufClient(baseURL string, client HTTPClient, opts ...twi
// Build method URLs: <baseURL>[<prefix>]/<package>.<Service>/<Method>
serviceURL := sanitizeBaseURL(baseURL)
serviceURL += baseServicePath(pathPrefix, "livekit", "RoomService")
urls := [12]string{
urls := [13]string{
serviceURL + "CreateRoom",
serviceURL + "ListRooms",
serviceURL + "DeleteRoom",
@@ -117,6 +124,7 @@ func NewRoomServiceProtobufClient(baseURL string, client HTTPClient, opts ...twi
serviceURL + "SendData",
serviceURL + "UpdateRoomMetadata",
serviceURL + "ForwardParticipant",
serviceURL + "MoveParticipant",
}
return &roomServiceProtobufClient{
@@ -679,13 +687,59 @@ func (c *roomServiceProtobufClient) callForwardParticipant(ctx context.Context,
return out, nil
}
func (c *roomServiceProtobufClient) MoveParticipant(ctx context.Context, in *MoveParticipantRequest) (*MoveParticipantResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "RoomService")
ctx = ctxsetters.WithMethodName(ctx, "MoveParticipant")
caller := c.callMoveParticipant
if c.interceptor != nil {
caller = func(ctx context.Context, req *MoveParticipantRequest) (*MoveParticipantResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*MoveParticipantRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*MoveParticipantRequest) when calling interceptor")
}
return c.callMoveParticipant(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*MoveParticipantResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*MoveParticipantResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *roomServiceProtobufClient) callMoveParticipant(ctx context.Context, in *MoveParticipantRequest) (*MoveParticipantResponse, error) {
out := new(MoveParticipantResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
// =======================
// RoomService JSON Client
// =======================
type roomServiceJSONClient struct {
client HTTPClient
urls [12]string
urls [13]string
interceptor twirp.Interceptor
opts twirp.ClientOptions
}
@@ -713,7 +767,7 @@ func NewRoomServiceJSONClient(baseURL string, client HTTPClient, opts ...twirp.C
// Build method URLs: <baseURL>[<prefix>]/<package>.<Service>/<Method>
serviceURL := sanitizeBaseURL(baseURL)
serviceURL += baseServicePath(pathPrefix, "livekit", "RoomService")
urls := [12]string{
urls := [13]string{
serviceURL + "CreateRoom",
serviceURL + "ListRooms",
serviceURL + "DeleteRoom",
@@ -726,6 +780,7 @@ func NewRoomServiceJSONClient(baseURL string, client HTTPClient, opts ...twirp.C
serviceURL + "SendData",
serviceURL + "UpdateRoomMetadata",
serviceURL + "ForwardParticipant",
serviceURL + "MoveParticipant",
}
return &roomServiceJSONClient{
@@ -1288,6 +1343,52 @@ func (c *roomServiceJSONClient) callForwardParticipant(ctx context.Context, in *
return out, nil
}
func (c *roomServiceJSONClient) MoveParticipant(ctx context.Context, in *MoveParticipantRequest) (*MoveParticipantResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "RoomService")
ctx = ctxsetters.WithMethodName(ctx, "MoveParticipant")
caller := c.callMoveParticipant
if c.interceptor != nil {
caller = func(ctx context.Context, req *MoveParticipantRequest) (*MoveParticipantResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*MoveParticipantRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*MoveParticipantRequest) when calling interceptor")
}
return c.callMoveParticipant(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*MoveParticipantResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*MoveParticipantResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *roomServiceJSONClient) callMoveParticipant(ctx context.Context, in *MoveParticipantRequest) (*MoveParticipantResponse, error) {
out := new(MoveParticipantResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
// ==========================
// RoomService Server Handler
// ==========================
@@ -1421,6 +1522,9 @@ func (s *roomServiceServer) ServeHTTP(resp http.ResponseWriter, req *http.Reques
case "ForwardParticipant":
s.serveForwardParticipant(ctx, resp, req)
return
case "MoveParticipant":
s.serveMoveParticipant(ctx, resp, req)
return
default:
msg := fmt.Sprintf("no handler for path %q", req.URL.Path)
s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
@@ -3588,6 +3692,186 @@ func (s *roomServiceServer) serveForwardParticipantProtobuf(ctx context.Context,
callResponseSent(ctx, s.hooks)
}
func (s *roomServiceServer) serveMoveParticipant(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveMoveParticipantJSON(ctx, resp, req)
case "application/protobuf":
s.serveMoveParticipantProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *roomServiceServer) serveMoveParticipantJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "MoveParticipant")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(MoveParticipantRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.RoomService.MoveParticipant
if s.interceptor != nil {
handler = func(ctx context.Context, req *MoveParticipantRequest) (*MoveParticipantResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*MoveParticipantRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*MoveParticipantRequest) when calling interceptor")
}
return s.RoomService.MoveParticipant(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*MoveParticipantResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*MoveParticipantResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
// Call service method
var respContent *MoveParticipantResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *MoveParticipantResponse and nil error while calling MoveParticipant. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *roomServiceServer) serveMoveParticipantProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "MoveParticipant")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(MoveParticipantRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.RoomService.MoveParticipant
if s.interceptor != nil {
handler = func(ctx context.Context, req *MoveParticipantRequest) (*MoveParticipantResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*MoveParticipantRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*MoveParticipantRequest) when calling interceptor")
}
return s.RoomService.MoveParticipant(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*MoveParticipantResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*MoveParticipantResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
// Call service method
var respContent *MoveParticipantResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *MoveParticipantResponse and nil error while calling MoveParticipant. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *roomServiceServer) ServiceDescriptor() ([]byte, int) {
return twirpFileDescriptor3, 0
}
@@ -3604,89 +3888,91 @@ func (s *roomServiceServer) PathPrefix() string {
}
var twirpFileDescriptor3 = []byte{
// 1339 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x5b, 0x6f, 0xdc, 0x44,
0x14, 0x66, 0xaf, 0x59, 0x9f, 0xcd, 0x6d, 0xa7, 0x29, 0x75, 0x9c, 0xb6, 0xa4, 0x0e, 0x88, 0x2d,
0xa5, 0x29, 0x2c, 0x42, 0xad, 0x22, 0x6e, 0x49, 0x93, 0x96, 0xa8, 0xad, 0xb4, 0x38, 0x45, 0x5c,
0x24, 0x64, 0xbc, 0xeb, 0x69, 0x3a, 0xca, 0xfa, 0x82, 0x67, 0x1c, 0xba, 0x6f, 0x3c, 0xf6, 0xb7,
0xf0, 0x0f, 0xf8, 0x01, 0xbc, 0xf1, 0xc8, 0xaf, 0xe0, 0x3f, 0x20, 0xa1, 0xb9, 0xac, 0x3d, 0xde,
0xf5, 0x6e, 0x4b, 0xc4, 0x03, 0x6f, 0x9e, 0x73, 0xbe, 0x39, 0xf7, 0x73, 0xe6, 0x18, 0xd0, 0x88,
0x9c, 0xe3, 0x33, 0xc2, 0xdc, 0x24, 0x8a, 0x82, 0xdd, 0x38, 0x89, 0x58, 0x84, 0x96, 0x14, 0xcd,
0xda, 0x98, 0x30, 0x83, 0xc8, 0xc7, 0x23, 0x2a, 0xd9, 0x39, 0x15, 0x9f, 0x26, 0x98, 0x4e, 0xa8,
0x57, 0x27, 0x54, 0xef, 0x14, 0x87, 0xcc, 0xf5, 0x09, 0x8d, 0x3d, 0x36, 0x7c, 0x2e, 0xb9, 0xf6,
0xdf, 0x35, 0xe8, 0xdc, 0x4f, 0xb0, 0xc7, 0xb0, 0x13, 0x45, 0x81, 0x83, 0x7f, 0x4a, 0x31, 0x65,
0x08, 0x41, 0x3d, 0xf4, 0x02, 0x6c, 0x56, 0xb6, 0x2b, 0x5d, 0xc3, 0x11, 0xdf, 0xe8, 0x2d, 0x68,
0x73, 0x53, 0xdc, 0x38, 0xc1, 0x14, 0x33, 0x73, 0x59, 0xb0, 0x80, 0x93, 0xfa, 0x82, 0x82, 0x76,
0x60, 0x05, 0x07, 0x31, 0x1b, 0xbb, 0x8c, 0x04, 0x38, 0x4a, 0x99, 0x59, 0xdd, 0xae, 0x74, 0x57,
0x9c, 0x65, 0x41, 0x7c, 0x2a, 0x69, 0xe8, 0x16, 0x74, 0x7c, 0x1c, 0x7b, 0x09, 0x4b, 0x13, 0x9c,
0x01, 0x41, 0x00, 0xd7, 0x33, 0xc6, 0x04, 0x7c, 0x13, 0xd6, 0x03, 0xef, 0x85, 0xcb, 0xa9, 0x64,
0x48, 0x62, 0x2f, 0x64, 0xd4, 0xac, 0x09, 0xec, 0x5a, 0xe0, 0xbd, 0xe8, 0x6b, 0x64, 0x74, 0x05,
0x96, 0xc2, 0xc8, 0xc7, 0x2e, 0xf1, 0xcd, 0xba, 0xb0, 0xac, 0xc9, 0x8f, 0xc7, 0x3e, 0xb2, 0xa0,
0x15, 0x60, 0xe6, 0xf9, 0x1e, 0xf3, 0xcc, 0x86, 0xe0, 0x64, 0x67, 0x74, 0x0b, 0x9a, 0x32, 0x54,
0x66, 0x73, 0xbb, 0xd2, 0x6d, 0xf7, 0x2e, 0xed, 0xaa, 0x58, 0xed, 0xf2, 0x60, 0x1c, 0x09, 0x96,
0xa3, 0x20, 0xe8, 0x3d, 0xe8, 0x04, 0x24, 0x74, 0xe3, 0x91, 0x37, 0x8e, 0x52, 0xe6, 0xfa, 0x78,
0xe4, 0x8d, 0xcd, 0x25, 0x65, 0x0d, 0x09, 0xfb, 0x92, 0x7e, 0xc8, 0xc9, 0x02, 0xcb, 0x0d, 0x2f,
0x60, 0x5b, 0xb9, 0xe5, 0x3a, 0xf6, 0x06, 0x2c, 0xd3, 0x71, 0x38, 0x74, 0x29, 0x4b, 0xb0, 0x17,
0x50, 0xd3, 0xd8, 0xae, 0x74, 0x5b, 0x4e, 0x9b, 0xd3, 0x4e, 0x24, 0x09, 0xbd, 0x03, 0xab, 0x09,
0xe6, 0xc2, 0x5c, 0x1c, 0x7a, 0x83, 0x11, 0xf6, 0xcd, 0x15, 0x01, 0x5a, 0x91, 0xd4, 0x23, 0x49,
0x44, 0x3d, 0x68, 0x8a, 0x1c, 0x53, 0x73, 0x75, 0xbb, 0xd6, 0x6d, 0xf7, 0xac, 0x82, 0x3b, 0xfb,
0x9c, 0x75, 0xa8, 0xb2, 0xef, 0x28, 0xa4, 0xfd, 0x5b, 0x05, 0x20, 0x77, 0x16, 0xdd, 0x85, 0x3a,
0xcf, 0xa8, 0x48, 0x7c, 0xbb, 0xb7, 0x53, 0x10, 0x70, 0x3f, 0x0a, 0xe2, 0x88, 0x12, 0x86, 0x55,
0x60, 0x64, 0xad, 0x38, 0xe2, 0x02, 0xfa, 0x02, 0xda, 0x5a, 0x9a, 0x44, 0x96, 0xda, 0xbd, 0xeb,
0xd9, 0xfd, 0xfd, 0x94, 0x45, 0x5a, 0xbe, 0x94, 0x04, 0xfd, 0x0a, 0xfa, 0x00, 0x9a, 0x2c, 0xf1,
0x86, 0x67, 0x54, 0xd4, 0x4d, 0xbb, 0x67, 0x16, 0x2e, 0x3f, 0xe5, 0xac, 0x49, 0x46, 0x24, 0xce,
0x7e, 0x08, 0x46, 0xe6, 0x18, 0xda, 0x03, 0x98, 0x94, 0x36, 0xa6, 0x66, 0xe5, 0x95, 0x01, 0xd0,
0xd0, 0x76, 0x17, 0xd6, 0x1f, 0x13, 0xca, 0x38, 0x68, 0xe2, 0x16, 0xda, 0x80, 0x06, 0x2f, 0x7b,
0x29, 0xca, 0x70, 0xe4, 0xc1, 0xbe, 0x07, 0x1d, 0x0d, 0x49, 0xe3, 0x28, 0xa4, 0x18, 0xed, 0x40,
0x83, 0xc7, 0x60, 0xa2, 0x75, 0xa5, 0xa0, 0xd5, 0x91, 0x3c, 0xfb, 0x5d, 0xe8, 0x1c, 0xe2, 0x11,
0x9e, 0xe9, 0xb3, 0x2c, 0xdc, 0x86, 0x8c, 0xa4, 0xbd, 0x01, 0x48, 0x07, 0x4a, 0x1d, 0xf6, 0x6d,
0xb8, 0xc2, 0x15, 0xeb, 0x35, 0xbf, 0x48, 0xc8, 0xb7, 0x60, 0xce, 0xc2, 0x95, 0xb9, 0x9f, 0xc0,
0x72, 0xa1, 0xa3, 0xa4, 0xd5, 0x79, 0xb8, 0xb5, 0x4b, 0xc7, 0xe1, 0xb3, 0xc8, 0x29, 0xa0, 0xed,
0x63, 0xb8, 0xc2, 0x0d, 0xd3, 0x41, 0x3e, 0x0e, 0x19, 0x61, 0xe3, 0x32, 0x43, 0x78, 0xfb, 0x11,
0xc5, 0x17, 0x79, 0x35, 0x9c, 0xec, 0x6c, 0x6f, 0xc1, 0xa6, 0x83, 0x83, 0xe8, 0x1c, 0x6b, 0xc2,
0x32, 0x87, 0xc7, 0xb0, 0xf1, 0x24, 0x95, 0x41, 0x10, 0xb9, 0x5f, 0xe0, 0xed, 0x22, 0x25, 0x68,
0x0b, 0x0c, 0x51, 0x2e, 0x2e, 0x25, 0xbe, 0x28, 0x4b, 0xc3, 0x69, 0x09, 0xc2, 0x09, 0xf1, 0x79,
0x92, 0x83, 0x94, 0x61, 0x39, 0x33, 0x5a, 0x8e, 0x3c, 0xd8, 0xfb, 0x70, 0x79, 0x4a, 0xb5, 0x8a,
0x5c, 0x17, 0x1a, 0xe2, 0xaa, 0x6a, 0x0f, 0x94, 0x85, 0x4c, 0xc0, 0x44, 0xb0, 0x24, 0xc0, 0xfe,
0xa3, 0x0a, 0xe6, 0xd7, 0xb1, 0xef, 0xb1, 0xa2, 0x6f, 0x17, 0x73, 0x41, 0x1f, 0x61, 0xb5, 0xa9,
0x11, 0xf6, 0x19, 0x40, 0x8c, 0x93, 0x80, 0x50, 0x4a, 0xa2, 0x50, 0xb8, 0xa1, 0xb7, 0x9d, 0xa6,
0xbc, 0x9f, 0xa1, 0x1c, 0xed, 0x46, 0x36, 0xe9, 0x1b, 0xda, 0xa4, 0xff, 0x0a, 0xc0, 0x63, 0x2c,
0x21, 0x83, 0x94, 0x61, 0x3e, 0x1a, 0x79, 0x79, 0x7c, 0x98, 0xc9, 0x9c, 0xe7, 0xd6, 0xee, 0x7e,
0x76, 0xe7, 0x28, 0x64, 0xc9, 0xd8, 0xd1, 0x84, 0x58, 0x9f, 0xc2, 0xda, 0x14, 0x1b, 0xad, 0x43,
0xed, 0x0c, 0x8f, 0x55, 0x10, 0xf8, 0x27, 0xcf, 0xc6, 0xb9, 0x37, 0x4a, 0xb1, 0x0a, 0x80, 0x3c,
0xec, 0x55, 0xef, 0x55, 0xec, 0x3f, 0x2b, 0x60, 0x49, 0xbd, 0x27, 0xe9, 0x80, 0x0e, 0x13, 0x12,
0x33, 0x12, 0x85, 0xf4, 0xa2, 0x01, 0xbd, 0x06, 0x90, 0xd5, 0x04, 0x7f, 0x51, 0x78, 0x83, 0x1b,
0x93, 0xa2, 0xa0, 0xe8, 0x2a, 0x18, 0x54, 0xaa, 0x19, 0x60, 0x55, 0x19, 0x39, 0x01, 0x1d, 0x03,
0xd2, 0x1a, 0xc2, 0x55, 0x33, 0xab, 0x31, 0x35, 0x70, 0xb4, 0xf8, 0x88, 0xe2, 0xa0, 0x4e, 0x27,
0x9e, 0x26, 0xd9, 0xd7, 0x60, 0xab, 0xd4, 0x2b, 0xd5, 0x02, 0x2f, 0xab, 0xb0, 0x76, 0x82, 0x43,
0xff, 0xd0, 0x63, 0xde, 0x22, 0x57, 0x11, 0xd4, 0x45, 0x6d, 0x70, 0x37, 0x97, 0x1d, 0xf1, 0x8d,
0xde, 0x87, 0xfa, 0x19, 0x09, 0x65, 0xc5, 0xaf, 0x6a, 0xcd, 0xcd, 0x65, 0xf5, 0xbd, 0xe1, 0x19,
0x66, 0xbb, 0x8f, 0x48, 0xe8, 0x3b, 0x02, 0x85, 0x6e, 0xc3, 0xba, 0x8f, 0x29, 0x23, 0xa1, 0xc7,
0x2d, 0x90, 0x61, 0xa9, 0xf3, 0xb0, 0x1c, 0x54, 0xcd, 0x8a, 0xb3, 0xa6, 0xf1, 0x44, 0x80, 0x3e,
0x86, 0x37, 0x75, 0xb8, 0x8a, 0x2b, 0x51, 0xc5, 0x62, 0x38, 0x97, 0x35, 0xee, 0x71, 0xc6, 0x44,
0x9b, 0xd0, 0x60, 0x51, 0x4c, 0x86, 0xb2, 0xd8, 0xbe, 0x7c, 0xc3, 0x91, 0xc7, 0x97, 0x95, 0x8a,
0x98, 0xb6, 0x51, 0x38, 0xc4, 0xe2, 0x41, 0x5d, 0x76, 0xe4, 0xe1, 0xa0, 0x05, 0x4d, 0x57, 0x40,
0x6c, 0x04, 0xeb, 0x79, 0x24, 0x54, 0x78, 0x1e, 0xc1, 0xa6, 0x8c, 0x1e, 0x6f, 0xd4, 0x27, 0xaa,
0x21, 0x5e, 0x51, 0x12, 0x59, 0x1f, 0x55, 0x8b, 0x7d, 0x64, 0xff, 0x52, 0x83, 0x8e, 0x7c, 0xe4,
0xc2, 0x67, 0xe4, 0x34, 0x4d, 0x84, 0xed, 0xa5, 0x7b, 0xd0, 0xc5, 0xd7, 0x9c, 0xda, 0xbf, 0x58,
0x73, 0xea, 0xe5, 0x6b, 0x4e, 0xbe, 0xb1, 0x34, 0xfe, 0xd7, 0x1b, 0x4b, 0xbe, 0x8a, 0xc0, 0x6b,
0xaf, 0x22, 0xe7, 0xb0, 0xf9, 0x20, 0x4a, 0x7e, 0xf6, 0x12, 0xff, 0x3f, 0x98, 0x99, 0x37, 0x8b,
0x15, 0x2d, 0xee, 0xca, 0xd9, 0xa9, 0x57, 0x33, 0x37, 0xc6, 0xbe, 0x0a, 0x56, 0x99, 0x5e, 0x59,
0x65, 0xbd, 0xdf, 0x97, 0xa0, 0xcd, 0x61, 0x27, 0x38, 0x39, 0x27, 0x43, 0x8c, 0xee, 0x02, 0xe4,
0xfb, 0x32, 0xca, 0xfd, 0x9a, 0x59, 0xa2, 0xad, 0xe2, 0x1e, 0x80, 0x0e, 0xc0, 0xc8, 0x56, 0x07,
0xb4, 0x99, 0xf1, 0xa6, 0x17, 0x0f, 0xcb, 0x2a, 0x63, 0xa9, 0x07, 0xe8, 0x08, 0x20, 0xdf, 0x0d,
0x34, 0xe5, 0x33, 0x9b, 0x85, 0xb5, 0x55, 0xca, 0x53, 0x62, 0xbe, 0x91, 0xfb, 0x4e, 0xa1, 0xb2,
0xb6, 0x0b, 0x6a, 0x4b, 0xf6, 0x0c, 0xeb, 0xc6, 0x02, 0x84, 0x12, 0xfc, 0x18, 0x56, 0x1f, 0x62,
0x9d, 0xa5, 0x89, 0x9d, 0xb3, 0x35, 0x58, 0x73, 0x17, 0x0f, 0xf4, 0x1d, 0x74, 0x66, 0xf6, 0x83,
0xd7, 0x10, 0x68, 0xe7, 0x88, 0x79, 0xdb, 0x05, 0x3a, 0x01, 0xc4, 0x9f, 0xf8, 0x7e, 0x3a, 0x18,
0x11, 0xfa, 0x1c, 0xfb, 0x62, 0x20, 0xa3, 0x6b, 0xd9, 0xcd, 0xb2, 0xd5, 0xc3, 0xba, 0x3e, 0x8f,
0xad, 0x84, 0xf6, 0xa1, 0x33, 0xf3, 0x38, 0xa2, 0x1b, 0xaf, 0x7c, 0x38, 0x17, 0x44, 0xe0, 0x47,
0xb8, 0x54, 0xf2, 0x40, 0xa0, 0x9d, 0x29, 0x99, 0x65, 0x8f, 0xa2, 0xf5, 0xf6, 0x62, 0x90, 0xb2,
0xf9, 0x73, 0x68, 0x4d, 0x06, 0x2b, 0xca, 0xed, 0x98, 0x7a, 0x75, 0xac, 0xcd, 0x12, 0x8e, 0x12,
0xf0, 0x10, 0xd0, 0xec, 0x14, 0x46, 0xf6, 0x94, 0xf2, 0x92, 0x11, 0x3d, 0xdd, 0x1f, 0x3f, 0x00,
0x9a, 0x6d, 0x43, 0x4d, 0xd0, 0xdc, 0xd9, 0x60, 0xed, 0x2c, 0xc4, 0x48, 0x3b, 0x0f, 0x1e, 0x7c,
0xbf, 0x73, 0x4a, 0xd8, 0xf3, 0x74, 0xb0, 0x3b, 0x8c, 0x82, 0x3b, 0xea, 0xc2, 0x1d, 0xf1, 0x13,
0x3c, 0x8c, 0x46, 0x13, 0xc2, 0xaf, 0xd5, 0x95, 0xc7, 0xe4, 0x1c, 0x3f, 0xe2, 0xb9, 0xe0, 0xac,
0xbf, 0xaa, 0xab, 0xea, 0xbc, 0xb7, 0x27, 0x08, 0x83, 0xa6, 0xb8, 0xf2, 0xd1, 0x3f, 0x01, 0x00,
0x00, 0xff, 0xff, 0xa8, 0x0c, 0xfd, 0x0c, 0xa0, 0x0f, 0x00, 0x00,
// 1375 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xe9, 0x6e, 0xdb, 0xc6,
0x16, 0xbe, 0x5a, 0x23, 0x1d, 0x79, 0xd3, 0xc4, 0x89, 0x29, 0x3a, 0x8b, 0x42, 0xdf, 0x8b, 0xab,
0xdc, 0xdc, 0x38, 0xad, 0x8a, 0x22, 0x81, 0xd1, 0xcd, 0x8e, 0x9d, 0xd4, 0x48, 0x0c, 0xa8, 0x74,
0x8a, 0x2e, 0x40, 0xc1, 0x52, 0xe2, 0xc4, 0x19, 0x58, 0x5c, 0xca, 0x19, 0xba, 0xd1, 0xbf, 0xfe,
0xcc, 0x3b, 0xf4, 0x0d, 0xfa, 0x06, 0x7d, 0x87, 0xfe, 0xec, 0x53, 0xf4, 0x1d, 0x0a, 0x14, 0xb3,
0x88, 0x1c, 0x4a, 0x94, 0x92, 0x06, 0x2d, 0xd0, 0x7f, 0xe2, 0x39, 0xdf, 0x9c, 0x39, 0xf3, 0x9d,
0x55, 0x80, 0xc6, 0xe4, 0x02, 0x9f, 0x13, 0xe6, 0xc4, 0x61, 0xe8, 0xef, 0x46, 0x71, 0xc8, 0x42,
0x74, 0x49, 0xc9, 0xcc, 0xcd, 0xa9, 0xd2, 0x0f, 0x3d, 0x3c, 0xa6, 0x52, 0x9d, 0x49, 0xf1, 0x59,
0x8c, 0xe9, 0x54, 0x7a, 0x6d, 0x2a, 0x75, 0xcf, 0x70, 0xc0, 0x1c, 0x8f, 0xd0, 0xc8, 0x65, 0xa3,
0x17, 0x52, 0x6b, 0xfd, 0x5e, 0x81, 0xf6, 0xc3, 0x18, 0xbb, 0x0c, 0xdb, 0x61, 0xe8, 0xdb, 0xf8,
0xbb, 0x04, 0x53, 0x86, 0x10, 0x54, 0x03, 0xd7, 0xc7, 0x46, 0xa9, 0x5b, 0xea, 0x35, 0x6d, 0xf1,
0x1b, 0xdd, 0x84, 0x16, 0x77, 0xc5, 0x89, 0x62, 0x4c, 0x31, 0x33, 0x56, 0x84, 0x0a, 0xb8, 0x68,
0x20, 0x24, 0x68, 0x07, 0x56, 0xb1, 0x1f, 0xb1, 0x89, 0xc3, 0x88, 0x8f, 0xc3, 0x84, 0x19, 0xe5,
0x6e, 0xa9, 0xb7, 0x6a, 0xaf, 0x08, 0xe1, 0x33, 0x29, 0x43, 0x77, 0xa0, 0xed, 0xe1, 0xc8, 0x8d,
0x59, 0x12, 0xe3, 0x14, 0x08, 0x02, 0xb8, 0x91, 0x2a, 0xa6, 0xe0, 0xdb, 0xb0, 0xe1, 0xbb, 0x2f,
0x1d, 0x2e, 0x25, 0x23, 0x12, 0xb9, 0x01, 0xa3, 0x46, 0x45, 0x60, 0xd7, 0x7d, 0xf7, 0xe5, 0x40,
0x13, 0xa3, 0x2d, 0xb8, 0x14, 0x84, 0x1e, 0x76, 0x88, 0x67, 0x54, 0x85, 0x67, 0x75, 0xfe, 0x79,
0xec, 0x21, 0x13, 0x1a, 0x3e, 0x66, 0xae, 0xe7, 0x32, 0xd7, 0xa8, 0x09, 0x4d, 0xfa, 0x8d, 0xee,
0x40, 0x5d, 0x52, 0x65, 0xd4, 0xbb, 0xa5, 0x5e, 0xab, 0x7f, 0x79, 0x57, 0x71, 0xb5, 0xcb, 0xc9,
0x38, 0x12, 0x2a, 0x5b, 0x41, 0xd0, 0xff, 0xa0, 0xed, 0x93, 0xc0, 0x89, 0xc6, 0xee, 0x24, 0x4c,
0x98, 0xe3, 0xe1, 0xb1, 0x3b, 0x31, 0x2e, 0x29, 0x6f, 0x48, 0x30, 0x90, 0xf2, 0x43, 0x2e, 0x16,
0x58, 0xee, 0x78, 0x0e, 0xdb, 0xc8, 0x3c, 0xd7, 0xb1, 0xb7, 0x60, 0x85, 0x4e, 0x82, 0x91, 0x43,
0x59, 0x8c, 0x5d, 0x9f, 0x1a, 0xcd, 0x6e, 0xa9, 0xd7, 0xb0, 0x5b, 0x5c, 0x76, 0x2a, 0x45, 0xe8,
0x3f, 0xb0, 0x16, 0x63, 0x6e, 0xcc, 0xc1, 0x81, 0x3b, 0x1c, 0x63, 0xcf, 0x58, 0x15, 0xa0, 0x55,
0x29, 0x3d, 0x92, 0x42, 0xd4, 0x87, 0xba, 0x88, 0x31, 0x35, 0xd6, 0xba, 0x95, 0x5e, 0xab, 0x6f,
0xe6, 0x9e, 0xb3, 0xcf, 0x55, 0x87, 0x2a, 0xfa, 0xb6, 0x42, 0x5a, 0x3f, 0x97, 0x00, 0xb2, 0xc7,
0xa2, 0xfb, 0x50, 0xe5, 0x11, 0x15, 0x81, 0x6f, 0xf5, 0x77, 0x72, 0x06, 0x1e, 0x86, 0x7e, 0x14,
0x52, 0xc2, 0xb0, 0x22, 0x46, 0xe6, 0x8a, 0x2d, 0x0e, 0xa0, 0x4f, 0xa0, 0xa5, 0x85, 0x49, 0x44,
0xa9, 0xd5, 0xbf, 0x91, 0x9e, 0xdf, 0x4f, 0x58, 0xa8, 0xc5, 0x4b, 0x59, 0xd0, 0x8f, 0xa0, 0x77,
0xa0, 0xce, 0x62, 0x77, 0x74, 0x4e, 0x45, 0xde, 0xb4, 0xfa, 0x46, 0xee, 0xf0, 0x33, 0xae, 0x9a,
0x46, 0x44, 0xe2, 0xac, 0xc7, 0xd0, 0x4c, 0x1f, 0x86, 0xf6, 0x00, 0xa6, 0xa9, 0x8d, 0xa9, 0x51,
0x7a, 0x2d, 0x01, 0x1a, 0xda, 0xea, 0xc1, 0xc6, 0x53, 0x42, 0x19, 0x07, 0x4d, 0x9f, 0x85, 0x36,
0xa1, 0xc6, 0xd3, 0x5e, 0x9a, 0x6a, 0xda, 0xf2, 0xc3, 0x7a, 0x00, 0x6d, 0x0d, 0x49, 0xa3, 0x30,
0xa0, 0x18, 0xed, 0x40, 0x8d, 0x73, 0x30, 0xbd, 0x75, 0x35, 0x77, 0xab, 0x2d, 0x75, 0xd6, 0x7f,
0xa1, 0x7d, 0x88, 0xc7, 0x78, 0xae, 0xce, 0x52, 0xba, 0x9b, 0x92, 0x49, 0x6b, 0x13, 0x90, 0x0e,
0x94, 0x77, 0x58, 0x77, 0x61, 0x8b, 0x5f, 0xac, 0xe7, 0xfc, 0x32, 0x23, 0x5f, 0x82, 0x31, 0x0f,
0x57, 0xee, 0x7e, 0x00, 0x2b, 0xb9, 0x8a, 0x92, 0x5e, 0x67, 0x74, 0x6b, 0x87, 0x8e, 0x83, 0xe7,
0xa1, 0x9d, 0x43, 0x5b, 0xc7, 0xb0, 0xc5, 0x1d, 0xd3, 0x41, 0x1e, 0x0e, 0x18, 0x61, 0x93, 0x22,
0x47, 0x78, 0xf9, 0x11, 0xa5, 0x17, 0x71, 0x6d, 0xda, 0xe9, 0xb7, 0xb5, 0x0d, 0x1d, 0x1b, 0xfb,
0xe1, 0x05, 0xd6, 0x8c, 0xa5, 0x0f, 0x9e, 0xc0, 0xe6, 0x49, 0x22, 0x49, 0x10, 0xb1, 0x5f, 0xf2,
0xda, 0x65, 0x97, 0xa0, 0x6d, 0x68, 0x8a, 0x74, 0x71, 0x28, 0xf1, 0x44, 0x5a, 0x36, 0xed, 0x86,
0x10, 0x9c, 0x12, 0x8f, 0x07, 0xd9, 0x4f, 0x18, 0x96, 0x3d, 0xa3, 0x61, 0xcb, 0x0f, 0x6b, 0x1f,
0xae, 0xcc, 0x5c, 0xad, 0x98, 0xeb, 0x41, 0x4d, 0x1c, 0x55, 0xe5, 0x81, 0x52, 0xca, 0x04, 0x4c,
0x90, 0x25, 0x01, 0xd6, 0x2f, 0x65, 0x30, 0x3e, 0x8f, 0x3c, 0x97, 0xe5, 0xdf, 0xf6, 0x76, 0x4f,
0xd0, 0x5b, 0x58, 0x65, 0xa6, 0x85, 0x7d, 0x04, 0x10, 0xe1, 0xd8, 0x27, 0x94, 0x92, 0x30, 0x10,
0xcf, 0xd0, 0xcb, 0x4e, 0xbb, 0x7c, 0x90, 0xa2, 0x6c, 0xed, 0x44, 0xda, 0xe9, 0x6b, 0x5a, 0xa7,
0xff, 0x0c, 0xc0, 0x65, 0x2c, 0x26, 0xc3, 0x84, 0x61, 0xde, 0x1a, 0x79, 0x7a, 0xbc, 0x9b, 0xda,
0x5c, 0xf4, 0xac, 0xdd, 0xfd, 0xf4, 0xcc, 0x51, 0xc0, 0xe2, 0x89, 0xad, 0x19, 0x31, 0x3f, 0x84,
0xf5, 0x19, 0x35, 0xda, 0x80, 0xca, 0x39, 0x9e, 0x28, 0x12, 0xf8, 0x4f, 0x1e, 0x8d, 0x0b, 0x77,
0x9c, 0x60, 0x45, 0x80, 0xfc, 0xd8, 0x2b, 0x3f, 0x28, 0x59, 0xbf, 0x96, 0xc0, 0x94, 0xf7, 0x9e,
0x26, 0x43, 0x3a, 0x8a, 0x49, 0xc4, 0x48, 0x18, 0xd0, 0xb7, 0x25, 0xf4, 0x3a, 0x40, 0x9a, 0x13,
0x7c, 0xa2, 0xf0, 0x02, 0x6f, 0x4e, 0x93, 0x82, 0xa2, 0x6b, 0xd0, 0xa4, 0xf2, 0x9a, 0x21, 0x56,
0x99, 0x91, 0x09, 0xd0, 0x31, 0x20, 0xad, 0x20, 0x1c, 0xd5, 0xb3, 0x6a, 0x33, 0x0d, 0x47, 0xe3,
0x47, 0x24, 0x07, 0xb5, 0xdb, 0xd1, 0xac, 0xc8, 0xba, 0x0e, 0xdb, 0x85, 0xaf, 0x52, 0x25, 0xf0,
0xaa, 0x0c, 0xeb, 0xa7, 0x38, 0xf0, 0x0e, 0x5d, 0xe6, 0x2e, 0x7b, 0x2a, 0x82, 0xaa, 0xc8, 0x0d,
0xfe, 0xcc, 0x15, 0x5b, 0xfc, 0x46, 0xff, 0x87, 0xea, 0x39, 0x09, 0x64, 0xc6, 0xaf, 0x69, 0xc5,
0xcd, 0x6d, 0x0d, 0xdc, 0xd1, 0x39, 0x66, 0xbb, 0x4f, 0x48, 0xe0, 0xd9, 0x02, 0x85, 0xee, 0xc2,
0x86, 0x87, 0x29, 0x23, 0x81, 0xcb, 0x3d, 0x90, 0xb4, 0x54, 0x39, 0x2d, 0x07, 0x65, 0xa3, 0x64,
0xaf, 0x6b, 0x3a, 0x41, 0xd0, 0xfb, 0x70, 0x55, 0x87, 0x2b, 0x5e, 0x89, 0x4a, 0x96, 0xa6, 0x7d,
0x45, 0xd3, 0x1e, 0xa7, 0x4a, 0xd4, 0x81, 0x1a, 0x0b, 0x23, 0x32, 0x92, 0xc9, 0xf6, 0xe9, 0xbf,
0x6c, 0xf9, 0xf9, 0xaa, 0x54, 0x12, 0xdd, 0x36, 0x0c, 0x46, 0x58, 0x0c, 0xd4, 0x15, 0x5b, 0x7e,
0x1c, 0x34, 0xa0, 0xee, 0x08, 0x88, 0x85, 0x60, 0x23, 0x63, 0x42, 0xd1, 0xf3, 0x04, 0x3a, 0x92,
0x3d, 0x5e, 0xa8, 0x27, 0xaa, 0x20, 0x5e, 0x93, 0x12, 0x69, 0x1d, 0x95, 0xf3, 0x75, 0x64, 0xfd,
0x50, 0x81, 0xb6, 0x1c, 0x72, 0xc1, 0x73, 0x72, 0x96, 0xc4, 0xc2, 0xf7, 0xc2, 0x3d, 0xe8, 0xed,
0xd7, 0x9c, 0xca, 0x9f, 0x58, 0x73, 0xaa, 0xc5, 0x6b, 0x4e, 0xb6, 0xb1, 0xd4, 0xfe, 0xd1, 0x1b,
0x4b, 0xb6, 0x8a, 0xc0, 0x1b, 0xaf, 0x22, 0x17, 0xd0, 0x79, 0x14, 0xc6, 0xdf, 0xbb, 0xb1, 0xf7,
0x17, 0xf4, 0xcc, 0xdb, 0xf9, 0x8c, 0x16, 0x67, 0x65, 0xef, 0xd4, 0xb3, 0x99, 0x3b, 0x63, 0x5d,
0x03, 0xb3, 0xe8, 0x5e, 0x95, 0x65, 0x14, 0xae, 0x9e, 0xcc, 0x8e, 0xa8, 0xbf, 0xdd, 0xa5, 0x0e,
0x6c, 0x9d, 0x14, 0xcf, 0xc5, 0xfe, 0x8f, 0x0d, 0x68, 0x71, 0xcc, 0x29, 0x8e, 0x2f, 0xc8, 0x08,
0xa3, 0xfb, 0x00, 0xd9, 0xfe, 0x8e, 0x32, 0x9e, 0xe7, 0x96, 0x7a, 0x33, 0xbf, 0x97, 0xa0, 0x03,
0x68, 0xa6, 0xab, 0x0c, 0xea, 0xa4, 0xba, 0xd9, 0x45, 0xc8, 0x34, 0x8b, 0x54, 0x6a, 0x20, 0x1e,
0x01, 0x64, 0xbb, 0x8a, 0x76, 0xf9, 0xdc, 0xa6, 0x63, 0x6e, 0x17, 0xea, 0x94, 0x99, 0x2f, 0xe4,
0xfe, 0x95, 0xcb, 0xf4, 0x6e, 0xee, 0xda, 0x82, 0xbd, 0xc7, 0xbc, 0xb5, 0x04, 0xa1, 0x0c, 0x3f,
0x85, 0xb5, 0xc7, 0x58, 0x57, 0x69, 0x66, 0x17, 0x6c, 0x31, 0xe6, 0xc2, 0x45, 0x08, 0x7d, 0x05,
0xed, 0xb9, 0x7d, 0xe5, 0x0d, 0x0c, 0x5a, 0x19, 0x62, 0xd1, 0xb6, 0x83, 0x4e, 0x01, 0xf1, 0x95,
0x63, 0x90, 0x0c, 0xc7, 0x84, 0xbe, 0xc0, 0x9e, 0x18, 0x10, 0xe8, 0x7a, 0x7a, 0xb2, 0x68, 0x15,
0x32, 0x6f, 0x2c, 0x52, 0x2b, 0xa3, 0x03, 0x68, 0xcf, 0x0d, 0x6b, 0x74, 0xeb, 0xb5, 0x83, 0x7c,
0x09, 0x03, 0xdf, 0xc2, 0xe5, 0x82, 0x81, 0x85, 0x76, 0x66, 0x6c, 0x16, 0x0d, 0x69, 0xf3, 0xdf,
0xcb, 0x41, 0xca, 0xe7, 0x8f, 0xa1, 0x31, 0x6d, 0xf4, 0x28, 0xf3, 0x63, 0x66, 0x0a, 0x9a, 0x9d,
0x02, 0x8d, 0x32, 0xf0, 0x18, 0xd0, 0xfc, 0x54, 0x40, 0xd6, 0xcc, 0xe5, 0x05, 0x23, 0x63, 0xb6,
0x3e, 0xbe, 0x01, 0x34, 0xdf, 0x16, 0x34, 0x43, 0x0b, 0x7b, 0x95, 0xb9, 0xb3, 0x14, 0xa3, 0xfc,
0x7c, 0x06, 0xeb, 0x33, 0x25, 0x8e, 0x6e, 0x66, 0xf1, 0x2c, 0xec, 0x38, 0x66, 0x77, 0x31, 0x40,
0x5a, 0x3d, 0x78, 0xf4, 0xf5, 0xce, 0x19, 0x61, 0x2f, 0x92, 0xe1, 0xee, 0x28, 0xf4, 0xef, 0x29,
0xf4, 0x3d, 0xf1, 0x57, 0x7f, 0x14, 0x8e, 0xa7, 0x82, 0x9f, 0xca, 0xab, 0x4f, 0xc9, 0x05, 0x7e,
0xc2, 0x23, 0xcc, 0x55, 0xbf, 0x95, 0xd7, 0xd4, 0xf7, 0xde, 0x9e, 0x10, 0x0c, 0xeb, 0xe2, 0xc8,
0x7b, 0x7f, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x1c, 0x24, 0x10, 0x86, 0x10, 0x00, 0x00,
}

View File

@@ -275,7 +275,7 @@ func (x RequestResponse_Reason) Number() protoreflect.EnumNumber {
// Deprecated: Use RequestResponse_Reason.Descriptor instead.
func (RequestResponse_Reason) EnumDescriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{40, 0}
return file_livekit_rtc_proto_rawDescGZIP(), []int{41, 0}
}
type SignalRequest struct {
@@ -644,6 +644,7 @@ type SignalResponse struct {
// *SignalResponse_SubscriptionResponse
// *SignalResponse_RequestResponse
// *SignalResponse_TrackSubscribed
// *SignalResponse_RoomMoved
Message isSignalResponse_Message `protobuf_oneof:"message"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -884,6 +885,15 @@ func (x *SignalResponse) GetTrackSubscribed() *TrackSubscribed {
return nil
}
func (x *SignalResponse) GetRoomMoved() *RoomMovedResponse {
if x != nil {
if x, ok := x.Message.(*SignalResponse_RoomMoved); ok {
return x.RoomMoved
}
}
return nil
}
type isSignalResponse_Message interface {
isSignalResponse_Message()
}
@@ -999,6 +1009,11 @@ type SignalResponse_TrackSubscribed struct {
TrackSubscribed *TrackSubscribed `protobuf:"bytes,23,opt,name=track_subscribed,json=trackSubscribed,proto3,oneof"`
}
type SignalResponse_RoomMoved struct {
// notify to the participant when they have been moved to a new room
RoomMoved *RoomMovedResponse `protobuf:"bytes,24,opt,name=room_moved,json=roomMoved,proto3,oneof"`
}
func (*SignalResponse_Join) isSignalResponse_Message() {}
func (*SignalResponse_Answer) isSignalResponse_Message() {}
@@ -1043,6 +1058,8 @@ func (*SignalResponse_RequestResponse) isSignalResponse_Message() {}
func (*SignalResponse_TrackSubscribed) isSignalResponse_Message() {}
func (*SignalResponse_RoomMoved) isSignalResponse_Message() {}
type SimulcastCodec struct {
state protoimpl.MessageState `protogen:"open.v1"`
Codec string `protobuf:"bytes,1,opt,name=codec,proto3" json:"codec,omitempty"`
@@ -2971,6 +2988,76 @@ func (x *SubscriptionPermissionUpdate) GetAllowed() bool {
return false
}
type RoomMovedResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// information about the new room
Room *Room `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
// new reconnect token that can be used to reconnect to the new room
Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
Participant *ParticipantInfo `protobuf:"bytes,3,opt,name=participant,proto3" json:"participant,omitempty"`
OtherParticipants []*ParticipantInfo `protobuf:"bytes,4,rep,name=other_participants,json=otherParticipants,proto3" json:"other_participants,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RoomMovedResponse) Reset() {
*x = RoomMovedResponse{}
mi := &file_livekit_rtc_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RoomMovedResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RoomMovedResponse) ProtoMessage() {}
func (x *RoomMovedResponse) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[32]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RoomMovedResponse.ProtoReflect.Descriptor instead.
func (*RoomMovedResponse) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{32}
}
func (x *RoomMovedResponse) GetRoom() *Room {
if x != nil {
return x.Room
}
return nil
}
func (x *RoomMovedResponse) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
func (x *RoomMovedResponse) GetParticipant() *ParticipantInfo {
if x != nil {
return x.Participant
}
return nil
}
func (x *RoomMovedResponse) GetOtherParticipants() []*ParticipantInfo {
if x != nil {
return x.OtherParticipants
}
return nil
}
type SyncState struct {
state protoimpl.MessageState `protogen:"open.v1"`
// last subscribe answer before reconnecting
@@ -2987,7 +3074,7 @@ type SyncState struct {
func (x *SyncState) Reset() {
*x = SyncState{}
mi := &file_livekit_rtc_proto_msgTypes[32]
mi := &file_livekit_rtc_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2999,7 +3086,7 @@ func (x *SyncState) String() string {
func (*SyncState) ProtoMessage() {}
func (x *SyncState) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[32]
mi := &file_livekit_rtc_proto_msgTypes[33]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3012,7 +3099,7 @@ func (x *SyncState) ProtoReflect() protoreflect.Message {
// Deprecated: Use SyncState.ProtoReflect.Descriptor instead.
func (*SyncState) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{32}
return file_livekit_rtc_proto_rawDescGZIP(), []int{33}
}
func (x *SyncState) GetAnswer() *SessionDescription {
@@ -3068,7 +3155,7 @@ type DataChannelInfo struct {
func (x *DataChannelInfo) Reset() {
*x = DataChannelInfo{}
mi := &file_livekit_rtc_proto_msgTypes[33]
mi := &file_livekit_rtc_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3080,7 +3167,7 @@ func (x *DataChannelInfo) String() string {
func (*DataChannelInfo) ProtoMessage() {}
func (x *DataChannelInfo) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[33]
mi := &file_livekit_rtc_proto_msgTypes[34]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3093,7 +3180,7 @@ func (x *DataChannelInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use DataChannelInfo.ProtoReflect.Descriptor instead.
func (*DataChannelInfo) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{33}
return file_livekit_rtc_proto_rawDescGZIP(), []int{34}
}
func (x *DataChannelInfo) GetLabel() string {
@@ -3137,7 +3224,7 @@ type SimulateScenario struct {
func (x *SimulateScenario) Reset() {
*x = SimulateScenario{}
mi := &file_livekit_rtc_proto_msgTypes[34]
mi := &file_livekit_rtc_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3149,7 +3236,7 @@ func (x *SimulateScenario) String() string {
func (*SimulateScenario) ProtoMessage() {}
func (x *SimulateScenario) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[34]
mi := &file_livekit_rtc_proto_msgTypes[35]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3162,7 +3249,7 @@ func (x *SimulateScenario) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimulateScenario.ProtoReflect.Descriptor instead.
func (*SimulateScenario) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{34}
return file_livekit_rtc_proto_rawDescGZIP(), []int{35}
}
func (x *SimulateScenario) GetScenario() isSimulateScenario_Scenario {
@@ -3332,7 +3419,7 @@ type Ping struct {
func (x *Ping) Reset() {
*x = Ping{}
mi := &file_livekit_rtc_proto_msgTypes[35]
mi := &file_livekit_rtc_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3344,7 +3431,7 @@ func (x *Ping) String() string {
func (*Ping) ProtoMessage() {}
func (x *Ping) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[35]
mi := &file_livekit_rtc_proto_msgTypes[36]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3357,7 +3444,7 @@ func (x *Ping) ProtoReflect() protoreflect.Message {
// Deprecated: Use Ping.ProtoReflect.Descriptor instead.
func (*Ping) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{35}
return file_livekit_rtc_proto_rawDescGZIP(), []int{36}
}
func (x *Ping) GetTimestamp() int64 {
@@ -3385,7 +3472,7 @@ type Pong struct {
func (x *Pong) Reset() {
*x = Pong{}
mi := &file_livekit_rtc_proto_msgTypes[36]
mi := &file_livekit_rtc_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3397,7 +3484,7 @@ func (x *Pong) String() string {
func (*Pong) ProtoMessage() {}
func (x *Pong) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[36]
mi := &file_livekit_rtc_proto_msgTypes[37]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3410,7 +3497,7 @@ func (x *Pong) ProtoReflect() protoreflect.Message {
// Deprecated: Use Pong.ProtoReflect.Descriptor instead.
func (*Pong) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{36}
return file_livekit_rtc_proto_rawDescGZIP(), []int{37}
}
func (x *Pong) GetLastPingTimestamp() int64 {
@@ -3436,7 +3523,7 @@ type RegionSettings struct {
func (x *RegionSettings) Reset() {
*x = RegionSettings{}
mi := &file_livekit_rtc_proto_msgTypes[37]
mi := &file_livekit_rtc_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3448,7 +3535,7 @@ func (x *RegionSettings) String() string {
func (*RegionSettings) ProtoMessage() {}
func (x *RegionSettings) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[37]
mi := &file_livekit_rtc_proto_msgTypes[38]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3461,7 +3548,7 @@ func (x *RegionSettings) ProtoReflect() protoreflect.Message {
// Deprecated: Use RegionSettings.ProtoReflect.Descriptor instead.
func (*RegionSettings) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{37}
return file_livekit_rtc_proto_rawDescGZIP(), []int{38}
}
func (x *RegionSettings) GetRegions() []*RegionInfo {
@@ -3482,7 +3569,7 @@ type RegionInfo struct {
func (x *RegionInfo) Reset() {
*x = RegionInfo{}
mi := &file_livekit_rtc_proto_msgTypes[38]
mi := &file_livekit_rtc_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3494,7 +3581,7 @@ func (x *RegionInfo) String() string {
func (*RegionInfo) ProtoMessage() {}
func (x *RegionInfo) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[38]
mi := &file_livekit_rtc_proto_msgTypes[39]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3507,7 +3594,7 @@ func (x *RegionInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use RegionInfo.ProtoReflect.Descriptor instead.
func (*RegionInfo) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{38}
return file_livekit_rtc_proto_rawDescGZIP(), []int{39}
}
func (x *RegionInfo) GetRegion() string {
@@ -3541,7 +3628,7 @@ type SubscriptionResponse struct {
func (x *SubscriptionResponse) Reset() {
*x = SubscriptionResponse{}
mi := &file_livekit_rtc_proto_msgTypes[39]
mi := &file_livekit_rtc_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3553,7 +3640,7 @@ func (x *SubscriptionResponse) String() string {
func (*SubscriptionResponse) ProtoMessage() {}
func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[39]
mi := &file_livekit_rtc_proto_msgTypes[40]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3566,7 +3653,7 @@ func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SubscriptionResponse.ProtoReflect.Descriptor instead.
func (*SubscriptionResponse) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{39}
return file_livekit_rtc_proto_rawDescGZIP(), []int{40}
}
func (x *SubscriptionResponse) GetTrackSid() string {
@@ -3594,7 +3681,7 @@ type RequestResponse struct {
func (x *RequestResponse) Reset() {
*x = RequestResponse{}
mi := &file_livekit_rtc_proto_msgTypes[40]
mi := &file_livekit_rtc_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3606,7 +3693,7 @@ func (x *RequestResponse) String() string {
func (*RequestResponse) ProtoMessage() {}
func (x *RequestResponse) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[40]
mi := &file_livekit_rtc_proto_msgTypes[41]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3619,7 +3706,7 @@ func (x *RequestResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RequestResponse.ProtoReflect.Descriptor instead.
func (*RequestResponse) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{40}
return file_livekit_rtc_proto_rawDescGZIP(), []int{41}
}
func (x *RequestResponse) GetRequestId() uint32 {
@@ -3652,7 +3739,7 @@ type TrackSubscribed struct {
func (x *TrackSubscribed) Reset() {
*x = TrackSubscribed{}
mi := &file_livekit_rtc_proto_msgTypes[41]
mi := &file_livekit_rtc_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3664,7 +3751,7 @@ func (x *TrackSubscribed) String() string {
func (*TrackSubscribed) ProtoMessage() {}
func (x *TrackSubscribed) ProtoReflect() protoreflect.Message {
mi := &file_livekit_rtc_proto_msgTypes[41]
mi := &file_livekit_rtc_proto_msgTypes[42]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3677,7 +3764,7 @@ func (x *TrackSubscribed) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrackSubscribed.ProtoReflect.Descriptor instead.
func (*TrackSubscribed) Descriptor() ([]byte, []int) {
return file_livekit_rtc_proto_rawDescGZIP(), []int{41}
return file_livekit_rtc_proto_rawDescGZIP(), []int{42}
}
func (x *TrackSubscribed) GetTrackSid() string {
@@ -3712,7 +3799,7 @@ const file_livekit_rtc_proto_rawDesc = "" +
"\bping_req\x18\x10 \x01(\v2\r.livekit.PingH\x00R\apingReq\x12N\n" +
"\x12update_audio_track\x18\x11 \x01(\v2\x1e.livekit.UpdateLocalAudioTrackH\x00R\x10updateAudioTrack\x12N\n" +
"\x12update_video_track\x18\x12 \x01(\v2\x1e.livekit.UpdateLocalVideoTrackH\x00R\x10updateVideoTrackB\t\n" +
"\amessage\"\x97\v\n" +
"\amessage\"\xd4\v\n" +
"\x0eSignalResponse\x12+\n" +
"\x04join\x18\x01 \x01(\v2\x15.livekit.JoinResponseH\x00R\x04join\x125\n" +
"\x06answer\x18\x02 \x01(\v2\x1b.livekit.SessionDescriptionH\x00R\x06answer\x123\n" +
@@ -3737,7 +3824,9 @@ const file_livekit_rtc_proto_rawDesc = "" +
"\tpong_resp\x18\x14 \x01(\v2\r.livekit.PongH\x00R\bpongResp\x12T\n" +
"\x15subscription_response\x18\x15 \x01(\v2\x1d.livekit.SubscriptionResponseH\x00R\x14subscriptionResponse\x12E\n" +
"\x10request_response\x18\x16 \x01(\v2\x18.livekit.RequestResponseH\x00R\x0frequestResponse\x12E\n" +
"\x10track_subscribed\x18\x17 \x01(\v2\x18.livekit.TrackSubscribedH\x00R\x0ftrackSubscribedB\t\n" +
"\x10track_subscribed\x18\x17 \x01(\v2\x18.livekit.TrackSubscribedH\x00R\x0ftrackSubscribed\x12;\n" +
"\n" +
"room_moved\x18\x18 \x01(\v2\x1a.livekit.RoomMovedResponseH\x00R\troomMovedB\t\n" +
"\amessage\"8\n" +
"\x0eSimulcastCodec\x12\x14\n" +
"\x05codec\x18\x01 \x01(\tR\x05codec\x12\x10\n" +
@@ -3898,7 +3987,12 @@ const file_livekit_rtc_proto_rawDesc = "" +
"\x1cSubscriptionPermissionUpdate\x12'\n" +
"\x0fparticipant_sid\x18\x01 \x01(\tR\x0eparticipantSid\x12\x1b\n" +
"\ttrack_sid\x18\x02 \x01(\tR\btrackSid\x12\x18\n" +
"\aallowed\x18\x03 \x01(\bR\aallowed\"\xeb\x02\n" +
"\aallowed\x18\x03 \x01(\bR\aallowed\"\xd1\x01\n" +
"\x11RoomMovedResponse\x12!\n" +
"\x04room\x18\x01 \x01(\v2\r.livekit.RoomR\x04room\x12\x14\n" +
"\x05token\x18\x02 \x01(\tR\x05token\x12:\n" +
"\vparticipant\x18\x03 \x01(\v2\x18.livekit.ParticipantInfoR\vparticipant\x12G\n" +
"\x12other_participants\x18\x04 \x03(\v2\x18.livekit.ParticipantInfoR\x11otherParticipants\"\xeb\x02\n" +
"\tSyncState\x123\n" +
"\x06answer\x18\x01 \x01(\v2\x1b.livekit.SessionDescriptionR\x06answer\x12?\n" +
"\fsubscription\x18\x02 \x01(\v2\x1b.livekit.UpdateSubscriptionR\fsubscription\x12F\n" +
@@ -3977,7 +4071,7 @@ func file_livekit_rtc_proto_rawDescGZIP() []byte {
}
var file_livekit_rtc_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_livekit_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 43)
var file_livekit_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
var file_livekit_rtc_proto_goTypes = []any{
(SignalTarget)(0), // 0: livekit.SignalTarget
(StreamState)(0), // 1: livekit.StreamState
@@ -4016,35 +4110,36 @@ var file_livekit_rtc_proto_goTypes = []any{
(*TrackPermission)(nil), // 34: livekit.TrackPermission
(*SubscriptionPermission)(nil), // 35: livekit.SubscriptionPermission
(*SubscriptionPermissionUpdate)(nil), // 36: livekit.SubscriptionPermissionUpdate
(*SyncState)(nil), // 37: livekit.SyncState
(*DataChannelInfo)(nil), // 38: livekit.DataChannelInfo
(*SimulateScenario)(nil), // 39: livekit.SimulateScenario
(*Ping)(nil), // 40: livekit.Ping
(*Pong)(nil), // 41: livekit.Pong
(*RegionSettings)(nil), // 42: livekit.RegionSettings
(*RegionInfo)(nil), // 43: livekit.RegionInfo
(*SubscriptionResponse)(nil), // 44: livekit.SubscriptionResponse
(*RequestResponse)(nil), // 45: livekit.RequestResponse
(*TrackSubscribed)(nil), // 46: livekit.TrackSubscribed
nil, // 47: livekit.UpdateParticipantMetadata.AttributesEntry
(TrackType)(0), // 48: livekit.TrackType
(TrackSource)(0), // 49: livekit.TrackSource
(*VideoLayer)(nil), // 50: livekit.VideoLayer
(Encryption_Type)(0), // 51: livekit.Encryption.Type
(BackupCodecPolicy)(0), // 52: livekit.BackupCodecPolicy
(AudioTrackFeature)(0), // 53: livekit.AudioTrackFeature
(*Room)(nil), // 54: livekit.Room
(*ParticipantInfo)(nil), // 55: livekit.ParticipantInfo
(*ClientConfiguration)(nil), // 56: livekit.ClientConfiguration
(*ServerInfo)(nil), // 57: livekit.ServerInfo
(*Codec)(nil), // 58: livekit.Codec
(*TrackInfo)(nil), // 59: livekit.TrackInfo
(*ParticipantTracks)(nil), // 60: livekit.ParticipantTracks
(VideoQuality)(0), // 61: livekit.VideoQuality
(DisconnectReason)(0), // 62: livekit.DisconnectReason
(*SpeakerInfo)(nil), // 63: livekit.SpeakerInfo
(ConnectionQuality)(0), // 64: livekit.ConnectionQuality
(SubscriptionError)(0), // 65: livekit.SubscriptionError
(*RoomMovedResponse)(nil), // 37: livekit.RoomMovedResponse
(*SyncState)(nil), // 38: livekit.SyncState
(*DataChannelInfo)(nil), // 39: livekit.DataChannelInfo
(*SimulateScenario)(nil), // 40: livekit.SimulateScenario
(*Ping)(nil), // 41: livekit.Ping
(*Pong)(nil), // 42: livekit.Pong
(*RegionSettings)(nil), // 43: livekit.RegionSettings
(*RegionInfo)(nil), // 44: livekit.RegionInfo
(*SubscriptionResponse)(nil), // 45: livekit.SubscriptionResponse
(*RequestResponse)(nil), // 46: livekit.RequestResponse
(*TrackSubscribed)(nil), // 47: livekit.TrackSubscribed
nil, // 48: livekit.UpdateParticipantMetadata.AttributesEntry
(TrackType)(0), // 49: livekit.TrackType
(TrackSource)(0), // 50: livekit.TrackSource
(*VideoLayer)(nil), // 51: livekit.VideoLayer
(Encryption_Type)(0), // 52: livekit.Encryption.Type
(BackupCodecPolicy)(0), // 53: livekit.BackupCodecPolicy
(AudioTrackFeature)(0), // 54: livekit.AudioTrackFeature
(*Room)(nil), // 55: livekit.Room
(*ParticipantInfo)(nil), // 56: livekit.ParticipantInfo
(*ClientConfiguration)(nil), // 57: livekit.ClientConfiguration
(*ServerInfo)(nil), // 58: livekit.ServerInfo
(*Codec)(nil), // 59: livekit.Codec
(*TrackInfo)(nil), // 60: livekit.TrackInfo
(*ParticipantTracks)(nil), // 61: livekit.ParticipantTracks
(VideoQuality)(0), // 62: livekit.VideoQuality
(DisconnectReason)(0), // 63: livekit.DisconnectReason
(*SpeakerInfo)(nil), // 64: livekit.SpeakerInfo
(ConnectionQuality)(0), // 65: livekit.ConnectionQuality
(SubscriptionError)(0), // 66: livekit.SubscriptionError
}
var file_livekit_rtc_proto_depIdxs = []int32{
15, // 0: livekit.SignalRequest.offer:type_name -> livekit.SessionDescription
@@ -4057,10 +4152,10 @@ var file_livekit_rtc_proto_depIdxs = []int32{
21, // 7: livekit.SignalRequest.leave:type_name -> livekit.LeaveRequest
22, // 8: livekit.SignalRequest.update_layers:type_name -> livekit.UpdateVideoLayers
35, // 9: livekit.SignalRequest.subscription_permission:type_name -> livekit.SubscriptionPermission
37, // 10: livekit.SignalRequest.sync_state:type_name -> livekit.SyncState
39, // 11: livekit.SignalRequest.simulate:type_name -> livekit.SimulateScenario
38, // 10: livekit.SignalRequest.sync_state:type_name -> livekit.SyncState
40, // 11: livekit.SignalRequest.simulate:type_name -> livekit.SimulateScenario
23, // 12: livekit.SignalRequest.update_metadata:type_name -> livekit.UpdateParticipantMetadata
40, // 13: livekit.SignalRequest.ping_req:type_name -> livekit.Ping
41, // 13: livekit.SignalRequest.ping_req:type_name -> livekit.Ping
19, // 14: livekit.SignalRequest.update_audio_track:type_name -> livekit.UpdateLocalAudioTrack
20, // 15: livekit.SignalRequest.update_video_track:type_name -> livekit.UpdateLocalVideoTrack
11, // 16: livekit.SignalResponse.join:type_name -> livekit.JoinResponse
@@ -4079,63 +4174,67 @@ var file_livekit_rtc_proto_depIdxs = []int32{
36, // 29: livekit.SignalResponse.subscription_permission_update:type_name -> livekit.SubscriptionPermissionUpdate
14, // 30: livekit.SignalResponse.track_unpublished:type_name -> livekit.TrackUnpublishedResponse
12, // 31: livekit.SignalResponse.reconnect:type_name -> livekit.ReconnectResponse
41, // 32: livekit.SignalResponse.pong_resp:type_name -> livekit.Pong
44, // 33: livekit.SignalResponse.subscription_response:type_name -> livekit.SubscriptionResponse
45, // 34: livekit.SignalResponse.request_response:type_name -> livekit.RequestResponse
46, // 35: livekit.SignalResponse.track_subscribed:type_name -> livekit.TrackSubscribed
48, // 36: livekit.AddTrackRequest.type:type_name -> livekit.TrackType
49, // 37: livekit.AddTrackRequest.source:type_name -> livekit.TrackSource
50, // 38: livekit.AddTrackRequest.layers:type_name -> livekit.VideoLayer
7, // 39: livekit.AddTrackRequest.simulcast_codecs:type_name -> livekit.SimulcastCodec
51, // 40: livekit.AddTrackRequest.encryption:type_name -> livekit.Encryption.Type
52, // 41: livekit.AddTrackRequest.backup_codec_policy:type_name -> livekit.BackupCodecPolicy
53, // 42: livekit.AddTrackRequest.audio_features:type_name -> livekit.AudioTrackFeature
0, // 43: livekit.TrickleRequest.target:type_name -> livekit.SignalTarget
54, // 44: livekit.JoinResponse.room:type_name -> livekit.Room
55, // 45: livekit.JoinResponse.participant:type_name -> livekit.ParticipantInfo
55, // 46: livekit.JoinResponse.other_participants:type_name -> livekit.ParticipantInfo
24, // 47: livekit.JoinResponse.ice_servers:type_name -> livekit.ICEServer
56, // 48: livekit.JoinResponse.client_configuration:type_name -> livekit.ClientConfiguration
57, // 49: livekit.JoinResponse.server_info:type_name -> livekit.ServerInfo
58, // 50: livekit.JoinResponse.enabled_publish_codecs:type_name -> livekit.Codec
24, // 51: livekit.ReconnectResponse.ice_servers:type_name -> livekit.ICEServer
56, // 52: livekit.ReconnectResponse.client_configuration:type_name -> livekit.ClientConfiguration
59, // 53: livekit.TrackPublishedResponse.track:type_name -> livekit.TrackInfo
55, // 54: livekit.ParticipantUpdate.participants:type_name -> livekit.ParticipantInfo
60, // 55: livekit.UpdateSubscription.participant_tracks:type_name -> livekit.ParticipantTracks
61, // 56: livekit.UpdateTrackSettings.quality:type_name -> livekit.VideoQuality
53, // 57: livekit.UpdateLocalAudioTrack.features:type_name -> livekit.AudioTrackFeature
62, // 58: livekit.LeaveRequest.reason:type_name -> livekit.DisconnectReason
3, // 59: livekit.LeaveRequest.action:type_name -> livekit.LeaveRequest.Action
42, // 60: livekit.LeaveRequest.regions:type_name -> livekit.RegionSettings
50, // 61: livekit.UpdateVideoLayers.layers:type_name -> livekit.VideoLayer
47, // 62: livekit.UpdateParticipantMetadata.attributes:type_name -> livekit.UpdateParticipantMetadata.AttributesEntry
63, // 63: livekit.SpeakersChanged.speakers:type_name -> livekit.SpeakerInfo
54, // 64: livekit.RoomUpdate.room:type_name -> livekit.Room
64, // 65: livekit.ConnectionQualityInfo.quality:type_name -> livekit.ConnectionQuality
27, // 66: livekit.ConnectionQualityUpdate.updates:type_name -> livekit.ConnectionQualityInfo
1, // 67: livekit.StreamStateInfo.state:type_name -> livekit.StreamState
29, // 68: livekit.StreamStateUpdate.stream_states:type_name -> livekit.StreamStateInfo
61, // 69: livekit.SubscribedQuality.quality:type_name -> livekit.VideoQuality
31, // 70: livekit.SubscribedCodec.qualities:type_name -> livekit.SubscribedQuality
31, // 71: livekit.SubscribedQualityUpdate.subscribed_qualities:type_name -> livekit.SubscribedQuality
32, // 72: livekit.SubscribedQualityUpdate.subscribed_codecs:type_name -> livekit.SubscribedCodec
34, // 73: livekit.SubscriptionPermission.track_permissions:type_name -> livekit.TrackPermission
15, // 74: livekit.SyncState.answer:type_name -> livekit.SessionDescription
17, // 75: livekit.SyncState.subscription:type_name -> livekit.UpdateSubscription
13, // 76: livekit.SyncState.publish_tracks:type_name -> livekit.TrackPublishedResponse
38, // 77: livekit.SyncState.data_channels:type_name -> livekit.DataChannelInfo
15, // 78: livekit.SyncState.offer:type_name -> livekit.SessionDescription
0, // 79: livekit.DataChannelInfo.target:type_name -> livekit.SignalTarget
2, // 80: livekit.SimulateScenario.switch_candidate_protocol:type_name -> livekit.CandidateProtocol
43, // 81: livekit.RegionSettings.regions:type_name -> livekit.RegionInfo
65, // 82: livekit.SubscriptionResponse.err:type_name -> livekit.SubscriptionError
4, // 83: livekit.RequestResponse.reason:type_name -> livekit.RequestResponse.Reason
84, // [84:84] is the sub-list for method output_type
84, // [84:84] is the sub-list for method input_type
84, // [84:84] is the sub-list for extension type_name
84, // [84:84] is the sub-list for extension extendee
0, // [0:84] is the sub-list for field type_name
42, // 32: livekit.SignalResponse.pong_resp:type_name -> livekit.Pong
45, // 33: livekit.SignalResponse.subscription_response:type_name -> livekit.SubscriptionResponse
46, // 34: livekit.SignalResponse.request_response:type_name -> livekit.RequestResponse
47, // 35: livekit.SignalResponse.track_subscribed:type_name -> livekit.TrackSubscribed
37, // 36: livekit.SignalResponse.room_moved:type_name -> livekit.RoomMovedResponse
49, // 37: livekit.AddTrackRequest.type:type_name -> livekit.TrackType
50, // 38: livekit.AddTrackRequest.source:type_name -> livekit.TrackSource
51, // 39: livekit.AddTrackRequest.layers:type_name -> livekit.VideoLayer
7, // 40: livekit.AddTrackRequest.simulcast_codecs:type_name -> livekit.SimulcastCodec
52, // 41: livekit.AddTrackRequest.encryption:type_name -> livekit.Encryption.Type
53, // 42: livekit.AddTrackRequest.backup_codec_policy:type_name -> livekit.BackupCodecPolicy
54, // 43: livekit.AddTrackRequest.audio_features:type_name -> livekit.AudioTrackFeature
0, // 44: livekit.TrickleRequest.target:type_name -> livekit.SignalTarget
55, // 45: livekit.JoinResponse.room:type_name -> livekit.Room
56, // 46: livekit.JoinResponse.participant:type_name -> livekit.ParticipantInfo
56, // 47: livekit.JoinResponse.other_participants:type_name -> livekit.ParticipantInfo
24, // 48: livekit.JoinResponse.ice_servers:type_name -> livekit.ICEServer
57, // 49: livekit.JoinResponse.client_configuration:type_name -> livekit.ClientConfiguration
58, // 50: livekit.JoinResponse.server_info:type_name -> livekit.ServerInfo
59, // 51: livekit.JoinResponse.enabled_publish_codecs:type_name -> livekit.Codec
24, // 52: livekit.ReconnectResponse.ice_servers:type_name -> livekit.ICEServer
57, // 53: livekit.ReconnectResponse.client_configuration:type_name -> livekit.ClientConfiguration
60, // 54: livekit.TrackPublishedResponse.track:type_name -> livekit.TrackInfo
56, // 55: livekit.ParticipantUpdate.participants:type_name -> livekit.ParticipantInfo
61, // 56: livekit.UpdateSubscription.participant_tracks:type_name -> livekit.ParticipantTracks
62, // 57: livekit.UpdateTrackSettings.quality:type_name -> livekit.VideoQuality
54, // 58: livekit.UpdateLocalAudioTrack.features:type_name -> livekit.AudioTrackFeature
63, // 59: livekit.LeaveRequest.reason:type_name -> livekit.DisconnectReason
3, // 60: livekit.LeaveRequest.action:type_name -> livekit.LeaveRequest.Action
43, // 61: livekit.LeaveRequest.regions:type_name -> livekit.RegionSettings
51, // 62: livekit.UpdateVideoLayers.layers:type_name -> livekit.VideoLayer
48, // 63: livekit.UpdateParticipantMetadata.attributes:type_name -> livekit.UpdateParticipantMetadata.AttributesEntry
64, // 64: livekit.SpeakersChanged.speakers:type_name -> livekit.SpeakerInfo
55, // 65: livekit.RoomUpdate.room:type_name -> livekit.Room
65, // 66: livekit.ConnectionQualityInfo.quality:type_name -> livekit.ConnectionQuality
27, // 67: livekit.ConnectionQualityUpdate.updates:type_name -> livekit.ConnectionQualityInfo
1, // 68: livekit.StreamStateInfo.state:type_name -> livekit.StreamState
29, // 69: livekit.StreamStateUpdate.stream_states:type_name -> livekit.StreamStateInfo
62, // 70: livekit.SubscribedQuality.quality:type_name -> livekit.VideoQuality
31, // 71: livekit.SubscribedCodec.qualities:type_name -> livekit.SubscribedQuality
31, // 72: livekit.SubscribedQualityUpdate.subscribed_qualities:type_name -> livekit.SubscribedQuality
32, // 73: livekit.SubscribedQualityUpdate.subscribed_codecs:type_name -> livekit.SubscribedCodec
34, // 74: livekit.SubscriptionPermission.track_permissions:type_name -> livekit.TrackPermission
55, // 75: livekit.RoomMovedResponse.room:type_name -> livekit.Room
56, // 76: livekit.RoomMovedResponse.participant:type_name -> livekit.ParticipantInfo
56, // 77: livekit.RoomMovedResponse.other_participants:type_name -> livekit.ParticipantInfo
15, // 78: livekit.SyncState.answer:type_name -> livekit.SessionDescription
17, // 79: livekit.SyncState.subscription:type_name -> livekit.UpdateSubscription
13, // 80: livekit.SyncState.publish_tracks:type_name -> livekit.TrackPublishedResponse
39, // 81: livekit.SyncState.data_channels:type_name -> livekit.DataChannelInfo
15, // 82: livekit.SyncState.offer:type_name -> livekit.SessionDescription
0, // 83: livekit.DataChannelInfo.target:type_name -> livekit.SignalTarget
2, // 84: livekit.SimulateScenario.switch_candidate_protocol:type_name -> livekit.CandidateProtocol
44, // 85: livekit.RegionSettings.regions:type_name -> livekit.RegionInfo
66, // 86: livekit.SubscriptionResponse.err:type_name -> livekit.SubscriptionError
4, // 87: livekit.RequestResponse.reason:type_name -> livekit.RequestResponse.Reason
88, // [88:88] is the sub-list for method output_type
88, // [88:88] is the sub-list for method input_type
88, // [88:88] is the sub-list for extension type_name
88, // [88:88] is the sub-list for extension extendee
0, // [0:88] is the sub-list for field type_name
}
func init() { file_livekit_rtc_proto_init() }
@@ -4186,8 +4285,9 @@ func file_livekit_rtc_proto_init() {
(*SignalResponse_SubscriptionResponse)(nil),
(*SignalResponse_RequestResponse)(nil),
(*SignalResponse_TrackSubscribed)(nil),
(*SignalResponse_RoomMoved)(nil),
}
file_livekit_rtc_proto_msgTypes[34].OneofWrappers = []any{
file_livekit_rtc_proto_msgTypes[35].OneofWrappers = []any{
(*SimulateScenario_SpeakerUpdate)(nil),
(*SimulateScenario_NodeFailure)(nil),
(*SimulateScenario_Migration)(nil),
@@ -4204,7 +4304,7 @@ func file_livekit_rtc_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_rtc_proto_rawDesc), len(file_livekit_rtc_proto_rawDesc)),
NumEnums: 5,
NumMessages: 43,
NumMessages: 44,
NumExtensions: 0,
NumServices: 0,
},

View File

@@ -15,11 +15,15 @@
package pionlogger
import (
"maps"
"slices"
"strings"
"github.com/pion/logging"
"github.com/livekit/protocol/logger"
"github.com/livekit/protocol/utils/options"
"github.com/livekit/protocol/utils/pointer"
)
var (
@@ -65,16 +69,50 @@ func (s *prefixSet) Match(msg string) bool {
return false
}
func NewLoggerFactory(l logger.Logger) logging.LoggerFactory {
if zl, ok := l.(logger.ZapLogger); ok {
return &zapLoggerFactory{zl}
type PrefixFilter map[string]*prefixSet
func NewPrefixFilter(prefixes map[string][]string) PrefixFilter {
p := maps.Clone(pionIgnoredPrefixes)
for scope, set := range prefixes {
if prev, ok := p[scope]; ok {
p[scope] = pointer.To(slices.Concat(*prev, prefixSet(set)))
} else {
p[scope] = pointer.To(prefixSet(set))
}
}
return &loggerFactory{l}
return p
}
type FilterFunc func(msg string) bool
type Options struct {
PrefixFilter PrefixFilter
}
type Option func(o *Options)
func WithPrefixFilter(f PrefixFilter) Option {
return func(o *Options) {
o.PrefixFilter = f
}
}
func NewLoggerFactory(l logger.Logger, opts ...Option) logging.LoggerFactory {
o := Options{
PrefixFilter: pionIgnoredPrefixes,
}
options.Apply(&o, opts)
if zl, ok := l.(logger.ZapLogger); ok {
return &zapLoggerFactory{zl, o}
}
return &loggerFactory{l, o}
}
// zapLoggerFactory implements logging.LoggerFactory interface for zap loggers
type zapLoggerFactory struct {
logger logger.ZapLogger
logger logger.ZapLogger
options Options
}
func (f *zapLoggerFactory) NewLogger(scope string) logging.LeveledLogger {
@@ -82,19 +120,20 @@ func (f *zapLoggerFactory) NewLogger(scope string) logging.LeveledLogger {
logger: f.logger,
level: f.logger.ComponentLeveler().ComponentLevel(formatComponent(scope)),
scope: scope,
ignoredPrefixes: pionIgnoredPrefixes[scope],
ignoredPrefixes: f.options.PrefixFilter[scope],
}
}
// loggerFactory implements logging.LoggerFactory interface for generic loggers
type loggerFactory struct {
logger logger.Logger
logger logger.Logger
options Options
}
func (f *loggerFactory) NewLogger(scope string) logging.LeveledLogger {
return &logAdapter{
logger: f.logger.WithComponent(formatComponent(scope)).WithCallDepth(1),
ignoredPrefixes: pionIgnoredPrefixes[scope],
ignoredPrefixes: f.options.PrefixFilter[scope],
}
}

View File

@@ -0,0 +1,32 @@
// 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 (
"testing"
"github.com/stretchr/testify/require"
)
func TestPrefixFilter(t *testing.T) {
f := NewPrefixFilter(map[string][]string{
"tcp_mux": {
"test",
},
})
require.True(t, f["tcp_mux"].Match("error closing connection"))
require.True(t, f["tcp_mux"].Match("test"))
}

View File

@@ -53,29 +53,25 @@ func TestDeferredLogger(t *testing.T) {
dc := NewDeferredValueCore(c, d)
s := zap.New(dc).Sugar()
type testLogOutput struct {
testutil.TestLogOutput
A string
B string
type testLog struct {
A, B string
}
cases := []struct {
a, b string
}{
cases := []testLog{
{"foo", "bar"},
{"baz", "qux"},
}
for _, c := range cases {
resolve("a", c.a, "b", c.b)
resolve("a", c.A, "b", c.B)
s.Infow("test")
s.Sync()
var log testLogOutput
var log testLog
require.NoError(t, ws.Unmarshal(&log))
ws.Reset()
require.Equal(t, c.a, log.A)
require.Equal(t, c.b, log.B)
require.Equal(t, c.A, log.A)
require.Equal(t, c.B, log.B)
}
})
}

View File

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

View File

@@ -1,5 +1,17 @@
# @livekit/protocol
## 1.38.0
### Minor Changes
- feat: MoveParticipant API - [#1065](https://github.com/livekit/protocol/pull/1065) ([@cnderrauber](https://github.com/cnderrauber))
### Patch Changes
- fix memory path for cgroups v2 - [#1060](https://github.com/livekit/protocol/pull/1060) ([@boks1971](https://github.com/boks1971))
- Fix paths and simplify. - [#1062](https://github.com/livekit/protocol/pull/1062) ([@boks1971](https://github.com/boks1971))
## 1.37.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@livekit/protocol",
"version": "1.37.1",
"version": "1.38.0",
"description": "",
"type": "module",
"require": "dist/index.cjs",

View File

@@ -61,10 +61,17 @@ service RoomService {
// Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin`
rpc UpdateRoomMetadata (UpdateRoomMetadataRequest) returns (Room);
// Forward a participant's track(s) to another room. Requires `roomAdmin` and `destinationRoom`. The forwarding will
// Cloud-only
// a connected participant's track(s) to another room. Requires `roomAdmin` and `destinationRoom`. The forwarding will
// stop when the participant leaves the room or `RemoveParticipant` has been called in the destination room.
// A participant can be forwarded to multiple rooms. The destination room will be created if it does not exist.
rpc ForwardParticipant(ForwardParticipantRequest) returns (ForwardParticipantResponse);
// Cloud-only
// Move a connected participant to a different room. Requires `roomAdmin` and `destinationRoom`.
// The participant will be removed from the current room and added to the destination room.
// From the other observers' perspective, the participant would've disconnected from the previous room and joined the new one.
rpc MoveParticipant(MoveParticipantRequest) returns (MoveParticipantResponse);
}
message CreateRoomRequest {
@@ -245,3 +252,15 @@ message ForwardParticipantRequest {
message ForwardParticipantResponse {
}
message MoveParticipantRequest {
// room to move participant from
string room = 1;
// identity of the participant to move to
string identity = 2;
// room to move participant to
string destination_room = 3;
}
message MoveParticipantResponse {
}

View File

@@ -105,6 +105,8 @@ message SignalResponse {
RequestResponse request_response = 22;
// notify to the publisher when a published track has been subscribed for the first time
TrackSubscribed track_subscribed = 23;
// notify to the participant when they have been moved to a new room
RoomMovedResponse room_moved = 24;
}
}
@@ -359,6 +361,15 @@ message SubscriptionPermissionUpdate {
bool allowed = 3;
}
message RoomMovedResponse {
// information about the new room
Room room = 1;
// new reconnect token that can be used to reconnect to the new room
string token = 2;
ParticipantInfo participant = 3;
repeated ParticipantInfo other_participants = 4;
}
message SyncState {
// last subscribe answer before reconnecting
SessionDescription answer = 1;

View File

@@ -73,4 +73,14 @@ service Participant {
};
};
};
rpc MoveParticipant(livekit.MoveParticipantRequest) returns (livekit.MoveParticipantResponse) {
option (psrpc.options) = {
topics: true
topic_params: {
group: "participant"
names: ["participant"]
typed: true
};
};
};
}

View File

@@ -40,7 +40,7 @@ var File_rpc_participant_proto protoreflect.FileDescriptor
const file_rpc_participant_proto_rawDesc = "" +
"\n" +
"\x15rpc/participant.proto\x12\x03rpc\x1a\roptions.proto\x1a\x14livekit_models.proto\x1a\x12livekit_room.proto2\x90\x05\n" +
"\x15rpc/participant.proto\x12\x03rpc\x1a\roptions.proto\x1a\x14livekit_models.proto\x1a\x12livekit_room.proto2\x8c\x06\n" +
"\vParticipant\x12\x7f\n" +
"\x11RemoveParticipant\x12 .livekit.RoomParticipantIdentity\x1a\".livekit.RemoveParticipantResponse\"$\xb2\x89\x01 \x10\x01\x1a\x1c\n" +
"\vparticipant\x12\vparticipant\x18\x01\x12y\n" +
@@ -51,6 +51,8 @@ const file_rpc_participant_proto_rawDesc = "" +
"\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\"$\xb2\x89\x01 \x10\x01\x1a\x1c\n" +
"\vparticipant\x12\vparticipant\x18\x01\x12\x83\x01\n" +
"\x12ForwardParticipant\x12\".livekit.ForwardParticipantRequest\x1a#.livekit.ForwardParticipantResponse\"$\xb2\x89\x01 \x10\x01\x1a\x1c\n" +
"\vparticipant\x12\vparticipant\x18\x01\x12z\n" +
"\x0fMoveParticipant\x12\x1f.livekit.MoveParticipantRequest\x1a .livekit.MoveParticipantResponse\"$\xb2\x89\x01 \x10\x01\x1a\x1c\n" +
"\vparticipant\x12\vparticipant\x18\x01B!Z\x1fgithub.com/livekit/protocol/rpcb\x06proto3"
var file_rpc_participant_proto_goTypes = []any{
@@ -59,28 +61,32 @@ var file_rpc_participant_proto_goTypes = []any{
(*livekit.UpdateParticipantRequest)(nil), // 2: livekit.UpdateParticipantRequest
(*livekit.UpdateSubscriptionsRequest)(nil), // 3: livekit.UpdateSubscriptionsRequest
(*livekit.ForwardParticipantRequest)(nil), // 4: livekit.ForwardParticipantRequest
(*livekit.RemoveParticipantResponse)(nil), // 5: livekit.RemoveParticipantResponse
(*livekit.MuteRoomTrackResponse)(nil), // 6: livekit.MuteRoomTrackResponse
(*livekit.ParticipantInfo)(nil), // 7: livekit.ParticipantInfo
(*livekit.UpdateSubscriptionsResponse)(nil), // 8: livekit.UpdateSubscriptionsResponse
(*livekit.ForwardParticipantResponse)(nil), // 9: livekit.ForwardParticipantResponse
(*livekit.MoveParticipantRequest)(nil), // 5: livekit.MoveParticipantRequest
(*livekit.RemoveParticipantResponse)(nil), // 6: livekit.RemoveParticipantResponse
(*livekit.MuteRoomTrackResponse)(nil), // 7: livekit.MuteRoomTrackResponse
(*livekit.ParticipantInfo)(nil), // 8: livekit.ParticipantInfo
(*livekit.UpdateSubscriptionsResponse)(nil), // 9: livekit.UpdateSubscriptionsResponse
(*livekit.ForwardParticipantResponse)(nil), // 10: livekit.ForwardParticipantResponse
(*livekit.MoveParticipantResponse)(nil), // 11: livekit.MoveParticipantResponse
}
var file_rpc_participant_proto_depIdxs = []int32{
0, // 0: rpc.Participant.RemoveParticipant:input_type -> livekit.RoomParticipantIdentity
1, // 1: rpc.Participant.MutePublishedTrack:input_type -> livekit.MuteRoomTrackRequest
2, // 2: rpc.Participant.UpdateParticipant:input_type -> livekit.UpdateParticipantRequest
3, // 3: rpc.Participant.UpdateSubscriptions:input_type -> livekit.UpdateSubscriptionsRequest
4, // 4: rpc.Participant.ForwardParticipant:input_type -> livekit.ForwardParticipantRequest
5, // 5: rpc.Participant.RemoveParticipant:output_type -> livekit.RemoveParticipantResponse
6, // 6: rpc.Participant.MutePublishedTrack:output_type -> livekit.MuteRoomTrackResponse
7, // 7: rpc.Participant.UpdateParticipant:output_type -> livekit.ParticipantInfo
8, // 8: rpc.Participant.UpdateSubscriptions:output_type -> livekit.UpdateSubscriptionsResponse
9, // 9: rpc.Participant.ForwardParticipant:output_type -> livekit.ForwardParticipantResponse
5, // [5:10] is the sub-list for method output_type
0, // [0:5] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
0, // 0: rpc.Participant.RemoveParticipant:input_type -> livekit.RoomParticipantIdentity
1, // 1: rpc.Participant.MutePublishedTrack:input_type -> livekit.MuteRoomTrackRequest
2, // 2: rpc.Participant.UpdateParticipant:input_type -> livekit.UpdateParticipantRequest
3, // 3: rpc.Participant.UpdateSubscriptions:input_type -> livekit.UpdateSubscriptionsRequest
4, // 4: rpc.Participant.ForwardParticipant:input_type -> livekit.ForwardParticipantRequest
5, // 5: rpc.Participant.MoveParticipant:input_type -> livekit.MoveParticipantRequest
6, // 6: rpc.Participant.RemoveParticipant:output_type -> livekit.RemoveParticipantResponse
7, // 7: rpc.Participant.MutePublishedTrack:output_type -> livekit.MuteRoomTrackResponse
8, // 8: rpc.Participant.UpdateParticipant:output_type -> livekit.ParticipantInfo
9, // 9: rpc.Participant.UpdateSubscriptions:output_type -> livekit.UpdateSubscriptionsResponse
10, // 10: rpc.Participant.ForwardParticipant:output_type -> livekit.ForwardParticipantResponse
11, // 11: rpc.Participant.MoveParticipant:output_type -> livekit.MoveParticipantResponse
6, // [6:12] is the sub-list for method output_type
0, // [0:6] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_rpc_participant_proto_init() }

View File

@@ -33,6 +33,8 @@ type ParticipantClient[ParticipantTopicType ~string] interface {
ForwardParticipant(ctx context.Context, participant ParticipantTopicType, req *livekit6.ForwardParticipantRequest, opts ...psrpc.RequestOption) (*livekit6.ForwardParticipantResponse, error)
MoveParticipant(ctx context.Context, participant ParticipantTopicType, req *livekit6.MoveParticipantRequest, opts ...psrpc.RequestOption) (*livekit6.MoveParticipantResponse, error)
// Close immediately, without waiting for pending RPCs
Close()
}
@@ -51,6 +53,8 @@ type ParticipantServerImpl interface {
UpdateSubscriptions(context.Context, *livekit6.UpdateSubscriptionsRequest) (*livekit6.UpdateSubscriptionsResponse, error)
ForwardParticipant(context.Context, *livekit6.ForwardParticipantRequest) (*livekit6.ForwardParticipantResponse, error)
MoveParticipant(context.Context, *livekit6.MoveParticipantRequest) (*livekit6.MoveParticipantResponse, error)
}
// ============================
@@ -68,6 +72,8 @@ type ParticipantServer[ParticipantTopicType ~string] interface {
DeregisterUpdateSubscriptionsTopic(participant ParticipantTopicType)
RegisterForwardParticipantTopic(participant ParticipantTopicType) error
DeregisterForwardParticipantTopic(participant ParticipantTopicType)
RegisterMoveParticipantTopic(participant ParticipantTopicType) error
DeregisterMoveParticipantTopic(participant ParticipantTopicType)
RegisterAllParticipantTopics(participant ParticipantTopicType) error
DeregisterAllParticipantTopics(participant ParticipantTopicType)
@@ -98,6 +104,7 @@ func NewParticipantClient[ParticipantTopicType ~string](bus psrpc.MessageBus, op
sd.RegisterMethod("UpdateParticipant", false, false, true, true)
sd.RegisterMethod("UpdateSubscriptions", false, false, true, true)
sd.RegisterMethod("ForwardParticipant", false, false, true, true)
sd.RegisterMethod("MoveParticipant", false, false, true, true)
rpcClient, err := client.NewRPCClient(sd, bus, opts...)
if err != nil {
@@ -129,6 +136,10 @@ func (c *participantClient[ParticipantTopicType]) ForwardParticipant(ctx context
return client.RequestSingle[*livekit6.ForwardParticipantResponse](ctx, c.client, "ForwardParticipant", []string{string(participant)}, req, opts...)
}
func (c *participantClient[ParticipantTopicType]) MoveParticipant(ctx context.Context, participant ParticipantTopicType, req *livekit6.MoveParticipantRequest, opts ...psrpc.RequestOption) (*livekit6.MoveParticipantResponse, error) {
return client.RequestSingle[*livekit6.MoveParticipantResponse](ctx, c.client, "MoveParticipant", []string{string(participant)}, req, opts...)
}
func (s *participantClient[ParticipantTopicType]) Close() {
s.client.Close()
}
@@ -157,6 +168,7 @@ func NewParticipantServer[ParticipantTopicType ~string](svc ParticipantServerImp
sd.RegisterMethod("UpdateParticipant", false, false, true, true)
sd.RegisterMethod("UpdateSubscriptions", false, false, true, true)
sd.RegisterMethod("ForwardParticipant", false, false, true, true)
sd.RegisterMethod("MoveParticipant", false, false, true, true)
return &participantServer[ParticipantTopicType]{
svc: svc,
rpc: s,
@@ -203,6 +215,14 @@ func (s *participantServer[ParticipantTopicType]) DeregisterForwardParticipantTo
s.rpc.DeregisterHandler("ForwardParticipant", []string{string(participant)})
}
func (s *participantServer[ParticipantTopicType]) RegisterMoveParticipantTopic(participant ParticipantTopicType) error {
return server.RegisterHandler(s.rpc, "MoveParticipant", []string{string(participant)}, s.svc.MoveParticipant, nil)
}
func (s *participantServer[ParticipantTopicType]) DeregisterMoveParticipantTopic(participant ParticipantTopicType) {
s.rpc.DeregisterHandler("MoveParticipant", []string{string(participant)})
}
func (s *participantServer[ParticipantTopicType]) allParticipantTopicRegisterers() server.RegistererSlice {
return server.RegistererSlice{
server.NewRegisterer(s.RegisterRemoveParticipantTopic, s.DeregisterRemoveParticipantTopic),
@@ -210,6 +230,7 @@ func (s *participantServer[ParticipantTopicType]) allParticipantTopicRegisterers
server.NewRegisterer(s.RegisterUpdateParticipantTopic, s.DeregisterUpdateParticipantTopic),
server.NewRegisterer(s.RegisterUpdateSubscriptionsTopic, s.DeregisterUpdateSubscriptionsTopic),
server.NewRegisterer(s.RegisterForwardParticipantTopic, s.DeregisterForwardParticipantTopic),
server.NewRegisterer(s.RegisterMoveParticipantTopic, s.DeregisterMoveParticipantTopic),
}
}
@@ -230,25 +251,27 @@ func (s *participantServer[ParticipantTopicType]) Kill() {
}
var psrpcFileDescriptor6 = []byte{
// 316 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0xcb, 0x4a, 0xc3, 0x40,
0x14, 0x25, 0x88, 0x2e, 0xa6, 0x08, 0x76, 0x54, 0x28, 0xc1, 0x47, 0x5f, 0xeb, 0x04, 0xf4, 0x0f,
0x5c, 0x08, 0x2e, 0x84, 0x12, 0x75, 0xe3, 0x46, 0x92, 0xc9, 0xd5, 0x0e, 0x4d, 0x72, 0xc7, 0x99,
0x9b, 0x4a, 0x57, 0x2e, 0x04, 0xc1, 0x9d, 0xdf, 0xe2, 0x17, 0x4a, 0x9b, 0x26, 0x99, 0xb6, 0x58,
0xcc, 0x72, 0xce, 0x39, 0xf7, 0x9c, 0xfb, 0x18, 0x76, 0xac, 0x95, 0xf0, 0x55, 0xa8, 0x49, 0x0a,
0xa9, 0xc2, 0x8c, 0x3c, 0xa5, 0x91, 0x90, 0xef, 0x68, 0x25, 0xdc, 0x7d, 0x54, 0x24, 0x31, 0x33,
0x05, 0xe6, 0x1e, 0x25, 0x72, 0x0a, 0x13, 0x49, 0x4f, 0x29, 0xc6, 0x90, 0x94, 0x28, 0x2f, 0x51,
0x8d, 0x98, 0x16, 0xd8, 0xc5, 0xf7, 0x2e, 0x6b, 0x8d, 0x6a, 0x4f, 0xfe, 0xce, 0xda, 0x01, 0xa4,
0x38, 0x05, 0x1b, 0xec, 0x7a, 0xcb, 0x4a, 0x2f, 0x40, 0x4c, 0x2d, 0xe6, 0x26, 0x86, 0x8c, 0x24,
0xcd, 0xdc, 0x7e, 0xad, 0x58, 0xaf, 0x0e, 0xc0, 0x28, 0xcc, 0x0c, 0xf4, 0x87, 0x3f, 0x5f, 0x4e,
0xf7, 0xc0, 0x71, 0x4f, 0x58, 0xcb, 0x9a, 0x82, 0xdb, 0x8f, 0x8e, 0xc3, 0x67, 0x8c, 0xdf, 0xe6,
0x04, 0xa3, 0x3c, 0x4a, 0xa4, 0x19, 0x43, 0x7c, 0xaf, 0x43, 0x31, 0xe1, 0xa7, 0x95, 0xff, 0x9c,
0x9c, 0x77, 0xb1, 0xc0, 0x03, 0x78, 0xcd, 0xc1, 0x90, 0x7b, 0xf6, 0x17, 0xdd, 0x28, 0x7a, 0xca,
0xda, 0x0f, 0x2a, 0x0e, 0x69, 0x65, 0xf6, 0x5e, 0x65, 0xbd, 0xc1, 0x95, 0xe9, 0x9d, 0x4a, 0x62,
0xaf, 0x26, 0x7b, 0xc6, 0x7f, 0xe6, 0x7e, 0x3a, 0xec, 0xb0, 0x30, 0xbf, 0xcb, 0x23, 0x23, 0xb4,
0x2c, 0x6e, 0xc9, 0x07, 0x6b, 0xd1, 0x2b, 0x6c, 0x19, 0x3e, 0xdc, 0x2e, 0x6a, 0xb4, 0x80, 0x0f,
0x87, 0xf1, 0x6b, 0xd4, 0x6f, 0xa1, 0x8e, 0xed, 0x15, 0xd4, 0xc7, 0xdd, 0x24, 0xcb, 0x36, 0x06,
0x5b, 0x35, 0x4d, 0xba, 0xb8, 0xea, 0x3d, 0x9e, 0xbf, 0x48, 0x1a, 0xe7, 0x91, 0x27, 0x30, 0xf5,
0x97, 0xb6, 0xfe, 0xe2, 0xbb, 0x0a, 0x4c, 0x7c, 0xad, 0x44, 0xb4, 0xb7, 0x78, 0x5d, 0xfe, 0x06,
0x00, 0x00, 0xff, 0xff, 0x09, 0x26, 0xa2, 0x60, 0x13, 0x03, 0x00, 0x00,
// 337 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x4f, 0x4b, 0xfb, 0x40,
0x10, 0x25, 0xfc, 0xa0, 0x87, 0x2d, 0x3f, 0xb4, 0xab, 0x42, 0x09, 0x6a, 0xff, 0x9e, 0x13, 0xd0,
0x6f, 0xe0, 0x41, 0xf0, 0x50, 0x28, 0x51, 0x2f, 0x5e, 0x24, 0xd9, 0xac, 0x76, 0x69, 0x92, 0x59,
0x77, 0x27, 0x95, 0x7a, 0xf1, 0x20, 0x08, 0x82, 0x9f, 0xc6, 0x4f, 0x28, 0x4d, 0x9a, 0x64, 0x9b,
0xd2, 0x62, 0x8e, 0xfb, 0xde, 0xdb, 0xf7, 0x66, 0x67, 0x66, 0xc9, 0x89, 0x92, 0xcc, 0x95, 0xbe,
0x42, 0xc1, 0x84, 0xf4, 0x13, 0x74, 0xa4, 0x02, 0x04, 0xfa, 0x4f, 0x49, 0x66, 0xff, 0x07, 0x89,
0x02, 0x12, 0x9d, 0x63, 0xf6, 0x71, 0x24, 0x16, 0x7c, 0x2e, 0xf0, 0x31, 0x86, 0x90, 0x47, 0x05,
0x4a, 0x0b, 0x54, 0x01, 0xc4, 0x39, 0x76, 0xf1, 0xdd, 0x22, 0xed, 0x69, 0xe5, 0x49, 0xdf, 0x49,
0xc7, 0xe3, 0x31, 0x2c, 0xb8, 0x09, 0xf6, 0x9d, 0xf5, 0x4d, 0xc7, 0x03, 0x88, 0x0d, 0xe6, 0x26,
0xe4, 0x09, 0x0a, 0x5c, 0xda, 0xc3, 0x4a, 0x51, 0xbf, 0xed, 0x71, 0x2d, 0x21, 0xd1, 0x7c, 0x38,
0xfe, 0xf9, 0xb2, 0xfa, 0x87, 0x96, 0x7d, 0x4a, 0xda, 0xc6, 0x2b, 0xa8, 0x79, 0xe8, 0x5a, 0x74,
0x49, 0xe8, 0x24, 0x45, 0x3e, 0x4d, 0x83, 0x48, 0xe8, 0x19, 0x0f, 0xef, 0x94, 0xcf, 0xe6, 0xf4,
0xac, 0xf4, 0x5f, 0x91, 0xab, 0x2a, 0x32, 0xdc, 0xe3, 0x2f, 0x29, 0xd7, 0x68, 0x9f, 0xef, 0xa2,
0x1b, 0x45, 0x2f, 0x48, 0xe7, 0x5e, 0x86, 0x3e, 0x6e, 0xbc, 0x7d, 0x50, 0x5a, 0x6f, 0x71, 0x45,
0x7a, 0xb7, 0x94, 0x98, 0xad, 0x49, 0x9e, 0xe0, 0x8f, 0xb9, 0x9f, 0x16, 0x39, 0xca, 0xcd, 0x6f,
0xd3, 0x40, 0x33, 0x25, 0xf2, 0x59, 0xd2, 0x51, 0x2d, 0x7a, 0x83, 0x2d, 0xc2, 0xc7, 0xfb, 0x45,
0x8d, 0x1a, 0xf0, 0x61, 0x11, 0x7a, 0x0d, 0xea, 0xd5, 0x57, 0xa1, 0xd9, 0x82, 0x6a, 0xb8, 0xdb,
0x64, 0x51, 0xc6, 0x68, 0xaf, 0xa6, 0x51, 0x15, 0x6f, 0xe4, 0x60, 0x52, 0x5b, 0xc0, 0x5e, 0x35,
0xdf, 0xfa, 0x72, 0xe5, 0xf1, 0xfd, 0xdd, 0x82, 0x26, 0xd9, 0x57, 0x83, 0x87, 0xde, 0xb3, 0xc0,
0x59, 0x1a, 0x38, 0x0c, 0x62, 0x77, 0xed, 0xe9, 0x66, 0x5f, 0x85, 0x41, 0xe4, 0x2a, 0xc9, 0x82,
0x56, 0x76, 0xba, 0xfc, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x30, 0x94, 0x6b, 0x3a, 0x8f, 0x03, 0x00,
0x00,
}

View File

@@ -31,6 +31,22 @@ type FakeTypedParticipantClient struct {
result1 *livekit.ForwardParticipantResponse
result2 error
}
MoveParticipantStub func(context.Context, rpc.ParticipantTopic, *livekit.MoveParticipantRequest, ...psrpc.RequestOption) (*livekit.MoveParticipantResponse, error)
moveParticipantMutex sync.RWMutex
moveParticipantArgsForCall []struct {
arg1 context.Context
arg2 rpc.ParticipantTopic
arg3 *livekit.MoveParticipantRequest
arg4 []psrpc.RequestOption
}
moveParticipantReturns struct {
result1 *livekit.MoveParticipantResponse
result2 error
}
moveParticipantReturnsOnCall map[int]struct {
result1 *livekit.MoveParticipantResponse
result2 error
}
MutePublishedTrackStub func(context.Context, rpc.ParticipantTopic, *livekit.MuteRoomTrackRequest, ...psrpc.RequestOption) (*livekit.MuteRoomTrackResponse, error)
mutePublishedTrackMutex sync.RWMutex
mutePublishedTrackArgsForCall []struct {
@@ -190,6 +206,73 @@ func (fake *FakeTypedParticipantClient) ForwardParticipantReturnsOnCall(i int, r
}{result1, result2}
}
func (fake *FakeTypedParticipantClient) MoveParticipant(arg1 context.Context, arg2 rpc.ParticipantTopic, arg3 *livekit.MoveParticipantRequest, arg4 ...psrpc.RequestOption) (*livekit.MoveParticipantResponse, error) {
fake.moveParticipantMutex.Lock()
ret, specificReturn := fake.moveParticipantReturnsOnCall[len(fake.moveParticipantArgsForCall)]
fake.moveParticipantArgsForCall = append(fake.moveParticipantArgsForCall, struct {
arg1 context.Context
arg2 rpc.ParticipantTopic
arg3 *livekit.MoveParticipantRequest
arg4 []psrpc.RequestOption
}{arg1, arg2, arg3, arg4})
stub := fake.MoveParticipantStub
fakeReturns := fake.moveParticipantReturns
fake.recordInvocation("MoveParticipant", []interface{}{arg1, arg2, arg3, arg4})
fake.moveParticipantMutex.Unlock()
if stub != nil {
return stub(arg1, arg2, arg3, arg4...)
}
if specificReturn {
return ret.result1, ret.result2
}
return fakeReturns.result1, fakeReturns.result2
}
func (fake *FakeTypedParticipantClient) MoveParticipantCallCount() int {
fake.moveParticipantMutex.RLock()
defer fake.moveParticipantMutex.RUnlock()
return len(fake.moveParticipantArgsForCall)
}
func (fake *FakeTypedParticipantClient) MoveParticipantCalls(stub func(context.Context, rpc.ParticipantTopic, *livekit.MoveParticipantRequest, ...psrpc.RequestOption) (*livekit.MoveParticipantResponse, error)) {
fake.moveParticipantMutex.Lock()
defer fake.moveParticipantMutex.Unlock()
fake.MoveParticipantStub = stub
}
func (fake *FakeTypedParticipantClient) MoveParticipantArgsForCall(i int) (context.Context, rpc.ParticipantTopic, *livekit.MoveParticipantRequest, []psrpc.RequestOption) {
fake.moveParticipantMutex.RLock()
defer fake.moveParticipantMutex.RUnlock()
argsForCall := fake.moveParticipantArgsForCall[i]
return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3, argsForCall.arg4
}
func (fake *FakeTypedParticipantClient) MoveParticipantReturns(result1 *livekit.MoveParticipantResponse, result2 error) {
fake.moveParticipantMutex.Lock()
defer fake.moveParticipantMutex.Unlock()
fake.MoveParticipantStub = nil
fake.moveParticipantReturns = struct {
result1 *livekit.MoveParticipantResponse
result2 error
}{result1, result2}
}
func (fake *FakeTypedParticipantClient) MoveParticipantReturnsOnCall(i int, result1 *livekit.MoveParticipantResponse, result2 error) {
fake.moveParticipantMutex.Lock()
defer fake.moveParticipantMutex.Unlock()
fake.MoveParticipantStub = nil
if fake.moveParticipantReturnsOnCall == nil {
fake.moveParticipantReturnsOnCall = make(map[int]struct {
result1 *livekit.MoveParticipantResponse
result2 error
})
}
fake.moveParticipantReturnsOnCall[i] = struct {
result1 *livekit.MoveParticipantResponse
result2 error
}{result1, result2}
}
func (fake *FakeTypedParticipantClient) MutePublishedTrack(arg1 context.Context, arg2 rpc.ParticipantTopic, arg3 *livekit.MuteRoomTrackRequest, arg4 ...psrpc.RequestOption) (*livekit.MuteRoomTrackResponse, error) {
fake.mutePublishedTrackMutex.Lock()
ret, specificReturn := fake.mutePublishedTrackReturnsOnCall[len(fake.mutePublishedTrackArgsForCall)]
@@ -465,6 +548,8 @@ func (fake *FakeTypedParticipantClient) Invocations() map[string][][]interface{}
defer fake.closeMutex.RUnlock()
fake.forwardParticipantMutex.RLock()
defer fake.forwardParticipantMutex.RUnlock()
fake.moveParticipantMutex.RLock()
defer fake.moveParticipantMutex.RUnlock()
fake.mutePublishedTrackMutex.RLock()
defer fake.mutePublishedTrackMutex.RUnlock()
fake.removeParticipantMutex.RLock()

View File

@@ -24,14 +24,11 @@ import (
)
const (
memStatsPathV1 = "/sys/fs/memory/memory.usage_in_bytes"
memStatsPathV2 = "/sys/fs/memory/memory.current"
memUsagePathV1 = "/sys/fs/cgroup/memory/memory.usage_in_bytes"
memLimitPathV1 = "/sys/fs/cgroup/memory/memory.limit_in_bytes"
memCurrentPathV2 = "/sys/fs/cgroup/memory/memory.current"
memMaxPathV2 = "/sys/fs/cgroup/memory/memory.max"
memCurrentPathV2 = "/sys/fs/cgroup/memory.current"
memMaxPathV2 = "/sys/fs/cgroup/memory.max"
)
type memInfoGetter interface {
@@ -54,8 +51,8 @@ func newPlatformMemoryGetter() (platformMemoryGetter, error) {
// probe for the cgroup version
var cg memInfoGetter
for k, v := range map[string]func(osStat *osStatMemoryGetter) memInfoGetter{
memStatsPathV1: newMemInfoGetterV1,
memStatsPathV2: newMemInfoGetterV2,
memUsagePathV1: newMemInfoGetterV1,
memCurrentPathV2: newMemInfoGetterV2,
} {
e, err := fileExists(k)
if err != nil {