diff --git a/api.go b/api.go index 1f5b774..0c0bb53 100644 --- a/api.go +++ b/api.go @@ -783,6 +783,27 @@ func (s *Server) RemoveDevice(ctx context.Context, req *pb.RequestWithId) (res * } } +func (s *Server) GetStreamAlias(ctx context.Context, req *emptypb.Empty) (res *pb.StreamAliasListResponse, err error) { + res = &pb.StreamAliasListResponse{} + s.Streams.Call(func() error { + for alias := range s.AliasStreams.Range { + info := &pb.StreamAlias{ + StreamPath: alias.StreamPath, + Alias: alias.Alias, + AutoRemove: alias.AutoRemove, + } + if s.Streams.Has(alias.Alias) { + info.Status = 2 + } else if alias.Publisher != nil { + info.Status = 1 + } + res.Data = append(res.Data, info) + } + return nil + }) + return +} + func (s *Server) SetStreamAlias(ctx context.Context, req *pb.SetStreamAliasRequest) (res *pb.SuccessResponse, err error) { res = &pb.SuccessResponse{} s.Streams.Call(func() error { diff --git a/pb/global.pb.go b/pb/global.pb.go index 07b4ad9..8e2790a 100644 --- a/pb/global.pb.go +++ b/pb/global.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.2 -// protoc v5.28.3 +// protoc-gen-go v1.28.1 +// protoc v3.19.1 // source: global.proto package pb @@ -35,9 +35,11 @@ type GetConfigRequest struct { func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} - mi := &file_global_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *GetConfigRequest) String() string { @@ -48,7 +50,7 @@ func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[0] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -83,9 +85,11 @@ type Formily struct { func (x *Formily) Reset() { *x = Formily{} - mi := &file_global_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Formily) String() string { @@ -96,7 +100,7 @@ func (*Formily) ProtoMessage() {} func (x *Formily) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[1] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -150,9 +154,11 @@ type FormilyResponse struct { func (x *FormilyResponse) Reset() { *x = FormilyResponse{} - mi := &file_global_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *FormilyResponse) String() string { @@ -163,7 +169,7 @@ func (*FormilyResponse) ProtoMessage() {} func (x *FormilyResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[2] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -204,9 +210,11 @@ type GetConfigResponse struct { func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} - mi := &file_global_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *GetConfigResponse) String() string { @@ -217,7 +225,7 @@ func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[3] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -264,9 +272,11 @@ type ModifyConfigRequest struct { func (x *ModifyConfigRequest) Reset() { *x = ModifyConfigRequest{} - mi := &file_global_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ModifyConfigRequest) String() string { @@ -277,7 +287,7 @@ func (*ModifyConfigRequest) ProtoMessage() {} func (x *ModifyConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[4] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,9 +330,11 @@ type NetWorkInfo struct { func (x *NetWorkInfo) Reset() { *x = NetWorkInfo{} - mi := &file_global_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *NetWorkInfo) String() string { @@ -333,7 +345,7 @@ func (*NetWorkInfo) ProtoMessage() {} func (x *NetWorkInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[5] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -396,9 +408,11 @@ type Usage struct { func (x *Usage) Reset() { *x = Usage{} - mi := &file_global_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Usage) String() string { @@ -409,7 +423,7 @@ func (*Usage) ProtoMessage() {} func (x *Usage) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[6] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -472,9 +486,11 @@ type SummaryResponse struct { func (x *SummaryResponse) Reset() { *x = SummaryResponse{} - mi := &file_global_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SummaryResponse) String() string { @@ -485,7 +501,7 @@ func (*SummaryResponse) ProtoMessage() {} func (x *SummaryResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[7] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -589,9 +605,11 @@ type PluginInfo struct { func (x *PluginInfo) Reset() { *x = PluginInfo{} - mi := &file_global_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *PluginInfo) String() string { @@ -602,7 +620,7 @@ func (*PluginInfo) ProtoMessage() {} func (x *PluginInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[8] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -655,9 +673,11 @@ type SysInfoData struct { func (x *SysInfoData) Reset() { *x = SysInfoData{} - mi := &file_global_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SysInfoData) String() string { @@ -668,7 +688,7 @@ func (*SysInfoData) ProtoMessage() {} func (x *SysInfoData) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[9] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -751,9 +771,11 @@ type SysInfoResponse struct { func (x *SysInfoResponse) Reset() { *x = SysInfoResponse{} - mi := &file_global_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SysInfoResponse) String() string { @@ -764,7 +786,7 @@ func (*SysInfoResponse) ProtoMessage() {} func (x *SysInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[10] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -818,9 +840,11 @@ type TaskTreeData struct { func (x *TaskTreeData) Reset() { *x = TaskTreeData{} - mi := &file_global_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *TaskTreeData) String() string { @@ -831,7 +855,7 @@ func (*TaskTreeData) ProtoMessage() {} func (x *TaskTreeData) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[11] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -921,9 +945,11 @@ type TaskTreeResponse struct { func (x *TaskTreeResponse) Reset() { *x = TaskTreeResponse{} - mi := &file_global_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *TaskTreeResponse) String() string { @@ -934,7 +960,7 @@ func (*TaskTreeResponse) ProtoMessage() {} func (x *TaskTreeResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[12] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -981,9 +1007,11 @@ type StreamListRequest struct { func (x *StreamListRequest) Reset() { *x = StreamListRequest{} - mi := &file_global_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamListRequest) String() string { @@ -994,7 +1022,7 @@ func (*StreamListRequest) ProtoMessage() {} func (x *StreamListRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[13] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1038,9 +1066,11 @@ type StreamListResponse struct { func (x *StreamListResponse) Reset() { *x = StreamListResponse{} - mi := &file_global_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamListResponse) String() string { @@ -1051,7 +1081,7 @@ func (*StreamListResponse) ProtoMessage() {} func (x *StreamListResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[14] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1118,9 +1148,11 @@ type StreamWaitListResponse struct { func (x *StreamWaitListResponse) Reset() { *x = StreamWaitListResponse{} - mi := &file_global_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamWaitListResponse) String() string { @@ -1131,7 +1163,7 @@ func (*StreamWaitListResponse) ProtoMessage() {} func (x *StreamWaitListResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[15] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1163,9 +1195,11 @@ type StreamSnapRequest struct { func (x *StreamSnapRequest) Reset() { *x = StreamSnapRequest{} - mi := &file_global_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamSnapRequest) String() string { @@ -1176,7 +1210,7 @@ func (*StreamSnapRequest) ProtoMessage() {} func (x *StreamSnapRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[16] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1210,9 +1244,11 @@ type StreamInfoResponse struct { func (x *StreamInfoResponse) Reset() { *x = StreamInfoResponse{} - mi := &file_global_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamInfoResponse) String() string { @@ -1223,7 +1259,7 @@ func (*StreamInfoResponse) ProtoMessage() {} func (x *StreamInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[17] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1282,9 +1318,11 @@ type StreamInfo struct { func (x *StreamInfo) Reset() { *x = StreamInfo{} - mi := &file_global_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StreamInfo) String() string { @@ -1295,7 +1333,7 @@ func (*StreamInfo) ProtoMessage() {} func (x *StreamInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[18] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1420,9 +1458,11 @@ type Wrap struct { func (x *Wrap) Reset() { *x = Wrap{} - mi := &file_global_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Wrap) String() string { @@ -1433,7 +1473,7 @@ func (*Wrap) ProtoMessage() {} func (x *Wrap) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[19] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1483,9 +1523,11 @@ type TrackSnapShot struct { func (x *TrackSnapShot) Reset() { *x = TrackSnapShot{} - mi := &file_global_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *TrackSnapShot) String() string { @@ -1496,7 +1538,7 @@ func (*TrackSnapShot) ProtoMessage() {} func (x *TrackSnapShot) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[20] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1557,9 +1599,11 @@ type MemoryBlock struct { func (x *MemoryBlock) Reset() { *x = MemoryBlock{} - mi := &file_global_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *MemoryBlock) String() string { @@ -1570,7 +1614,7 @@ func (*MemoryBlock) ProtoMessage() {} func (x *MemoryBlock) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[21] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1610,9 +1654,11 @@ type MemoryBlockGroup struct { func (x *MemoryBlockGroup) Reset() { *x = MemoryBlockGroup{} - mi := &file_global_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *MemoryBlockGroup) String() string { @@ -1623,7 +1669,7 @@ func (*MemoryBlockGroup) ProtoMessage() {} func (x *MemoryBlockGroup) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[22] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1668,9 +1714,11 @@ type AudioTrackInfo struct { func (x *AudioTrackInfo) Reset() { *x = AudioTrackInfo{} - mi := &file_global_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *AudioTrackInfo) String() string { @@ -1681,7 +1729,7 @@ func (*AudioTrackInfo) ProtoMessage() {} func (x *AudioTrackInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[23] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1758,9 +1806,11 @@ type TrackSnapShotResponse struct { func (x *TrackSnapShotResponse) Reset() { *x = TrackSnapShotResponse{} - mi := &file_global_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *TrackSnapShotResponse) String() string { @@ -1771,7 +1821,7 @@ func (*TrackSnapShotResponse) ProtoMessage() {} func (x *TrackSnapShotResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[24] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1831,9 +1881,11 @@ type VideoTrackInfo struct { func (x *VideoTrackInfo) Reset() { *x = VideoTrackInfo{} - mi := &file_global_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *VideoTrackInfo) String() string { @@ -1844,7 +1896,7 @@ func (*VideoTrackInfo) ProtoMessage() {} func (x *VideoTrackInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[25] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1926,9 +1978,11 @@ type SuccessResponse struct { func (x *SuccessResponse) Reset() { *x = SuccessResponse{} - mi := &file_global_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SuccessResponse) String() string { @@ -1939,7 +1993,7 @@ func (*SuccessResponse) ProtoMessage() {} func (x *SuccessResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[26] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1979,9 +2033,11 @@ type RequestWithId struct { func (x *RequestWithId) Reset() { *x = RequestWithId{} - mi := &file_global_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *RequestWithId) String() string { @@ -1992,7 +2048,7 @@ func (*RequestWithId) ProtoMessage() {} func (x *RequestWithId) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[27] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2031,9 +2087,11 @@ type RequestWithId64 struct { func (x *RequestWithId64) Reset() { *x = RequestWithId64{} - mi := &file_global_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *RequestWithId64) String() string { @@ -2044,7 +2102,7 @@ func (*RequestWithId64) ProtoMessage() {} func (x *RequestWithId64) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[28] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2077,9 +2135,11 @@ type ChangeSubscribeRequest struct { func (x *ChangeSubscribeRequest) Reset() { *x = ChangeSubscribeRequest{} - mi := &file_global_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ChangeSubscribeRequest) String() string { @@ -2090,7 +2150,7 @@ func (*ChangeSubscribeRequest) ProtoMessage() {} func (x *ChangeSubscribeRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[29] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2131,9 +2191,11 @@ type SubscribersRequest struct { func (x *SubscribersRequest) Reset() { *x = SubscribersRequest{} - mi := &file_global_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SubscribersRequest) String() string { @@ -2144,7 +2206,7 @@ func (*SubscribersRequest) ProtoMessage() {} func (x *SubscribersRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[30] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2193,9 +2255,11 @@ type RingReaderSnapShot struct { func (x *RingReaderSnapShot) Reset() { *x = RingReaderSnapShot{} - mi := &file_global_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *RingReaderSnapShot) String() string { @@ -2206,7 +2270,7 @@ func (*RingReaderSnapShot) ProtoMessage() {} func (x *RingReaderSnapShot) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[31] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2269,9 +2333,11 @@ type SubscriberSnapShot struct { func (x *SubscriberSnapShot) Reset() { *x = SubscriberSnapShot{} - mi := &file_global_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SubscriberSnapShot) String() string { @@ -2282,7 +2348,7 @@ func (*SubscriberSnapShot) ProtoMessage() {} func (x *SubscriberSnapShot) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[32] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2389,9 +2455,11 @@ type SubscribersResponse struct { func (x *SubscribersResponse) Reset() { *x = SubscribersResponse{} - mi := &file_global_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SubscribersResponse) String() string { @@ -2402,7 +2470,7 @@ func (*SubscribersResponse) ProtoMessage() {} func (x *SubscribersResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[33] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2471,9 +2539,11 @@ type DeviceListResponse struct { func (x *DeviceListResponse) Reset() { *x = DeviceListResponse{} - mi := &file_global_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *DeviceListResponse) String() string { @@ -2484,7 +2554,7 @@ func (*DeviceListResponse) ProtoMessage() {} func (x *DeviceListResponse) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[34] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2545,9 +2615,11 @@ type DeviceInfo struct { func (x *DeviceInfo) Reset() { *x = DeviceInfo{} - mi := &file_global_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *DeviceInfo) String() string { @@ -2558,7 +2630,7 @@ func (*DeviceInfo) ProtoMessage() {} func (x *DeviceInfo) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[35] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2697,9 +2769,11 @@ type SetStreamAliasRequest struct { func (x *SetStreamAliasRequest) Reset() { *x = SetStreamAliasRequest{} - mi := &file_global_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SetStreamAliasRequest) String() string { @@ -2710,7 +2784,7 @@ func (*SetStreamAliasRequest) ProtoMessage() {} func (x *SetStreamAliasRequest) ProtoReflect() protoreflect.Message { mi := &file_global_proto_msgTypes[36] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2746,6 +2820,140 @@ func (x *SetStreamAliasRequest) GetAutoRemove() bool { return false } +type StreamAlias struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StreamPath string `protobuf:"bytes,1,opt,name=streamPath,proto3" json:"streamPath,omitempty"` + Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` + AutoRemove bool `protobuf:"varint,3,opt,name=autoRemove,proto3" json:"autoRemove,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *StreamAlias) Reset() { + *x = StreamAlias{} + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamAlias) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamAlias) ProtoMessage() {} + +func (x *StreamAlias) ProtoReflect() protoreflect.Message { + mi := &file_global_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamAlias.ProtoReflect.Descriptor instead. +func (*StreamAlias) Descriptor() ([]byte, []int) { + return file_global_proto_rawDescGZIP(), []int{37} +} + +func (x *StreamAlias) GetStreamPath() string { + if x != nil { + return x.StreamPath + } + return "" +} + +func (x *StreamAlias) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +func (x *StreamAlias) GetAutoRemove() bool { + if x != nil { + return x.AutoRemove + } + return false +} + +func (x *StreamAlias) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +type StreamAliasListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Data []*StreamAlias `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *StreamAliasListResponse) Reset() { + *x = StreamAliasListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamAliasListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamAliasListResponse) ProtoMessage() {} + +func (x *StreamAliasListResponse) ProtoReflect() protoreflect.Message { + mi := &file_global_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamAliasListResponse.ProtoReflect.Descriptor instead. +func (*StreamAliasListResponse) Descriptor() ([]byte, []int) { + return file_global_proto_rawDescGZIP(), []int{38} +} + +func (x *StreamAliasListResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *StreamAliasListResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *StreamAliasListResponse) GetData() []*StreamAlias { + if x != nil { + return x.Data + } + return nil +} + type SetStreamSpeedRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2757,9 +2965,11 @@ type SetStreamSpeedRequest struct { func (x *SetStreamSpeedRequest) Reset() { *x = SetStreamSpeedRequest{} - mi := &file_global_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SetStreamSpeedRequest) String() string { @@ -2769,8 +2979,8 @@ func (x *SetStreamSpeedRequest) String() string { func (*SetStreamSpeedRequest) ProtoMessage() {} func (x *SetStreamSpeedRequest) ProtoReflect() protoreflect.Message { - mi := &file_global_proto_msgTypes[37] - if x != nil { + mi := &file_global_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2782,7 +2992,7 @@ func (x *SetStreamSpeedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetStreamSpeedRequest.ProtoReflect.Descriptor instead. func (*SetStreamSpeedRequest) Descriptor() ([]byte, []int) { - return file_global_proto_rawDescGZIP(), []int{37} + return file_global_proto_rawDescGZIP(), []int{39} } func (x *SetStreamSpeedRequest) GetStreamPath() string { @@ -2810,9 +3020,11 @@ type SeekStreamRequest struct { func (x *SeekStreamRequest) Reset() { *x = SeekStreamRequest{} - mi := &file_global_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *SeekStreamRequest) String() string { @@ -2822,8 +3034,8 @@ func (x *SeekStreamRequest) String() string { func (*SeekStreamRequest) ProtoMessage() {} func (x *SeekStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_global_proto_msgTypes[38] - if x != nil { + mi := &file_global_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2835,7 +3047,7 @@ func (x *SeekStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SeekStreamRequest.ProtoReflect.Descriptor instead. func (*SeekStreamRequest) Descriptor() ([]byte, []int) { - return file_global_proto_rawDescGZIP(), []int{38} + return file_global_proto_rawDescGZIP(), []int{40} } func (x *SeekStreamRequest) GetStreamPath() string { @@ -2864,9 +3076,11 @@ type Recording struct { func (x *Recording) Reset() { *x = Recording{} - mi := &file_global_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Recording) String() string { @@ -2876,8 +3090,8 @@ func (x *Recording) String() string { func (*Recording) ProtoMessage() {} func (x *Recording) ProtoReflect() protoreflect.Message { - mi := &file_global_proto_msgTypes[39] - if x != nil { + mi := &file_global_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2889,7 +3103,7 @@ func (x *Recording) ProtoReflect() protoreflect.Message { // Deprecated: Use Recording.ProtoReflect.Descriptor instead. func (*Recording) Descriptor() ([]byte, []int) { - return file_global_proto_rawDescGZIP(), []int{39} + return file_global_proto_rawDescGZIP(), []int{41} } func (x *Recording) GetStreamPath() string { @@ -2925,9 +3139,11 @@ type RecordingListResponse struct { func (x *RecordingListResponse) Reset() { *x = RecordingListResponse{} - mi := &file_global_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_global_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *RecordingListResponse) String() string { @@ -2937,8 +3153,8 @@ func (x *RecordingListResponse) String() string { func (*RecordingListResponse) ProtoMessage() {} func (x *RecordingListResponse) ProtoReflect() protoreflect.Message { - mi := &file_global_proto_msgTypes[40] - if x != nil { + mi := &file_global_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2950,7 +3166,7 @@ func (x *RecordingListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordingListResponse.ProtoReflect.Descriptor instead. func (*RecordingListResponse) Descriptor() ([]byte, []int) { - return file_global_proto_rawDescGZIP(), []int{40} + return file_global_proto_rawDescGZIP(), []int{42} } func (x *RecordingListResponse) GetCode() int32 { @@ -3384,220 +3600,241 @@ var file_global_proto_rawDesc = []byte{ 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x4d, 0x0a, - 0x15, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22, 0x51, 0x0a, 0x11, - 0x53, 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x79, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, + 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x7b, 0x0a, + 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x09, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6c, 0x0a, 0x15, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x9d, 0x17, 0x0a, 0x03, 0x61, 0x70, 0x69, - 0x12, 0x50, 0x0a, 0x07, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x79, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x79, 0x73, 0x69, 0x6e, - 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, - 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x54, 0x0a, 0x07, - 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, - 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0x54, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x12, 0x16, + 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x70, 0x0a, 0x17, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4d, 0x0a, 0x15, + 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x65, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22, 0x51, 0x0a, 0x11, 0x53, + 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x79, + 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, - 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x72, 0x65, 0x65, 0x12, 0x59, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x36, 0x34, 0x1a, 0x17, 0x2e, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6c, 0x0a, 0x15, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x88, 0x18, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x12, + 0x50, 0x0a, 0x07, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x79, 0x73, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x79, 0x73, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0x50, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, + 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x54, 0x0a, 0x07, 0x52, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x13, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x36, 0x34, 0x1a, 0x17, 0x2e, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x16, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5d, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x6c, - 0x69, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x08, 0x57, 0x61, 0x69, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x57, 0x61, 0x69, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, - 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x77, 0x61, 0x69, - 0x74, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, - 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x6f, 0x0a, 0x0b, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, - 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, - 0x70, 0x61, 0x75, 0x73, 0x65, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, - 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x71, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x76, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x73, 0x70, 0x65, 0x65, 0x64, - 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, - 0x12, 0x6d, 0x0a, 0x0a, 0x53, 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x73, 0x65, 0x65, 0x6b, 0x2f, - 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, - 0x73, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x78, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, 0x61, - 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, - 0x53, 0x6e, 0x61, 0x70, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x75, 0x64, 0x69, 0x6f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x7b, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x78, - 0x0a, 0x0e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, - 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x53, 0x68, - 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x74, 0x72, - 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1e, 0x2e, 0x67, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x11, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0x54, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x61, + 0x73, 0x6b, 0x2f, 0x74, 0x72, 0x65, 0x65, 0x12, 0x59, 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x36, 0x34, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, - 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x66, 0x0a, 0x0e, - 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1d, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x13, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x36, 0x34, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x16, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0x5d, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x6c, 0x69, + 0x73, 0x74, 0x12, 0x60, 0x0a, 0x08, 0x57, 0x61, 0x69, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x57, 0x61, 0x69, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x77, 0x61, 0x69, 0x74, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x69, + 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, + 0x2a, 0x2a, 0x7d, 0x12, 0x6f, 0x0a, 0x0b, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, - 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x6e, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, - 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, - 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, - 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x64, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, - 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x67, 0x65, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x65, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x18, 0x2e, 0x67, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x6c, 0x79, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x12, 0x6d, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1b, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x21, 0x3a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x12, 0x5d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, - 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, - 0x74, 0x12, 0x54, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x61, 0x64, 0x64, 0x12, 0x62, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, - 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, - 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5a, 0x0a, 0x0c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x70, 0x61, 0x75, 0x73, + 0x65, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, + 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x71, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, - 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x6d, 0x37, 0x73, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x2f, 0x76, 0x35, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, + 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x72, 0x65, + 0x73, 0x75, 0x6d, 0x65, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, + 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x2f, 0x7b, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x12, + 0x6d, 0x0a, 0x0a, 0x53, 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x65, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x73, 0x65, 0x65, 0x6b, 0x2f, 0x7b, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x73, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x73, + 0x12, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, + 0x2a, 0x2a, 0x7d, 0x12, 0x78, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x63, + 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x12, 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, + 0x6e, 0x61, 0x70, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x75, + 0x64, 0x69, 0x6f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x7b, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x78, 0x0a, + 0x0e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x12, + 0x19, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, + 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x53, 0x68, 0x6f, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x74, 0x72, 0x61, + 0x63, 0x6b, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, + 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x69, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x66, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6e, + 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x19, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x6e, 0x61, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x64, + 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, + 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x65, 0x74, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x65, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x18, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x66, + 0x6f, 0x72, 0x6d, 0x69, 0x6c, 0x79, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6d, 0x0a, + 0x0c, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x19, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x5d, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x09, 0x41, + 0x64, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x17, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x64, 0x64, 0x3a, 0x01, + 0x2a, 0x12, 0x62, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x15, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x5a, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x17, 0x2e, 0x67, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, + 0x2a, 0x12, 0x5f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x67, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x6c, 0x69, + 0x73, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x6d, 0x37, 0x73, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2f, 0x76, + 0x35, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3612,165 +3849,170 @@ func file_global_proto_rawDescGZIP() []byte { return file_global_proto_rawDescData } -var file_global_proto_msgTypes = make([]protoimpl.MessageInfo, 47) -var file_global_proto_goTypes = []any{ - (*GetConfigRequest)(nil), // 0: global.GetConfigRequest - (*Formily)(nil), // 1: global.Formily - (*FormilyResponse)(nil), // 2: global.FormilyResponse - (*GetConfigResponse)(nil), // 3: global.GetConfigResponse - (*ModifyConfigRequest)(nil), // 4: global.ModifyConfigRequest - (*NetWorkInfo)(nil), // 5: global.NetWorkInfo - (*Usage)(nil), // 6: global.Usage - (*SummaryResponse)(nil), // 7: global.SummaryResponse - (*PluginInfo)(nil), // 8: global.PluginInfo - (*SysInfoData)(nil), // 9: global.SysInfoData - (*SysInfoResponse)(nil), // 10: global.SysInfoResponse - (*TaskTreeData)(nil), // 11: global.TaskTreeData - (*TaskTreeResponse)(nil), // 12: global.TaskTreeResponse - (*StreamListRequest)(nil), // 13: global.StreamListRequest - (*StreamListResponse)(nil), // 14: global.StreamListResponse - (*StreamWaitListResponse)(nil), // 15: global.StreamWaitListResponse - (*StreamSnapRequest)(nil), // 16: global.StreamSnapRequest - (*StreamInfoResponse)(nil), // 17: global.StreamInfoResponse - (*StreamInfo)(nil), // 18: global.StreamInfo - (*Wrap)(nil), // 19: global.Wrap - (*TrackSnapShot)(nil), // 20: global.TrackSnapShot - (*MemoryBlock)(nil), // 21: global.MemoryBlock - (*MemoryBlockGroup)(nil), // 22: global.MemoryBlockGroup - (*AudioTrackInfo)(nil), // 23: global.AudioTrackInfo - (*TrackSnapShotResponse)(nil), // 24: global.TrackSnapShotResponse - (*VideoTrackInfo)(nil), // 25: global.VideoTrackInfo - (*SuccessResponse)(nil), // 26: global.SuccessResponse - (*RequestWithId)(nil), // 27: global.RequestWithId - (*RequestWithId64)(nil), // 28: global.RequestWithId64 - (*ChangeSubscribeRequest)(nil), // 29: global.ChangeSubscribeRequest - (*SubscribersRequest)(nil), // 30: global.SubscribersRequest - (*RingReaderSnapShot)(nil), // 31: global.RingReaderSnapShot - (*SubscriberSnapShot)(nil), // 32: global.SubscriberSnapShot - (*SubscribersResponse)(nil), // 33: global.SubscribersResponse - (*DeviceListResponse)(nil), // 34: global.DeviceListResponse - (*DeviceInfo)(nil), // 35: global.DeviceInfo - (*SetStreamAliasRequest)(nil), // 36: global.SetStreamAliasRequest - (*SetStreamSpeedRequest)(nil), // 37: global.SetStreamSpeedRequest - (*SeekStreamRequest)(nil), // 38: global.SeekStreamRequest - (*Recording)(nil), // 39: global.Recording - (*RecordingListResponse)(nil), // 40: global.RecordingListResponse - nil, // 41: global.Formily.PropertiesEntry - nil, // 42: global.Formily.ComponentPropsEntry - nil, // 43: global.FormilyResponse.PropertiesEntry - nil, // 44: global.TaskTreeData.DescriptionEntry - nil, // 45: global.StreamWaitListResponse.ListEntry - nil, // 46: global.TrackSnapShotResponse.ReaderEntry - (*timestamppb.Timestamp)(nil), // 47: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 48: google.protobuf.Duration - (*anypb.Any)(nil), // 49: google.protobuf.Any - (*emptypb.Empty)(nil), // 50: google.protobuf.Empty +var file_global_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_global_proto_goTypes = []interface{}{ + (*GetConfigRequest)(nil), // 0: global.GetConfigRequest + (*Formily)(nil), // 1: global.Formily + (*FormilyResponse)(nil), // 2: global.FormilyResponse + (*GetConfigResponse)(nil), // 3: global.GetConfigResponse + (*ModifyConfigRequest)(nil), // 4: global.ModifyConfigRequest + (*NetWorkInfo)(nil), // 5: global.NetWorkInfo + (*Usage)(nil), // 6: global.Usage + (*SummaryResponse)(nil), // 7: global.SummaryResponse + (*PluginInfo)(nil), // 8: global.PluginInfo + (*SysInfoData)(nil), // 9: global.SysInfoData + (*SysInfoResponse)(nil), // 10: global.SysInfoResponse + (*TaskTreeData)(nil), // 11: global.TaskTreeData + (*TaskTreeResponse)(nil), // 12: global.TaskTreeResponse + (*StreamListRequest)(nil), // 13: global.StreamListRequest + (*StreamListResponse)(nil), // 14: global.StreamListResponse + (*StreamWaitListResponse)(nil), // 15: global.StreamWaitListResponse + (*StreamSnapRequest)(nil), // 16: global.StreamSnapRequest + (*StreamInfoResponse)(nil), // 17: global.StreamInfoResponse + (*StreamInfo)(nil), // 18: global.StreamInfo + (*Wrap)(nil), // 19: global.Wrap + (*TrackSnapShot)(nil), // 20: global.TrackSnapShot + (*MemoryBlock)(nil), // 21: global.MemoryBlock + (*MemoryBlockGroup)(nil), // 22: global.MemoryBlockGroup + (*AudioTrackInfo)(nil), // 23: global.AudioTrackInfo + (*TrackSnapShotResponse)(nil), // 24: global.TrackSnapShotResponse + (*VideoTrackInfo)(nil), // 25: global.VideoTrackInfo + (*SuccessResponse)(nil), // 26: global.SuccessResponse + (*RequestWithId)(nil), // 27: global.RequestWithId + (*RequestWithId64)(nil), // 28: global.RequestWithId64 + (*ChangeSubscribeRequest)(nil), // 29: global.ChangeSubscribeRequest + (*SubscribersRequest)(nil), // 30: global.SubscribersRequest + (*RingReaderSnapShot)(nil), // 31: global.RingReaderSnapShot + (*SubscriberSnapShot)(nil), // 32: global.SubscriberSnapShot + (*SubscribersResponse)(nil), // 33: global.SubscribersResponse + (*DeviceListResponse)(nil), // 34: global.DeviceListResponse + (*DeviceInfo)(nil), // 35: global.DeviceInfo + (*SetStreamAliasRequest)(nil), // 36: global.SetStreamAliasRequest + (*StreamAlias)(nil), // 37: global.StreamAlias + (*StreamAliasListResponse)(nil), // 38: global.StreamAliasListResponse + (*SetStreamSpeedRequest)(nil), // 39: global.SetStreamSpeedRequest + (*SeekStreamRequest)(nil), // 40: global.SeekStreamRequest + (*Recording)(nil), // 41: global.Recording + (*RecordingListResponse)(nil), // 42: global.RecordingListResponse + nil, // 43: global.Formily.PropertiesEntry + nil, // 44: global.Formily.ComponentPropsEntry + nil, // 45: global.FormilyResponse.PropertiesEntry + nil, // 46: global.TaskTreeData.DescriptionEntry + nil, // 47: global.StreamWaitListResponse.ListEntry + nil, // 48: global.TrackSnapShotResponse.ReaderEntry + (*timestamppb.Timestamp)(nil), // 49: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 50: google.protobuf.Duration + (*anypb.Any)(nil), // 51: google.protobuf.Any + (*emptypb.Empty)(nil), // 52: google.protobuf.Empty } var file_global_proto_depIdxs = []int32{ - 41, // 0: global.Formily.properties:type_name -> global.Formily.PropertiesEntry - 42, // 1: global.Formily.componentProps:type_name -> global.Formily.ComponentPropsEntry - 43, // 2: global.FormilyResponse.properties:type_name -> global.FormilyResponse.PropertiesEntry + 43, // 0: global.Formily.properties:type_name -> global.Formily.PropertiesEntry + 44, // 1: global.Formily.componentProps:type_name -> global.Formily.ComponentPropsEntry + 45, // 2: global.FormilyResponse.properties:type_name -> global.FormilyResponse.PropertiesEntry 6, // 3: global.SummaryResponse.memory:type_name -> global.Usage 6, // 4: global.SummaryResponse.hardDisk:type_name -> global.Usage 5, // 5: global.SummaryResponse.netWork:type_name -> global.NetWorkInfo - 47, // 6: global.SysInfoData.startTime:type_name -> google.protobuf.Timestamp + 49, // 6: global.SysInfoData.startTime:type_name -> google.protobuf.Timestamp 8, // 7: global.SysInfoData.plugins:type_name -> global.PluginInfo 9, // 8: global.SysInfoResponse.data:type_name -> global.SysInfoData - 47, // 9: global.TaskTreeData.startTime:type_name -> google.protobuf.Timestamp - 44, // 10: global.TaskTreeData.description:type_name -> global.TaskTreeData.DescriptionEntry + 49, // 9: global.TaskTreeData.startTime:type_name -> google.protobuf.Timestamp + 46, // 10: global.TaskTreeData.description:type_name -> global.TaskTreeData.DescriptionEntry 11, // 11: global.TaskTreeData.children:type_name -> global.TaskTreeData 11, // 12: global.TaskTreeData.blocked:type_name -> global.TaskTreeData 11, // 13: global.TaskTreeResponse.data:type_name -> global.TaskTreeData 18, // 14: global.StreamListResponse.data:type_name -> global.StreamInfo - 45, // 15: global.StreamWaitListResponse.list:type_name -> global.StreamWaitListResponse.ListEntry + 47, // 15: global.StreamWaitListResponse.list:type_name -> global.StreamWaitListResponse.ListEntry 18, // 16: global.StreamInfoResponse.data:type_name -> global.StreamInfo 23, // 17: global.StreamInfo.audioTrack:type_name -> global.AudioTrackInfo 25, // 18: global.StreamInfo.videoTrack:type_name -> global.VideoTrackInfo - 47, // 19: global.StreamInfo.startTime:type_name -> google.protobuf.Timestamp - 48, // 20: global.StreamInfo.bufferTime:type_name -> google.protobuf.Duration - 47, // 21: global.TrackSnapShot.writeTime:type_name -> google.protobuf.Timestamp + 49, // 19: global.StreamInfo.startTime:type_name -> google.protobuf.Timestamp + 50, // 20: global.StreamInfo.bufferTime:type_name -> google.protobuf.Duration + 49, // 21: global.TrackSnapShot.writeTime:type_name -> google.protobuf.Timestamp 19, // 22: global.TrackSnapShot.wrap:type_name -> global.Wrap 21, // 23: global.MemoryBlockGroup.list:type_name -> global.MemoryBlock 20, // 24: global.TrackSnapShotResponse.ring:type_name -> global.TrackSnapShot - 46, // 25: global.TrackSnapShotResponse.reader:type_name -> global.TrackSnapShotResponse.ReaderEntry + 48, // 25: global.TrackSnapShotResponse.reader:type_name -> global.TrackSnapShotResponse.ReaderEntry 22, // 26: global.TrackSnapShotResponse.memory:type_name -> global.MemoryBlockGroup - 47, // 27: global.SubscriberSnapShot.startTime:type_name -> google.protobuf.Timestamp + 49, // 27: global.SubscriberSnapShot.startTime:type_name -> google.protobuf.Timestamp 31, // 28: global.SubscriberSnapShot.audioReader:type_name -> global.RingReaderSnapShot 31, // 29: global.SubscriberSnapShot.videoReader:type_name -> global.RingReaderSnapShot - 48, // 30: global.SubscriberSnapShot.bufferTime:type_name -> google.protobuf.Duration + 50, // 30: global.SubscriberSnapShot.bufferTime:type_name -> google.protobuf.Duration 32, // 31: global.SubscribersResponse.data:type_name -> global.SubscriberSnapShot 35, // 32: global.DeviceListResponse.data:type_name -> global.DeviceInfo - 47, // 33: global.DeviceInfo.createTime:type_name -> google.protobuf.Timestamp - 47, // 34: global.DeviceInfo.updateTime:type_name -> google.protobuf.Timestamp - 48, // 35: global.DeviceInfo.recordFragment:type_name -> google.protobuf.Duration - 47, // 36: global.Recording.startTime:type_name -> google.protobuf.Timestamp - 39, // 37: global.RecordingListResponse.data:type_name -> global.Recording - 1, // 38: global.Formily.PropertiesEntry.value:type_name -> global.Formily - 49, // 39: global.Formily.ComponentPropsEntry.value:type_name -> google.protobuf.Any - 1, // 40: global.FormilyResponse.PropertiesEntry.value:type_name -> global.Formily - 50, // 41: global.api.SysInfo:input_type -> google.protobuf.Empty - 50, // 42: global.api.Summary:input_type -> google.protobuf.Empty - 27, // 43: global.api.Shutdown:input_type -> global.RequestWithId - 27, // 44: global.api.Restart:input_type -> global.RequestWithId - 50, // 45: global.api.TaskTree:input_type -> google.protobuf.Empty - 28, // 46: global.api.StopTask:input_type -> global.RequestWithId64 - 28, // 47: global.api.RestartTask:input_type -> global.RequestWithId64 - 13, // 48: global.api.StreamList:input_type -> global.StreamListRequest - 50, // 49: global.api.WaitList:input_type -> google.protobuf.Empty - 16, // 50: global.api.StreamInfo:input_type -> global.StreamSnapRequest - 16, // 51: global.api.PauseStream:input_type -> global.StreamSnapRequest - 16, // 52: global.api.ResumeStream:input_type -> global.StreamSnapRequest - 37, // 53: global.api.SetStreamSpeed:input_type -> global.SetStreamSpeedRequest - 38, // 54: global.api.SeekStream:input_type -> global.SeekStreamRequest - 30, // 55: global.api.GetSubscribers:input_type -> global.SubscribersRequest - 16, // 56: global.api.AudioTrackSnap:input_type -> global.StreamSnapRequest - 16, // 57: global.api.VideoTrackSnap:input_type -> global.StreamSnapRequest - 29, // 58: global.api.ChangeSubscribe:input_type -> global.ChangeSubscribeRequest - 36, // 59: global.api.SetStreamAlias:input_type -> global.SetStreamAliasRequest - 16, // 60: global.api.StopPublish:input_type -> global.StreamSnapRequest - 27, // 61: global.api.StopSubscribe:input_type -> global.RequestWithId - 0, // 62: global.api.GetConfig:input_type -> global.GetConfigRequest - 0, // 63: global.api.GetFormily:input_type -> global.GetConfigRequest - 4, // 64: global.api.ModifyConfig:input_type -> global.ModifyConfigRequest - 50, // 65: global.api.GetDeviceList:input_type -> google.protobuf.Empty - 35, // 66: global.api.AddDevice:input_type -> global.DeviceInfo - 27, // 67: global.api.RemoveDevice:input_type -> global.RequestWithId - 35, // 68: global.api.UpdateDevice:input_type -> global.DeviceInfo - 50, // 69: global.api.GetRecording:input_type -> google.protobuf.Empty - 10, // 70: global.api.SysInfo:output_type -> global.SysInfoResponse - 7, // 71: global.api.Summary:output_type -> global.SummaryResponse - 26, // 72: global.api.Shutdown:output_type -> global.SuccessResponse - 26, // 73: global.api.Restart:output_type -> global.SuccessResponse - 12, // 74: global.api.TaskTree:output_type -> global.TaskTreeResponse - 26, // 75: global.api.StopTask:output_type -> global.SuccessResponse - 26, // 76: global.api.RestartTask:output_type -> global.SuccessResponse - 14, // 77: global.api.StreamList:output_type -> global.StreamListResponse - 15, // 78: global.api.WaitList:output_type -> global.StreamWaitListResponse - 17, // 79: global.api.StreamInfo:output_type -> global.StreamInfoResponse - 26, // 80: global.api.PauseStream:output_type -> global.SuccessResponse - 26, // 81: global.api.ResumeStream:output_type -> global.SuccessResponse - 26, // 82: global.api.SetStreamSpeed:output_type -> global.SuccessResponse - 26, // 83: global.api.SeekStream:output_type -> global.SuccessResponse - 33, // 84: global.api.GetSubscribers:output_type -> global.SubscribersResponse - 24, // 85: global.api.AudioTrackSnap:output_type -> global.TrackSnapShotResponse - 24, // 86: global.api.VideoTrackSnap:output_type -> global.TrackSnapShotResponse - 26, // 87: global.api.ChangeSubscribe:output_type -> global.SuccessResponse - 26, // 88: global.api.SetStreamAlias:output_type -> global.SuccessResponse - 26, // 89: global.api.StopPublish:output_type -> global.SuccessResponse - 26, // 90: global.api.StopSubscribe:output_type -> global.SuccessResponse - 3, // 91: global.api.GetConfig:output_type -> global.GetConfigResponse - 3, // 92: global.api.GetFormily:output_type -> global.GetConfigResponse - 26, // 93: global.api.ModifyConfig:output_type -> global.SuccessResponse - 34, // 94: global.api.GetDeviceList:output_type -> global.DeviceListResponse - 26, // 95: global.api.AddDevice:output_type -> global.SuccessResponse - 26, // 96: global.api.RemoveDevice:output_type -> global.SuccessResponse - 26, // 97: global.api.UpdateDevice:output_type -> global.SuccessResponse - 40, // 98: global.api.GetRecording:output_type -> global.RecordingListResponse - 70, // [70:99] is the sub-list for method output_type - 41, // [41:70] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 49, // 33: global.DeviceInfo.createTime:type_name -> google.protobuf.Timestamp + 49, // 34: global.DeviceInfo.updateTime:type_name -> google.protobuf.Timestamp + 50, // 35: global.DeviceInfo.recordFragment:type_name -> google.protobuf.Duration + 37, // 36: global.StreamAliasListResponse.data:type_name -> global.StreamAlias + 49, // 37: global.Recording.startTime:type_name -> google.protobuf.Timestamp + 41, // 38: global.RecordingListResponse.data:type_name -> global.Recording + 1, // 39: global.Formily.PropertiesEntry.value:type_name -> global.Formily + 51, // 40: global.Formily.ComponentPropsEntry.value:type_name -> google.protobuf.Any + 1, // 41: global.FormilyResponse.PropertiesEntry.value:type_name -> global.Formily + 52, // 42: global.api.SysInfo:input_type -> google.protobuf.Empty + 52, // 43: global.api.Summary:input_type -> google.protobuf.Empty + 27, // 44: global.api.Shutdown:input_type -> global.RequestWithId + 27, // 45: global.api.Restart:input_type -> global.RequestWithId + 52, // 46: global.api.TaskTree:input_type -> google.protobuf.Empty + 28, // 47: global.api.StopTask:input_type -> global.RequestWithId64 + 28, // 48: global.api.RestartTask:input_type -> global.RequestWithId64 + 13, // 49: global.api.StreamList:input_type -> global.StreamListRequest + 52, // 50: global.api.WaitList:input_type -> google.protobuf.Empty + 16, // 51: global.api.StreamInfo:input_type -> global.StreamSnapRequest + 16, // 52: global.api.PauseStream:input_type -> global.StreamSnapRequest + 16, // 53: global.api.ResumeStream:input_type -> global.StreamSnapRequest + 39, // 54: global.api.SetStreamSpeed:input_type -> global.SetStreamSpeedRequest + 40, // 55: global.api.SeekStream:input_type -> global.SeekStreamRequest + 30, // 56: global.api.GetSubscribers:input_type -> global.SubscribersRequest + 16, // 57: global.api.AudioTrackSnap:input_type -> global.StreamSnapRequest + 16, // 58: global.api.VideoTrackSnap:input_type -> global.StreamSnapRequest + 29, // 59: global.api.ChangeSubscribe:input_type -> global.ChangeSubscribeRequest + 52, // 60: global.api.GetStreamAlias:input_type -> google.protobuf.Empty + 36, // 61: global.api.SetStreamAlias:input_type -> global.SetStreamAliasRequest + 16, // 62: global.api.StopPublish:input_type -> global.StreamSnapRequest + 27, // 63: global.api.StopSubscribe:input_type -> global.RequestWithId + 0, // 64: global.api.GetConfig:input_type -> global.GetConfigRequest + 0, // 65: global.api.GetFormily:input_type -> global.GetConfigRequest + 4, // 66: global.api.ModifyConfig:input_type -> global.ModifyConfigRequest + 52, // 67: global.api.GetDeviceList:input_type -> google.protobuf.Empty + 35, // 68: global.api.AddDevice:input_type -> global.DeviceInfo + 27, // 69: global.api.RemoveDevice:input_type -> global.RequestWithId + 35, // 70: global.api.UpdateDevice:input_type -> global.DeviceInfo + 52, // 71: global.api.GetRecording:input_type -> google.protobuf.Empty + 10, // 72: global.api.SysInfo:output_type -> global.SysInfoResponse + 7, // 73: global.api.Summary:output_type -> global.SummaryResponse + 26, // 74: global.api.Shutdown:output_type -> global.SuccessResponse + 26, // 75: global.api.Restart:output_type -> global.SuccessResponse + 12, // 76: global.api.TaskTree:output_type -> global.TaskTreeResponse + 26, // 77: global.api.StopTask:output_type -> global.SuccessResponse + 26, // 78: global.api.RestartTask:output_type -> global.SuccessResponse + 14, // 79: global.api.StreamList:output_type -> global.StreamListResponse + 15, // 80: global.api.WaitList:output_type -> global.StreamWaitListResponse + 17, // 81: global.api.StreamInfo:output_type -> global.StreamInfoResponse + 26, // 82: global.api.PauseStream:output_type -> global.SuccessResponse + 26, // 83: global.api.ResumeStream:output_type -> global.SuccessResponse + 26, // 84: global.api.SetStreamSpeed:output_type -> global.SuccessResponse + 26, // 85: global.api.SeekStream:output_type -> global.SuccessResponse + 33, // 86: global.api.GetSubscribers:output_type -> global.SubscribersResponse + 24, // 87: global.api.AudioTrackSnap:output_type -> global.TrackSnapShotResponse + 24, // 88: global.api.VideoTrackSnap:output_type -> global.TrackSnapShotResponse + 26, // 89: global.api.ChangeSubscribe:output_type -> global.SuccessResponse + 38, // 90: global.api.GetStreamAlias:output_type -> global.StreamAliasListResponse + 26, // 91: global.api.SetStreamAlias:output_type -> global.SuccessResponse + 26, // 92: global.api.StopPublish:output_type -> global.SuccessResponse + 26, // 93: global.api.StopSubscribe:output_type -> global.SuccessResponse + 3, // 94: global.api.GetConfig:output_type -> global.GetConfigResponse + 3, // 95: global.api.GetFormily:output_type -> global.GetConfigResponse + 26, // 96: global.api.ModifyConfig:output_type -> global.SuccessResponse + 34, // 97: global.api.GetDeviceList:output_type -> global.DeviceListResponse + 26, // 98: global.api.AddDevice:output_type -> global.SuccessResponse + 26, // 99: global.api.RemoveDevice:output_type -> global.SuccessResponse + 26, // 100: global.api.UpdateDevice:output_type -> global.SuccessResponse + 42, // 101: global.api.GetRecording:output_type -> global.RecordingListResponse + 72, // [72:102] is the sub-list for method output_type + 42, // [42:72] is the sub-list for method input_type + 42, // [42:42] is the sub-list for extension type_name + 42, // [42:42] is the sub-list for extension extendee + 0, // [0:42] is the sub-list for field type_name } func init() { file_global_proto_init() } @@ -3778,13 +4020,531 @@ func file_global_proto_init() { if File_global_proto != nil { return } + if !protoimpl.UnsafeEnabled { + file_global_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Formily); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FormilyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModifyConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetWorkInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Usage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SummaryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PluginInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SysInfoData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SysInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskTreeData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskTreeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamWaitListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamSnapRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Wrap); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TrackSnapShot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryBlockGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AudioTrackInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TrackSnapShotResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VideoTrackInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SuccessResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestWithId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestWithId64); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangeSubscribeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RingReaderSnapShot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscriberSnapShot); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetStreamAliasRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamAlias); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamAliasListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetStreamSpeedRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SeekStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Recording); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_global_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecordingListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_global_proto_rawDesc, NumEnums: 0, - NumMessages: 47, + NumMessages: 49, NumExtensions: 0, NumServices: 1, }, diff --git a/pb/global.pb.gw.go b/pb/global.pb.gw.go index 21369de..5e792be 100644 --- a/pb/global.pb.gw.go +++ b/pb/global.pb.gw.go @@ -930,6 +930,24 @@ func local_request_Api_ChangeSubscribe_0(ctx context.Context, marshaler runtime. } +func request_Api_GetStreamAlias_0(ctx context.Context, marshaler runtime.Marshaler, client ApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq emptypb.Empty + var metadata runtime.ServerMetadata + + msg, err := client.GetStreamAlias(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Api_GetStreamAlias_0(ctx context.Context, marshaler runtime.Marshaler, server ApiServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq emptypb.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetStreamAlias(ctx, &protoReq) + return msg, metadata, err + +} + func request_Api_SetStreamAlias_0(ctx context.Context, marshaler runtime.Marshaler, client ApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SetStreamAliasRequest var metadata runtime.ServerMetadata @@ -1392,7 +1410,6 @@ func local_request_Api_GetRecording_0(ctx context.Context, marshaler runtime.Mar // UnaryRPC :call ApiServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterApiHandlerFromEndpoint instead. -// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterApiHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ApiServer) error { mux.Handle("GET", pattern_Api_SysInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -1845,6 +1862,31 @@ func RegisterApiHandlerServer(ctx context.Context, mux *runtime.ServeMux, server }) + mux.Handle("GET", pattern_Api_GetStreamAlias_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/global.Api/GetStreamAlias", runtime.WithHTTPPathPattern("/api/stream/alias/list")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Api_GetStreamAlias_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Api_GetStreamAlias_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Api_SetStreamAlias_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2126,21 +2168,21 @@ func RegisterApiHandlerServer(ctx context.Context, mux *runtime.ServeMux, server // RegisterApiHandlerFromEndpoint is same as RegisterApiHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterApiHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.NewClient(endpoint, opts...) + conn, err := grpc.DialContext(ctx, endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -2158,7 +2200,7 @@ func RegisterApiHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.C // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ApiClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ApiClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ApiClient" to call the correct interceptors. This client ignores the HTTP middlewares. +// "ApiClient" to call the correct interceptors. func RegisterApiHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ApiClient) error { mux.Handle("GET", pattern_Api_SysInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -2557,6 +2599,28 @@ func RegisterApiHandlerClient(ctx context.Context, mux *runtime.ServeMux, client }) + mux.Handle("GET", pattern_Api_GetStreamAlias_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/global.Api/GetStreamAlias", runtime.WithHTTPPathPattern("/api/stream/alias/list")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Api_GetStreamAlias_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Api_GetStreamAlias_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Api_SetStreamAlias_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2839,6 +2903,8 @@ var ( pattern_Api_ChangeSubscribe_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 3, 0, 4, 1, 5, 4}, []string{"api", "subscribe", "change", "id", "streamPath"}, "")) + pattern_Api_GetStreamAlias_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "stream", "alias", "list"}, "")) + pattern_Api_SetStreamAlias_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "stream", "alias"}, "")) pattern_Api_StopPublish_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"api", "stream", "stop", "streamPath"}, "")) @@ -2899,6 +2965,8 @@ var ( forward_Api_ChangeSubscribe_0 = runtime.ForwardResponseMessage + forward_Api_GetStreamAlias_0 = runtime.ForwardResponseMessage + forward_Api_SetStreamAlias_0 = runtime.ForwardResponseMessage forward_Api_StopPublish_0 = runtime.ForwardResponseMessage diff --git a/pb/global.proto b/pb/global.proto index 298512a..0cbcf58 100644 --- a/pb/global.proto +++ b/pb/global.proto @@ -103,6 +103,11 @@ service api { body: "*" }; } + rpc GetStreamAlias (google.protobuf.Empty) returns (StreamAliasListResponse) { + option (google.api.http) = { + get: "/api/stream/alias/list" + }; + } rpc SetStreamAlias (SetStreamAliasRequest) returns (SuccessResponse) { option (google.api.http) = { post: "/api/stream/alias" @@ -448,6 +453,19 @@ message SetStreamAliasRequest { bool autoRemove = 3; } +message StreamAlias { + string streamPath = 1; + string alias = 2; + bool autoRemove = 3; + uint32 status = 4; +} + +message StreamAliasListResponse { + int32 code = 1; + string message = 2; + repeated StreamAlias data = 3; +} + message SetStreamSpeedRequest { string streamPath = 1; float speed = 2; diff --git a/pb/global_grpc.pb.go b/pb/global_grpc.pb.go index caec6cb..c1d366f 100644 --- a/pb/global_grpc.pb.go +++ b/pb/global_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc v5.28.3 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.19.1 // source: global.proto package pb @@ -16,40 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - Api_SysInfo_FullMethodName = "/global.api/SysInfo" - Api_Summary_FullMethodName = "/global.api/Summary" - Api_Shutdown_FullMethodName = "/global.api/Shutdown" - Api_Restart_FullMethodName = "/global.api/Restart" - Api_TaskTree_FullMethodName = "/global.api/TaskTree" - Api_StopTask_FullMethodName = "/global.api/StopTask" - Api_RestartTask_FullMethodName = "/global.api/RestartTask" - Api_StreamList_FullMethodName = "/global.api/StreamList" - Api_WaitList_FullMethodName = "/global.api/WaitList" - Api_StreamInfo_FullMethodName = "/global.api/StreamInfo" - Api_PauseStream_FullMethodName = "/global.api/PauseStream" - Api_ResumeStream_FullMethodName = "/global.api/ResumeStream" - Api_SetStreamSpeed_FullMethodName = "/global.api/SetStreamSpeed" - Api_SeekStream_FullMethodName = "/global.api/SeekStream" - Api_GetSubscribers_FullMethodName = "/global.api/GetSubscribers" - Api_AudioTrackSnap_FullMethodName = "/global.api/AudioTrackSnap" - Api_VideoTrackSnap_FullMethodName = "/global.api/VideoTrackSnap" - Api_ChangeSubscribe_FullMethodName = "/global.api/ChangeSubscribe" - Api_SetStreamAlias_FullMethodName = "/global.api/SetStreamAlias" - Api_StopPublish_FullMethodName = "/global.api/StopPublish" - Api_StopSubscribe_FullMethodName = "/global.api/StopSubscribe" - Api_GetConfig_FullMethodName = "/global.api/GetConfig" - Api_GetFormily_FullMethodName = "/global.api/GetFormily" - Api_ModifyConfig_FullMethodName = "/global.api/ModifyConfig" - Api_GetDeviceList_FullMethodName = "/global.api/GetDeviceList" - Api_AddDevice_FullMethodName = "/global.api/AddDevice" - Api_RemoveDevice_FullMethodName = "/global.api/RemoveDevice" - Api_UpdateDevice_FullMethodName = "/global.api/UpdateDevice" - Api_GetRecording_FullMethodName = "/global.api/GetRecording" -) +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 // ApiClient is the client API for Api service. // @@ -73,6 +41,7 @@ type ApiClient interface { AudioTrackSnap(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*TrackSnapShotResponse, error) VideoTrackSnap(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*TrackSnapShotResponse, error) ChangeSubscribe(ctx context.Context, in *ChangeSubscribeRequest, opts ...grpc.CallOption) (*SuccessResponse, error) + GetStreamAlias(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*StreamAliasListResponse, error) SetStreamAlias(ctx context.Context, in *SetStreamAliasRequest, opts ...grpc.CallOption) (*SuccessResponse, error) StopPublish(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*SuccessResponse, error) StopSubscribe(ctx context.Context, in *RequestWithId, opts ...grpc.CallOption) (*SuccessResponse, error) @@ -95,9 +64,8 @@ func NewApiClient(cc grpc.ClientConnInterface) ApiClient { } func (c *apiClient) SysInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SysInfoResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SysInfoResponse) - err := c.cc.Invoke(ctx, Api_SysInfo_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/SysInfo", in, out, opts...) if err != nil { return nil, err } @@ -105,9 +73,8 @@ func (c *apiClient) SysInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc } func (c *apiClient) Summary(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SummaryResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SummaryResponse) - err := c.cc.Invoke(ctx, Api_Summary_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/Summary", in, out, opts...) if err != nil { return nil, err } @@ -115,9 +82,8 @@ func (c *apiClient) Summary(ctx context.Context, in *emptypb.Empty, opts ...grpc } func (c *apiClient) Shutdown(ctx context.Context, in *RequestWithId, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_Shutdown_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/Shutdown", in, out, opts...) if err != nil { return nil, err } @@ -125,9 +91,8 @@ func (c *apiClient) Shutdown(ctx context.Context, in *RequestWithId, opts ...grp } func (c *apiClient) Restart(ctx context.Context, in *RequestWithId, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_Restart_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/Restart", in, out, opts...) if err != nil { return nil, err } @@ -135,9 +100,8 @@ func (c *apiClient) Restart(ctx context.Context, in *RequestWithId, opts ...grpc } func (c *apiClient) TaskTree(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*TaskTreeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TaskTreeResponse) - err := c.cc.Invoke(ctx, Api_TaskTree_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/TaskTree", in, out, opts...) if err != nil { return nil, err } @@ -145,9 +109,8 @@ func (c *apiClient) TaskTree(ctx context.Context, in *emptypb.Empty, opts ...grp } func (c *apiClient) StopTask(ctx context.Context, in *RequestWithId64, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_StopTask_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/StopTask", in, out, opts...) if err != nil { return nil, err } @@ -155,9 +118,8 @@ func (c *apiClient) StopTask(ctx context.Context, in *RequestWithId64, opts ...g } func (c *apiClient) RestartTask(ctx context.Context, in *RequestWithId64, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_RestartTask_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/RestartTask", in, out, opts...) if err != nil { return nil, err } @@ -165,9 +127,8 @@ func (c *apiClient) RestartTask(ctx context.Context, in *RequestWithId64, opts . } func (c *apiClient) StreamList(ctx context.Context, in *StreamListRequest, opts ...grpc.CallOption) (*StreamListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StreamListResponse) - err := c.cc.Invoke(ctx, Api_StreamList_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/StreamList", in, out, opts...) if err != nil { return nil, err } @@ -175,9 +136,8 @@ func (c *apiClient) StreamList(ctx context.Context, in *StreamListRequest, opts } func (c *apiClient) WaitList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*StreamWaitListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StreamWaitListResponse) - err := c.cc.Invoke(ctx, Api_WaitList_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/WaitList", in, out, opts...) if err != nil { return nil, err } @@ -185,9 +145,8 @@ func (c *apiClient) WaitList(ctx context.Context, in *emptypb.Empty, opts ...grp } func (c *apiClient) StreamInfo(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*StreamInfoResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StreamInfoResponse) - err := c.cc.Invoke(ctx, Api_StreamInfo_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/StreamInfo", in, out, opts...) if err != nil { return nil, err } @@ -195,9 +154,8 @@ func (c *apiClient) StreamInfo(ctx context.Context, in *StreamSnapRequest, opts } func (c *apiClient) PauseStream(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_PauseStream_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/PauseStream", in, out, opts...) if err != nil { return nil, err } @@ -205,9 +163,8 @@ func (c *apiClient) PauseStream(ctx context.Context, in *StreamSnapRequest, opts } func (c *apiClient) ResumeStream(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_ResumeStream_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/ResumeStream", in, out, opts...) if err != nil { return nil, err } @@ -215,9 +172,8 @@ func (c *apiClient) ResumeStream(ctx context.Context, in *StreamSnapRequest, opt } func (c *apiClient) SetStreamSpeed(ctx context.Context, in *SetStreamSpeedRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_SetStreamSpeed_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/SetStreamSpeed", in, out, opts...) if err != nil { return nil, err } @@ -225,9 +181,8 @@ func (c *apiClient) SetStreamSpeed(ctx context.Context, in *SetStreamSpeedReques } func (c *apiClient) SeekStream(ctx context.Context, in *SeekStreamRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_SeekStream_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/SeekStream", in, out, opts...) if err != nil { return nil, err } @@ -235,9 +190,8 @@ func (c *apiClient) SeekStream(ctx context.Context, in *SeekStreamRequest, opts } func (c *apiClient) GetSubscribers(ctx context.Context, in *SubscribersRequest, opts ...grpc.CallOption) (*SubscribersResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SubscribersResponse) - err := c.cc.Invoke(ctx, Api_GetSubscribers_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/GetSubscribers", in, out, opts...) if err != nil { return nil, err } @@ -245,9 +199,8 @@ func (c *apiClient) GetSubscribers(ctx context.Context, in *SubscribersRequest, } func (c *apiClient) AudioTrackSnap(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*TrackSnapShotResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TrackSnapShotResponse) - err := c.cc.Invoke(ctx, Api_AudioTrackSnap_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/AudioTrackSnap", in, out, opts...) if err != nil { return nil, err } @@ -255,9 +208,8 @@ func (c *apiClient) AudioTrackSnap(ctx context.Context, in *StreamSnapRequest, o } func (c *apiClient) VideoTrackSnap(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*TrackSnapShotResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TrackSnapShotResponse) - err := c.cc.Invoke(ctx, Api_VideoTrackSnap_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/VideoTrackSnap", in, out, opts...) if err != nil { return nil, err } @@ -265,9 +217,17 @@ func (c *apiClient) VideoTrackSnap(ctx context.Context, in *StreamSnapRequest, o } func (c *apiClient) ChangeSubscribe(ctx context.Context, in *ChangeSubscribeRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_ChangeSubscribe_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/ChangeSubscribe", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *apiClient) GetStreamAlias(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*StreamAliasListResponse, error) { + out := new(StreamAliasListResponse) + err := c.cc.Invoke(ctx, "/global.api/GetStreamAlias", in, out, opts...) if err != nil { return nil, err } @@ -275,9 +235,8 @@ func (c *apiClient) ChangeSubscribe(ctx context.Context, in *ChangeSubscribeRequ } func (c *apiClient) SetStreamAlias(ctx context.Context, in *SetStreamAliasRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_SetStreamAlias_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/SetStreamAlias", in, out, opts...) if err != nil { return nil, err } @@ -285,9 +244,8 @@ func (c *apiClient) SetStreamAlias(ctx context.Context, in *SetStreamAliasReques } func (c *apiClient) StopPublish(ctx context.Context, in *StreamSnapRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_StopPublish_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/StopPublish", in, out, opts...) if err != nil { return nil, err } @@ -295,9 +253,8 @@ func (c *apiClient) StopPublish(ctx context.Context, in *StreamSnapRequest, opts } func (c *apiClient) StopSubscribe(ctx context.Context, in *RequestWithId, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_StopSubscribe_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/StopSubscribe", in, out, opts...) if err != nil { return nil, err } @@ -305,9 +262,8 @@ func (c *apiClient) StopSubscribe(ctx context.Context, in *RequestWithId, opts . } func (c *apiClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, Api_GetConfig_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/GetConfig", in, out, opts...) if err != nil { return nil, err } @@ -315,9 +271,8 @@ func (c *apiClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts .. } func (c *apiClient) GetFormily(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, Api_GetFormily_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/GetFormily", in, out, opts...) if err != nil { return nil, err } @@ -325,9 +280,8 @@ func (c *apiClient) GetFormily(ctx context.Context, in *GetConfigRequest, opts . } func (c *apiClient) ModifyConfig(ctx context.Context, in *ModifyConfigRequest, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_ModifyConfig_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/ModifyConfig", in, out, opts...) if err != nil { return nil, err } @@ -335,9 +289,8 @@ func (c *apiClient) ModifyConfig(ctx context.Context, in *ModifyConfigRequest, o } func (c *apiClient) GetDeviceList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeviceListResponse) - err := c.cc.Invoke(ctx, Api_GetDeviceList_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/GetDeviceList", in, out, opts...) if err != nil { return nil, err } @@ -345,9 +298,8 @@ func (c *apiClient) GetDeviceList(ctx context.Context, in *emptypb.Empty, opts . } func (c *apiClient) AddDevice(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_AddDevice_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/AddDevice", in, out, opts...) if err != nil { return nil, err } @@ -355,9 +307,8 @@ func (c *apiClient) AddDevice(ctx context.Context, in *DeviceInfo, opts ...grpc. } func (c *apiClient) RemoveDevice(ctx context.Context, in *RequestWithId, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_RemoveDevice_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/RemoveDevice", in, out, opts...) if err != nil { return nil, err } @@ -365,9 +316,8 @@ func (c *apiClient) RemoveDevice(ctx context.Context, in *RequestWithId, opts .. } func (c *apiClient) UpdateDevice(ctx context.Context, in *DeviceInfo, opts ...grpc.CallOption) (*SuccessResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SuccessResponse) - err := c.cc.Invoke(ctx, Api_UpdateDevice_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/UpdateDevice", in, out, opts...) if err != nil { return nil, err } @@ -375,9 +325,8 @@ func (c *apiClient) UpdateDevice(ctx context.Context, in *DeviceInfo, opts ...gr } func (c *apiClient) GetRecording(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*RecordingListResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RecordingListResponse) - err := c.cc.Invoke(ctx, Api_GetRecording_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, "/global.api/GetRecording", in, out, opts...) if err != nil { return nil, err } @@ -386,7 +335,7 @@ func (c *apiClient) GetRecording(ctx context.Context, in *emptypb.Empty, opts .. // ApiServer is the server API for Api service. // All implementations must embed UnimplementedApiServer -// for forward compatibility. +// for forward compatibility type ApiServer interface { SysInfo(context.Context, *emptypb.Empty) (*SysInfoResponse, error) Summary(context.Context, *emptypb.Empty) (*SummaryResponse, error) @@ -406,6 +355,7 @@ type ApiServer interface { AudioTrackSnap(context.Context, *StreamSnapRequest) (*TrackSnapShotResponse, error) VideoTrackSnap(context.Context, *StreamSnapRequest) (*TrackSnapShotResponse, error) ChangeSubscribe(context.Context, *ChangeSubscribeRequest) (*SuccessResponse, error) + GetStreamAlias(context.Context, *emptypb.Empty) (*StreamAliasListResponse, error) SetStreamAlias(context.Context, *SetStreamAliasRequest) (*SuccessResponse, error) StopPublish(context.Context, *StreamSnapRequest) (*SuccessResponse, error) StopSubscribe(context.Context, *RequestWithId) (*SuccessResponse, error) @@ -420,12 +370,9 @@ type ApiServer interface { mustEmbedUnimplementedApiServer() } -// UnimplementedApiServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedApiServer struct{} +// UnimplementedApiServer must be embedded to have forward compatible implementations. +type UnimplementedApiServer struct { +} func (UnimplementedApiServer) SysInfo(context.Context, *emptypb.Empty) (*SysInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SysInfo not implemented") @@ -481,6 +428,9 @@ func (UnimplementedApiServer) VideoTrackSnap(context.Context, *StreamSnapRequest func (UnimplementedApiServer) ChangeSubscribe(context.Context, *ChangeSubscribeRequest) (*SuccessResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeSubscribe not implemented") } +func (UnimplementedApiServer) GetStreamAlias(context.Context, *emptypb.Empty) (*StreamAliasListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStreamAlias not implemented") +} func (UnimplementedApiServer) SetStreamAlias(context.Context, *SetStreamAliasRequest) (*SuccessResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetStreamAlias not implemented") } @@ -515,7 +465,6 @@ func (UnimplementedApiServer) GetRecording(context.Context, *emptypb.Empty) (*Re return nil, status.Errorf(codes.Unimplemented, "method GetRecording not implemented") } func (UnimplementedApiServer) mustEmbedUnimplementedApiServer() {} -func (UnimplementedApiServer) testEmbeddedByValue() {} // UnsafeApiServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ApiServer will @@ -525,13 +474,6 @@ type UnsafeApiServer interface { } func RegisterApiServer(s grpc.ServiceRegistrar, srv ApiServer) { - // If the following call pancis, it indicates UnimplementedApiServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } s.RegisterService(&Api_ServiceDesc, srv) } @@ -545,7 +487,7 @@ func _Api_SysInfo_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_SysInfo_FullMethodName, + FullMethod: "/global.api/SysInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).SysInfo(ctx, req.(*emptypb.Empty)) @@ -563,7 +505,7 @@ func _Api_Summary_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_Summary_FullMethodName, + FullMethod: "/global.api/Summary", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Summary(ctx, req.(*emptypb.Empty)) @@ -581,7 +523,7 @@ func _Api_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_Shutdown_FullMethodName, + FullMethod: "/global.api/Shutdown", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Shutdown(ctx, req.(*RequestWithId)) @@ -599,7 +541,7 @@ func _Api_Restart_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_Restart_FullMethodName, + FullMethod: "/global.api/Restart", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Restart(ctx, req.(*RequestWithId)) @@ -617,7 +559,7 @@ func _Api_TaskTree_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_TaskTree_FullMethodName, + FullMethod: "/global.api/TaskTree", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).TaskTree(ctx, req.(*emptypb.Empty)) @@ -635,7 +577,7 @@ func _Api_StopTask_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_StopTask_FullMethodName, + FullMethod: "/global.api/StopTask", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StopTask(ctx, req.(*RequestWithId64)) @@ -653,7 +595,7 @@ func _Api_RestartTask_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_RestartTask_FullMethodName, + FullMethod: "/global.api/RestartTask", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).RestartTask(ctx, req.(*RequestWithId64)) @@ -671,7 +613,7 @@ func _Api_StreamList_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_StreamList_FullMethodName, + FullMethod: "/global.api/StreamList", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StreamList(ctx, req.(*StreamListRequest)) @@ -689,7 +631,7 @@ func _Api_WaitList_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_WaitList_FullMethodName, + FullMethod: "/global.api/WaitList", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).WaitList(ctx, req.(*emptypb.Empty)) @@ -707,7 +649,7 @@ func _Api_StreamInfo_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_StreamInfo_FullMethodName, + FullMethod: "/global.api/StreamInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StreamInfo(ctx, req.(*StreamSnapRequest)) @@ -725,7 +667,7 @@ func _Api_PauseStream_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_PauseStream_FullMethodName, + FullMethod: "/global.api/PauseStream", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).PauseStream(ctx, req.(*StreamSnapRequest)) @@ -743,7 +685,7 @@ func _Api_ResumeStream_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_ResumeStream_FullMethodName, + FullMethod: "/global.api/ResumeStream", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).ResumeStream(ctx, req.(*StreamSnapRequest)) @@ -761,7 +703,7 @@ func _Api_SetStreamSpeed_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_SetStreamSpeed_FullMethodName, + FullMethod: "/global.api/SetStreamSpeed", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).SetStreamSpeed(ctx, req.(*SetStreamSpeedRequest)) @@ -779,7 +721,7 @@ func _Api_SeekStream_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_SeekStream_FullMethodName, + FullMethod: "/global.api/SeekStream", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).SeekStream(ctx, req.(*SeekStreamRequest)) @@ -797,7 +739,7 @@ func _Api_GetSubscribers_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_GetSubscribers_FullMethodName, + FullMethod: "/global.api/GetSubscribers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).GetSubscribers(ctx, req.(*SubscribersRequest)) @@ -815,7 +757,7 @@ func _Api_AudioTrackSnap_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_AudioTrackSnap_FullMethodName, + FullMethod: "/global.api/AudioTrackSnap", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).AudioTrackSnap(ctx, req.(*StreamSnapRequest)) @@ -833,7 +775,7 @@ func _Api_VideoTrackSnap_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_VideoTrackSnap_FullMethodName, + FullMethod: "/global.api/VideoTrackSnap", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).VideoTrackSnap(ctx, req.(*StreamSnapRequest)) @@ -851,7 +793,7 @@ func _Api_ChangeSubscribe_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_ChangeSubscribe_FullMethodName, + FullMethod: "/global.api/ChangeSubscribe", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).ChangeSubscribe(ctx, req.(*ChangeSubscribeRequest)) @@ -859,6 +801,24 @@ func _Api_ChangeSubscribe_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Api_GetStreamAlias_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApiServer).GetStreamAlias(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/global.api/GetStreamAlias", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApiServer).GetStreamAlias(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + func _Api_SetStreamAlias_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetStreamAliasRequest) if err := dec(in); err != nil { @@ -869,7 +829,7 @@ func _Api_SetStreamAlias_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_SetStreamAlias_FullMethodName, + FullMethod: "/global.api/SetStreamAlias", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).SetStreamAlias(ctx, req.(*SetStreamAliasRequest)) @@ -887,7 +847,7 @@ func _Api_StopPublish_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_StopPublish_FullMethodName, + FullMethod: "/global.api/StopPublish", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StopPublish(ctx, req.(*StreamSnapRequest)) @@ -905,7 +865,7 @@ func _Api_StopSubscribe_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_StopSubscribe_FullMethodName, + FullMethod: "/global.api/StopSubscribe", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StopSubscribe(ctx, req.(*RequestWithId)) @@ -923,7 +883,7 @@ func _Api_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_GetConfig_FullMethodName, + FullMethod: "/global.api/GetConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).GetConfig(ctx, req.(*GetConfigRequest)) @@ -941,7 +901,7 @@ func _Api_GetFormily_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_GetFormily_FullMethodName, + FullMethod: "/global.api/GetFormily", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).GetFormily(ctx, req.(*GetConfigRequest)) @@ -959,7 +919,7 @@ func _Api_ModifyConfig_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_ModifyConfig_FullMethodName, + FullMethod: "/global.api/ModifyConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).ModifyConfig(ctx, req.(*ModifyConfigRequest)) @@ -977,7 +937,7 @@ func _Api_GetDeviceList_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_GetDeviceList_FullMethodName, + FullMethod: "/global.api/GetDeviceList", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).GetDeviceList(ctx, req.(*emptypb.Empty)) @@ -995,7 +955,7 @@ func _Api_AddDevice_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_AddDevice_FullMethodName, + FullMethod: "/global.api/AddDevice", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).AddDevice(ctx, req.(*DeviceInfo)) @@ -1013,7 +973,7 @@ func _Api_RemoveDevice_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_RemoveDevice_FullMethodName, + FullMethod: "/global.api/RemoveDevice", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).RemoveDevice(ctx, req.(*RequestWithId)) @@ -1031,7 +991,7 @@ func _Api_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_UpdateDevice_FullMethodName, + FullMethod: "/global.api/UpdateDevice", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).UpdateDevice(ctx, req.(*DeviceInfo)) @@ -1049,7 +1009,7 @@ func _Api_GetRecording_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Api_GetRecording_FullMethodName, + FullMethod: "/global.api/GetRecording", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).GetRecording(ctx, req.(*emptypb.Empty)) @@ -1136,6 +1096,10 @@ var Api_ServiceDesc = grpc.ServiceDesc{ MethodName: "ChangeSubscribe", Handler: _Api_ChangeSubscribe_Handler, }, + { + MethodName: "GetStreamAlias", + Handler: _Api_GetStreamAlias_Handler, + }, { MethodName: "SetStreamAlias", Handler: _Api_SetStreamAlias_Handler, diff --git a/plugin/logrotate/api.go b/plugin/logrotate/api.go index 796b0f2..598a15e 100644 --- a/plugin/logrotate/api.go +++ b/plugin/logrotate/api.go @@ -24,7 +24,7 @@ func (h *LogRotatePlugin) List(context.Context, *emptypb.Empty) (*pb.ResponseFil Name: info.Name(), Size: info.Size(), }) } - return &pb.ResponseFileInfo{Files: fileInfos}, nil + return &pb.ResponseFileInfo{Data: fileInfos}, nil } } return nil, err @@ -37,7 +37,7 @@ func (h *LogRotatePlugin) Get(_ context.Context, req *pb.RequestFileInfo) (res * res = &pb.ResponseOpen{} content, err2 := io.ReadAll(file) if err2 == nil { - res.Content = string(content) + res.Data = string(content) } else { err = err2 } diff --git a/plugin/logrotate/pb/logrotate.pb.go b/plugin/logrotate/pb/logrotate.pb.go index e190cae..6582c78 100644 --- a/plugin/logrotate/pb/logrotate.pb.go +++ b/plugin/logrotate/pb/logrotate.pb.go @@ -27,7 +27,9 @@ type ResponseOpen struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } func (x *ResponseOpen) Reset() { @@ -62,9 +64,23 @@ func (*ResponseOpen) Descriptor() ([]byte, []int) { return file_logrotate_proto_rawDescGZIP(), []int{0} } -func (x *ResponseOpen) GetContent() string { +func (x *ResponseOpen) GetCode() int32 { if x != nil { - return x.Content + return x.Code + } + return 0 +} + +func (x *ResponseOpen) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *ResponseOpen) GetData() string { + if x != nil { + return x.Data } return "" } @@ -121,7 +137,9 @@ type ResponseFileInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Files []*FileInfo `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Data []*FileInfo `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` } func (x *ResponseFileInfo) Reset() { @@ -156,9 +174,23 @@ func (*ResponseFileInfo) Descriptor() ([]byte, []int) { return file_logrotate_proto_rawDescGZIP(), []int{2} } -func (x *ResponseFileInfo) GetFiles() []*FileInfo { +func (x *ResponseFileInfo) GetCode() int32 { if x != nil { - return x.Files + return x.Code + } + return 0 +} + +func (x *ResponseFileInfo) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *ResponseFileInfo) GetData() []*FileInfo { + if x != nil { + return x.Data } return nil } @@ -226,33 +258,38 @@ var file_logrotate_proto_rawDesc = []byte{ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x28, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x22, 0x2d, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x3d, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, - 0x32, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x32, 0xc5, 0x01, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x12, 0x58, 0x0a, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x6c, 0x6f, - 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x12, 0x13, 0x2f, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x64, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x6c, - 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x17, 0x2e, 0x6c, 0x6f, 0x67, 0x72, 0x6f, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4f, 0x70, 0x65, - 0x6e, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x6c, 0x6f, 0x67, 0x72, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x74, 0x2f, 0x7b, 0x66, - 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x42, 0x25, 0x5a, 0x23, 0x6d, - 0x37, 0x73, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2f, 0x6d, 0x37, 0x73, 0x2f, 0x76, 0x35, 0x2f, 0x70, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, 0x0f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 0x72, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x32, 0xc5, 0x01, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x12, + 0x58, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x1b, 0x2e, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x64, 0x0a, 0x03, 0x47, 0x65, 0x74, + 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x17, 0x2e, 0x6c, + 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, + 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, + 0x74, 0x2f, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x42, + 0x21, 0x5a, 0x1f, 0x6d, 0x37, 0x73, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2f, 0x76, 0x35, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x6c, 0x6f, 0x67, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } @@ -278,7 +315,7 @@ var file_logrotate_proto_goTypes = []interface{}{ (*emptypb.Empty)(nil), // 4: google.protobuf.Empty } var file_logrotate_proto_depIdxs = []int32{ - 3, // 0: logrotate.ResponseFileInfo.files:type_name -> logrotate.FileInfo + 3, // 0: logrotate.ResponseFileInfo.data:type_name -> logrotate.FileInfo 4, // 1: logrotate.api.List:input_type -> google.protobuf.Empty 1, // 2: logrotate.api.Get:input_type -> logrotate.RequestFileInfo 2, // 3: logrotate.api.List:output_type -> logrotate.ResponseFileInfo diff --git a/plugin/logrotate/pb/logrotate.proto b/plugin/logrotate/pb/logrotate.proto index 3a1adad..52c7309 100644 --- a/plugin/logrotate/pb/logrotate.proto +++ b/plugin/logrotate/pb/logrotate.proto @@ -18,7 +18,9 @@ service api { } message ResponseOpen { - string content = 1; + int32 code = 1; + string message = 2; + string data = 3; } message RequestFileInfo { @@ -26,7 +28,9 @@ message RequestFileInfo { } message ResponseFileInfo { - repeated FileInfo files = 1; + int32 code = 1; + string message = 2; + repeated FileInfo data = 3; } message FileInfo { diff --git a/plugin/rtsp/pkg/connection_test.go b/plugin/rtsp/pkg/connection_test.go new file mode 100644 index 0000000..03b1a7a --- /dev/null +++ b/plugin/rtsp/pkg/connection_test.go @@ -0,0 +1,274 @@ +package rtsp + +import ( + "context" + "fmt" + "io" + "log/slog" + "net" + "net/url" + "os" + "testing" + "time" + + "github.com/pion/rtcp" + "github.com/pion/rtp" + "github.com/pion/webrtc/v3" + "gopkg.in/yaml.v3" + "m7s.live/v5/pkg" + "m7s.live/v5/pkg/config" + "m7s.live/v5/pkg/util" + mrtp "m7s.live/v5/plugin/rtp/pkg" +) + +func parseRTSPDump(filename string) ([]Packet, error) { + data, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + var dump struct { + Packets []struct { + Packet int `yaml:"packet"` + Peer int `yaml:"peer"` + Index int `yaml:"index"` + Timestamp float64 `yaml:"timestamp"` + Data string `yaml:"data"` + } `yaml:"packets"` + } + + err = yaml.Unmarshal(data, &dump) + if err != nil { + return nil, err + } + + packets := make([]Packet, 0, len(dump.Packets)) + for _, p := range dump.Packets { + packets = append(packets, Packet{ + Index: p.Index, + Peer: p.Peer, + Timestamp: p.Timestamp, + Data: []byte(p.Data), + }) + } + + return packets, nil +} + +type RTSPMockConn struct { + packets []Packet + currentIndex int + peer int + readDeadline time.Time + closed bool + localAddr net.Addr + remoteAddr net.Addr +} + +type Packet struct { + Index int + Timestamp float64 + Peer int + Data []byte +} + +func NewRTSPMockConn(dumpFile string, peer int) (*RTSPMockConn, error) { + // Parse YAML dump file and extract packets + packets, err := parseRTSPDump(dumpFile) + if err != nil { + return nil, err + } + + return &RTSPMockConn{ + packets: packets, + currentIndex: 0, + peer: peer, + localAddr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8554}, + remoteAddr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 49152}, + }, nil +} + +// Read implements net.Conn interface +func (c *RTSPMockConn) Read(b []byte) (n int, err error) { + if c.closed { + return 0, io.EOF + } + + if c.currentIndex >= len(c.packets) { + return 0, io.EOF + } + + // Check read deadline + if !c.readDeadline.IsZero() && time.Now().After(c.readDeadline) { + return 0, os.ErrDeadlineExceeded + } + packet := c.packets[c.currentIndex] + for packet.Peer != c.peer { + c.currentIndex++ + packet = c.packets[c.currentIndex] + } + + n = copy(b, packet.Data) + if n == len(packet.Data) { + c.currentIndex++ + } else { + packet.Data = packet.Data[n:] + } + + return n, nil +} + +// Write implements net.Conn interface - just discard data +func (c *RTSPMockConn) Write(b []byte) (n int, err error) { + if c.closed { + return 0, io.ErrClosedPipe + } + return len(b), nil +} + +// Close implements net.Conn interface +func (c *RTSPMockConn) Close() error { + c.closed = true + return nil +} + +// LocalAddr implements net.Conn interface +func (c *RTSPMockConn) LocalAddr() net.Addr { + return c.localAddr +} + +// RemoteAddr implements net.Conn interface +func (c *RTSPMockConn) RemoteAddr() net.Addr { + return c.remoteAddr +} + +// SetDeadline implements net.Conn interface +func (c *RTSPMockConn) SetDeadline(t time.Time) error { + c.readDeadline = t + return nil +} + +// SetReadDeadline implements net.Conn interface +func (c *RTSPMockConn) SetReadDeadline(t time.Time) error { + c.readDeadline = t + return nil +} + +// SetWriteDeadline implements net.Conn interface +func (c *RTSPMockConn) SetWriteDeadline(t time.Time) error { + return nil +} + +func TestNetConnection_Receive(t *testing.T) { + conn, err := NewRTSPMockConn("/Users/dexter/project/v5/monibuca/example/default/dump/rtsp",0) + if err != nil { + t.Fatal(err) + } + allocator := util.NewScalableMemoryAllocator(1 << 12) + audioFrame, videoFrame := &mrtp.Audio{}, &mrtp.Video{} + audioFrame.RTPCodecParameters = &webrtc.RTPCodecParameters{ + RTPCodecCapability: webrtc.RTPCodecCapability{ + MimeType: "audio/MPEG4-GENERIC", + }, + } + audioFrame.SetAllocator(allocator) + videoFrame.RTPCodecParameters = &webrtc.RTPCodecParameters{ + RTPCodecCapability: webrtc.RTPCodecCapability{ + MimeType: webrtc.MimeTypeH264, + }, + } + videoFrame.SetAllocator(allocator) + c := NewNetConnection(conn) + c.Logger = slog.New(slog.NewTextHandler(os.Stdout, nil)) + c.Context, c.CancelCauseFunc = context.WithCancelCause(context.Background()) + var videoTrack *pkg.AVTrack + videoTrack = pkg.NewAVTrack(&mrtp.Video{}, c.Logger.With("track", "video"), &config.Publish{ + RingSize: util.Range[int]{20, 1024}, + }, util.NewPromise(context.Background())) + videoTrack.ICodecCtx = &mrtp.H264Ctx{} + if err := c.Receive(false, func(channelID byte, buf []byte) error { + switch int(channelID) { + case 2: + packet := &rtp.Packet{} + if err = packet.Unmarshal(buf); err != nil { + return err + } + if len(audioFrame.Packets) == 0 || packet.Timestamp == audioFrame.Packets[0].Timestamp { + audioFrame.AddRecycleBytes(buf) + audioFrame.Packets = append(audioFrame.Packets, packet) + return nil + } else { + // if err = r.WriteAudio(audioFrame); err != nil { + // return err + // } + audioFrame = &mrtp.Audio{} + audioFrame.AddRecycleBytes(buf) + audioFrame.Packets = []*rtp.Packet{packet} + // audioFrame.RTPCodecParameters = c.AudioCodecParameters + audioFrame.SetAllocator(allocator) + return nil + } + case 0: + packet := &rtp.Packet{} + if err = packet.Unmarshal(buf); err != nil { + return err + } + if len(videoFrame.Packets) == 0 || packet.Timestamp == videoFrame.Packets[0].Timestamp { + videoFrame.AddRecycleBytes(buf) + videoFrame.Packets = append(videoFrame.Packets, packet) + return nil + } else { + videoFrame.Parse(videoTrack) + // t := time.Now() + // if err = r.WriteVideo(videoFrame); err != nil { + // return err + // } + fmt.Println("write video", videoTrack.Value.Raw) + videoFrame = &mrtp.Video{} + videoFrame.RTPCodecParameters = &webrtc.RTPCodecParameters{ + RTPCodecCapability: webrtc.RTPCodecCapability{ + MimeType: webrtc.MimeTypeH264, + }, + } + videoFrame.AddRecycleBytes(buf) + videoFrame.Packets = []*rtp.Packet{packet} + // videoFrame.RTPCodecParameters = c.VideoCodecParameters + videoFrame.SetAllocator(allocator) + return nil + } + default: + + } + return pkg.ErrUnsupportCodec + }, func(channelID byte, buf []byte) error { + msg := &RTCP{Channel: channelID} + if err = msg.Header.Unmarshal(buf); err != nil { + return err + } + if msg.Packets, err = rtcp.Unmarshal(buf); err != nil { + return err + } + // r.Stream.Debug("rtcp", "type", msg.Header.Type, "length", msg.Header.Length) + // TODO: rtcp msg + return pkg.ErrDiscard + }); err != nil { + t.Errorf("NetConnection.Receive() error = %v", err) + } +} + +func TestNetConnection_Pull(t *testing.T) { + conn, err := NewRTSPMockConn("/Users/dexter/project/v5/monibuca/example/default/dump/rtsp", 1) + if err != nil { + t.Fatal(err) + } + client := NewPuller(config.Pull{ + URL: "rtsp://127.0.0.1:8554/dump/test", + }).(*Client) + client.NetConnection = &NetConnection{Conn: conn} + client.BufReader = util.NewBufReader(conn) + client.URL, _ = url.Parse("rtsp://127.0.0.1:8554/dump/test") + client.MemoryAllocator = util.NewScalableMemoryAllocator(1 << 12) + client.Logger = slog.New(slog.NewTextHandler(os.Stdout, nil)) + client.Context, client.CancelCauseFunc = context.WithCancelCause(context.Background()) + client.Run() +} diff --git a/scripts/README.md b/scripts/README.md index fce4511..b0c869a 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -6,4 +6,22 @@ # use protoc_global to genertate the go code form the proto.file 1. cd to the root -2. sh scripts/protoc_global.sh \ No newline at end of file +2. sh scripts/protoc_global.sh + + +# use loop.py to loop the ffmpeg command + +1. python scripts/loop.py + +# use mock.py to mock the tcp server + +使用方法: +1. 作为服务器运行 (监听端口 8554 并发送 peer 1 的数据): +```bash +python scripts/mock.py dump.rtsp 1 -l 8554 +``` + +2. 作为客户端运行 (连接到 192.168.1.100:554 并发送 peer 0 的数据): +```bash +python scripts/mock.py dump.rtsp 0 -c 192.168.1.100:554 +``` diff --git a/scripts/mock.py b/scripts/mock.py new file mode 100644 index 0000000..0d37756 --- /dev/null +++ b/scripts/mock.py @@ -0,0 +1,101 @@ +import yaml +import socket +import argparse +import base64 +import time +from typing import List, Dict + +class RtspMock: + def __init__(self, dump_file: str): + # Load and parse YAML file + with open(dump_file, 'r') as f: + data = yaml.safe_load(f) + + self.peers = {p['peer']: (p['host'], p['port']) for p in data['peers']} + self.packets = data['packets'] + + # Group packets by peer + self.peer_packets: Dict[int, List] = {} + for packet in self.packets: + peer = packet['peer'] + if peer not in self.peer_packets: + self.peer_packets[peer] = [] + self.peer_packets[peer].append(packet) + + def run_server(self, port: int, peer: int): + """Run as server listening on specified port""" + server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + server.bind(('0.0.0.0', port)) + server.listen(1) + + print(f"Listening on port {port}, will send peer {peer}'s packets") + + while True: + client, addr = server.accept() + print(f"Client connected from {addr}") + try: + self._send_packets(client, peer) + except Exception as e: + print(f"Error: {e}") + finally: + client.close() + + def run_client(self, host: str, port: int, peer: int): + """Run as client connecting to specified address""" + client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + print(f"Connecting to {host}:{port}, will send peer {peer}'s packets") + + try: + client.connect((host, port)) + self._send_packets(client, peer) + except Exception as e: + print(f"Error: {e}") + finally: + client.close() + + def _send_packets(self, sock: socket, peer: int): + """Send packets for specified peer""" + if peer not in self.peer_packets: + raise ValueError(f"No packets found for peer {peer}") + + packets = self.peer_packets[peer] + base_time = None + + for packet in packets: + if base_time is None: + base_time = packet['timestamp'] + + # Calculate delay + delay = packet['timestamp'] - base_time + if delay > 0: + time.sleep(delay) + + data = packet['data'] + sock.send(data) + print(f"Sent packet {packet['packet']} (index {packet['index']}) " + f"length {len(data)} bytes") + +def main(): + parser = argparse.ArgumentParser(description='RTSP Mock Server/Client') + parser.add_argument('dump_file', help='RTSP dump file in YAML format') + parser.add_argument('peer', type=int, help='Peer number to mock') + + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument('-l', '--listen', type=int, metavar='PORT', + help='Run as server listening on specified port') + group.add_argument('-c', '--connect', type=str, metavar='HOST:PORT', + help='Run as client connecting to specified address') + + args = parser.parse_args() + + mock = RtspMock(args.dump_file) + + if args.listen is not None: + mock.run_server(args.listen, args.peer) + else: + host, port = args.connect.split(':') + mock.run_client(host, int(port), args.peer) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/wait-stream.go b/wait-stream.go index 8c111e7..520e9e2 100644 --- a/wait-stream.go +++ b/wait-stream.go @@ -43,7 +43,7 @@ func (w *WaitManager) WakeUp(streamPath string, publisher *Publisher) { func (w *WaitManager) checkTimeout() { for waits := range w.Range { for sub := range waits.Range { - if time.Since(sub.waitStartTime) > sub.WaitTimeout { + if time.Since(sub.waitStartTime) > max(sub.WaitTimeout, sub.BufferTime) { sub.Stop(ErrSubscribeTimeout) } }