Feat: expire and reload bilibili live

This commit is contained in:
zijiren233 2024-05-10 23:33:47 +08:00
parent b32eafeb14
commit 6ce80d1aec
5 changed files with 111 additions and 171 deletions

View File

@ -371,7 +371,7 @@ func NewBilibiliMovieCache(movie *model.Movie) *BilibiliMovieCache {
NoSharedMovie: newMapCache(NewBilibiliNoSharedMovieCacheInitFunc(movie), time.Minute*60),
SharedMpd: refreshcache.NewRefreshCache(NewBilibiliSharedMpdCacheInitFunc(movie), time.Minute*60),
Subtitle: refreshcache.NewRefreshCache(NewBilibiliSubtitleCacheInitFunc(movie), 0),
Live: refreshcache.NewRefreshCache(NewBilibiliLiveCacheInitFunc(movie), 0),
Live: refreshcache.NewRefreshCache(NewBilibiliLiveCacheInitFunc(movie), time.Minute*55),
}
}

View File

@ -38,10 +38,10 @@ func (m *Movie) ExpireId() uint64 {
if amcd != nil && amcd.Ali != nil {
return uint64(m.AlistCache().Last())
}
fallthrough
default:
return uint64(crc32.ChecksumIEEE([]byte(m.Movie.ID)))
case m.Movie.Base.Live && m.Movie.Base.VendorInfo.Vendor == model.VendorBilibili:
return uint64(m.BilibiliCache().Live.Last())
}
return uint64(crc32.ChecksumIEEE([]byte(m.Movie.ID)))
}
func (m *Movie) CheckExpired(expireId uint64) bool {
@ -51,10 +51,10 @@ func (m *Movie) CheckExpired(expireId uint64) bool {
if amcd != nil && amcd.Ali != nil {
return time.Now().UnixNano()-int64(expireId) > m.AlistCache().MaxAge()
}
fallthrough
default:
return expireId != m.ExpireId()
case m.Movie.Base.Live && m.Movie.Base.VendorInfo.Vendor == model.VendorBilibili:
return time.Now().UnixNano()-int64(expireId) > m.BilibiliCache().Live.MaxAge()
}
return expireId != m.ExpireId()
}
func (m *Movie) ClearCache() error {

View File

@ -28,7 +28,7 @@ const (
ElementMessageType_CHAT_MESSAGE ElementMessageType = 2
ElementMessageType_PLAY ElementMessageType = 3
ElementMessageType_PAUSE ElementMessageType = 4
ElementMessageType_CHECK ElementMessageType = 5
ElementMessageType_CHECK_STATUS ElementMessageType = 5
ElementMessageType_TOO_FAST ElementMessageType = 6
ElementMessageType_TOO_SLOW ElementMessageType = 7
ElementMessageType_CHANGE_RATE ElementMessageType = 8
@ -38,6 +38,7 @@ const (
ElementMessageType_PEOPLE_CHANGED ElementMessageType = 12
ElementMessageType_SYNC_MOVIE_STATUS ElementMessageType = 13
ElementMessageType_CURRENT_EXPIRED ElementMessageType = 14
ElementMessageType_CHECK_EXPIRED ElementMessageType = 15
)
// Enum value maps for ElementMessageType.
@ -48,7 +49,7 @@ var (
2: "CHAT_MESSAGE",
3: "PLAY",
4: "PAUSE",
5: "CHECK",
5: "CHECK_STATUS",
6: "TOO_FAST",
7: "TOO_SLOW",
8: "CHANGE_RATE",
@ -58,6 +59,7 @@ var (
12: "PEOPLE_CHANGED",
13: "SYNC_MOVIE_STATUS",
14: "CURRENT_EXPIRED",
15: "CHECK_EXPIRED",
}
ElementMessageType_value = map[string]int32{
"UNKNOWN": 0,
@ -65,7 +67,7 @@ var (
"CHAT_MESSAGE": 2,
"PLAY": 3,
"PAUSE": 4,
"CHECK": 5,
"CHECK_STATUS": 5,
"TOO_FAST": 6,
"TOO_SLOW": 7,
"CHANGE_RATE": 8,
@ -75,6 +77,7 @@ var (
"PEOPLE_CHANGED": 12,
"SYNC_MOVIE_STATUS": 13,
"CURRENT_EXPIRED": 14,
"CHECK_EXPIRED": 15,
}
)
@ -333,61 +336,6 @@ func (x *MovieStatusChanged) GetStatus() *MovieStatus {
return nil
}
type CheckReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Status *MovieStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
ExpireId uint64 `protobuf:"varint,2,opt,name=expireId,proto3" json:"expireId,omitempty"`
}
func (x *CheckReq) Reset() {
*x = CheckReq{}
if protoimpl.UnsafeEnabled {
mi := &file_proto_message_message_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CheckReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CheckReq) ProtoMessage() {}
func (x *CheckReq) ProtoReflect() protoreflect.Message {
mi := &file_proto_message_message_proto_msgTypes[4]
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 CheckReq.ProtoReflect.Descriptor instead.
func (*CheckReq) Descriptor() ([]byte, []int) {
return file_proto_message_message_proto_rawDescGZIP(), []int{4}
}
func (x *CheckReq) GetStatus() *MovieStatus {
if x != nil {
return x.Status
}
return nil
}
func (x *CheckReq) GetExpireId() uint64 {
if x != nil {
return x.ExpireId
}
return 0
}
type ElementMessage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -401,7 +349,8 @@ type ElementMessage struct {
ChangeMovieStatusReq *MovieStatus `protobuf:"bytes,6,opt,name=changeMovieStatusReq,proto3" json:"changeMovieStatusReq,omitempty"`
MovieStatusChanged *MovieStatusChanged `protobuf:"bytes,7,opt,name=movieStatusChanged,proto3" json:"movieStatusChanged,omitempty"`
ChangeSeekReq float64 `protobuf:"fixed64,8,opt,name=changeSeekReq,proto3" json:"changeSeekReq,omitempty"`
CheckReq *CheckReq `protobuf:"bytes,9,opt,name=checkReq,proto3" json:"checkReq,omitempty"`
CheckStatusReq *MovieStatus `protobuf:"bytes,9,opt,name=checkStatusReq,proto3" json:"checkStatusReq,omitempty"`
ExpireId uint64 `protobuf:"varint,10,opt,name=expireId,proto3" json:"expireId,omitempty"`
PeopleChanged int64 `protobuf:"varint,11,opt,name=peopleChanged,proto3" json:"peopleChanged,omitempty"`
MoviesChanged *Sender `protobuf:"bytes,12,opt,name=moviesChanged,proto3" json:"moviesChanged,omitempty"`
CurrentChanged *Sender `protobuf:"bytes,13,opt,name=currentChanged,proto3" json:"currentChanged,omitempty"`
@ -410,7 +359,7 @@ type ElementMessage struct {
func (x *ElementMessage) Reset() {
*x = ElementMessage{}
if protoimpl.UnsafeEnabled {
mi := &file_proto_message_message_proto_msgTypes[5]
mi := &file_proto_message_message_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -423,7 +372,7 @@ func (x *ElementMessage) String() string {
func (*ElementMessage) ProtoMessage() {}
func (x *ElementMessage) ProtoReflect() protoreflect.Message {
mi := &file_proto_message_message_proto_msgTypes[5]
mi := &file_proto_message_message_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -436,7 +385,7 @@ func (x *ElementMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use ElementMessage.ProtoReflect.Descriptor instead.
func (*ElementMessage) Descriptor() ([]byte, []int) {
return file_proto_message_message_proto_rawDescGZIP(), []int{5}
return file_proto_message_message_proto_rawDescGZIP(), []int{4}
}
func (x *ElementMessage) GetType() ElementMessageType {
@ -495,13 +444,20 @@ func (x *ElementMessage) GetChangeSeekReq() float64 {
return 0
}
func (x *ElementMessage) GetCheckReq() *CheckReq {
func (x *ElementMessage) GetCheckStatusReq() *MovieStatus {
if x != nil {
return x.CheckReq
return x.CheckStatusReq
}
return nil
}
func (x *ElementMessage) GetExpireId() uint64 {
if x != nil {
return x.ExpireId
}
return 0
}
func (x *ElementMessage) GetPeopleChanged() int64 {
if x != nil {
return x.PeopleChanged
@ -548,64 +504,64 @@ var file_proto_message_message_proto_rawDesc = []byte{
0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x0a, 0x08, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f,
0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x49, 0x64, 0x22, 0xa8, 0x04,
0x0a, 0x0e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74,
0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61,
0x74, 0x52, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x74,
0x52, 0x65, 0x71, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68,
0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x52, 0x08, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70,
0x12, 0x46, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53,
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x12, 0x6d, 0x6f, 0x76, 0x69,
0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x07,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76,
0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52,
0x12, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x65,
0x6b, 0x52, 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x53, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x68, 0x65,
0x63, 0x6b, 0x52, 0x65, 0x71, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x52, 0x08, 0x63, 0x68,
0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65,
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70,
0x65, 0x6f, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0d,
0x6d, 0x6f, 0x76, 0x69, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0c, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x52, 0x0d, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x64, 0x12, 0x35, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2a, 0x85, 0x02, 0x0a, 0x12, 0x45, 0x6c, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x41, 0x54, 0x5f,
0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4c, 0x41,
0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x04, 0x12, 0x09,
0x0a, 0x05, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f,
0x5f, 0x46, 0x41, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x53,
0x4c, 0x4f, 0x57, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f,
0x52, 0x41, 0x54, 0x45, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45,
0x5f, 0x53, 0x45, 0x45, 0x4b, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45,
0x4e, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e,
0x4d, 0x4f, 0x56, 0x49, 0x45, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0b,
0x12, 0x12, 0x0a, 0x0e, 0x50, 0x45, 0x4f, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47,
0x45, 0x44, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4d, 0x4f, 0x56,
0x49, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x43,
0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0e,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd3, 0x04, 0x0a, 0x0e, 0x45, 0x6c,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12,
0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, 0x12,
0x2b, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65,
0x73, 0x70, 0x52, 0x08, 0x63, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x14,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x65, 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x14,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x12, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x12, 0x6d, 0x6f, 0x76,
0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12,
0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x71,
0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65,
0x65, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x6f, 0x76, 0x69, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x52, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
0x71, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a,
0x0d, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0d, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x73, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x6d, 0x6f, 0x76, 0x69, 0x65,
0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72,
0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52,
0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2a,
0x9f, 0x02, 0x0a, 0x12, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x10,
0x0a, 0x0c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02,
0x12, 0x08, 0x0a, 0x04, 0x50, 0x4c, 0x41, 0x59, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41,
0x55, 0x53, 0x45, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x53,
0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x46,
0x41, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x53, 0x4c, 0x4f,
0x57, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x41,
0x54, 0x45, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53,
0x45, 0x45, 0x4b, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54,
0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x4f,
0x56, 0x49, 0x45, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x12,
0x0a, 0x0e, 0x50, 0x45, 0x4f, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44,
0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4d, 0x4f, 0x56, 0x49, 0x45,
0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x55, 0x52,
0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x11,
0x0a, 0x0d, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10,
0x0f, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (
@ -621,33 +577,31 @@ func file_proto_message_message_proto_rawDescGZIP() []byte {
}
var file_proto_message_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_proto_message_message_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_proto_message_message_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_proto_message_message_proto_goTypes = []interface{}{
(ElementMessageType)(0), // 0: proto.ElementMessageType
(*ChatResp)(nil), // 1: proto.ChatResp
(*Sender)(nil), // 2: proto.Sender
(*MovieStatus)(nil), // 3: proto.MovieStatus
(*MovieStatusChanged)(nil), // 4: proto.MovieStatusChanged
(*CheckReq)(nil), // 5: proto.CheckReq
(*ElementMessage)(nil), // 6: proto.ElementMessage
(*ElementMessage)(nil), // 5: proto.ElementMessage
}
var file_proto_message_message_proto_depIdxs = []int32{
2, // 0: proto.ChatResp.sender:type_name -> proto.Sender
2, // 1: proto.MovieStatusChanged.sender:type_name -> proto.Sender
3, // 2: proto.MovieStatusChanged.status:type_name -> proto.MovieStatus
3, // 3: proto.CheckReq.status:type_name -> proto.MovieStatus
0, // 4: proto.ElementMessage.type:type_name -> proto.ElementMessageType
1, // 5: proto.ElementMessage.chatResp:type_name -> proto.ChatResp
3, // 6: proto.ElementMessage.changeMovieStatusReq:type_name -> proto.MovieStatus
4, // 7: proto.ElementMessage.movieStatusChanged:type_name -> proto.MovieStatusChanged
5, // 8: proto.ElementMessage.checkReq:type_name -> proto.CheckReq
2, // 9: proto.ElementMessage.moviesChanged:type_name -> proto.Sender
2, // 10: proto.ElementMessage.currentChanged:type_name -> proto.Sender
11, // [11:11] is the sub-list for method output_type
11, // [11:11] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name
11, // [11:11] is the sub-list for extension extendee
0, // [0:11] is the sub-list for field type_name
0, // 3: proto.ElementMessage.type:type_name -> proto.ElementMessageType
1, // 4: proto.ElementMessage.chatResp:type_name -> proto.ChatResp
3, // 5: proto.ElementMessage.changeMovieStatusReq:type_name -> proto.MovieStatus
4, // 6: proto.ElementMessage.movieStatusChanged:type_name -> proto.MovieStatusChanged
3, // 7: proto.ElementMessage.checkStatusReq:type_name -> proto.MovieStatus
2, // 8: proto.ElementMessage.moviesChanged:type_name -> proto.Sender
2, // 9: proto.ElementMessage.currentChanged:type_name -> proto.Sender
10, // [10:10] is the sub-list for method output_type
10, // [10:10] is the sub-list for method input_type
10, // [10:10] is the sub-list for extension type_name
10, // [10:10] is the sub-list for extension extendee
0, // [0:10] is the sub-list for field type_name
}
func init() { file_proto_message_message_proto_init() }
@ -705,18 +659,6 @@ func file_proto_message_message_proto_init() {
}
}
file_proto_message_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CheckReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_proto_message_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ElementMessage); i {
case 0:
return &v.state
@ -735,7 +677,7 @@ func file_proto_message_message_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_proto_message_message_proto_rawDesc,
NumEnums: 1,
NumMessages: 6,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -9,7 +9,7 @@ enum ElementMessageType {
CHAT_MESSAGE = 2;
PLAY = 3;
PAUSE = 4;
CHECK = 5;
CHECK_STATUS = 5;
TOO_FAST = 6;
TOO_SLOW = 7;
CHANGE_RATE = 8;
@ -19,6 +19,7 @@ enum ElementMessageType {
PEOPLE_CHANGED = 12;
SYNC_MOVIE_STATUS = 13;
CURRENT_EXPIRED = 14;
CHECK_EXPIRED = 15;
}
message ChatResp {
@ -42,11 +43,6 @@ message MovieStatusChanged {
MovieStatus status = 2;
}
message CheckReq {
MovieStatus status = 1;
uint64 expireId = 2;
}
message ElementMessage {
ElementMessageType type = 1;
int64 time = 2;
@ -56,7 +52,8 @@ message ElementMessage {
MovieStatus changeMovieStatusReq = 6;
MovieStatusChanged movieStatusChanged = 7;
double changeSeekReq = 8;
CheckReq checkReq = 9;
MovieStatus checkStatusReq = 9;
uint64 expireId = 10;
int64 peopleChanged = 11;
Sender moviesChanged = 12;
Sender currentChanged = 13;

View File

@ -236,9 +236,9 @@ func handleElementMsg(cli *op.Client, msg *pb.ElementMessage) error {
},
},
})
case pb.ElementMessageType_CHECK:
case pb.ElementMessageType_CHECK_EXPIRED:
current := cli.Room().Current()
if msg.CheckReq.ExpireId != 0 && current.MovieID != "" {
if msg.ExpireId != 0 && current.MovieID != "" {
currentMovie, err := cli.Room().GetMovieByID(current.MovieID)
if err != nil {
return cli.Send(&pb.ElementMessage{
@ -246,15 +246,16 @@ func handleElementMsg(cli *op.Client, msg *pb.ElementMessage) error {
Error: fmt.Sprintf("get movie by id error: %v", err),
})
}
if currentMovie.CheckExpired(msg.CheckReq.ExpireId) {
if currentMovie.CheckExpired(msg.ExpireId) {
return cli.Send(&pb.ElementMessage{
Type: pb.ElementMessageType_CURRENT_EXPIRED,
})
}
}
case pb.ElementMessageType_CHECK_STATUS:
current := cli.Room().Current()
status := current.Status
cliStatus := msg.CheckReq.Status
if status.Seek+maxInterval < cliStatus.Seek+timeDiff {
if status.Seek+maxInterval < msg.CheckStatusReq.Seek+timeDiff {
return cli.Send(&pb.ElementMessage{
Type: pb.ElementMessageType_TOO_FAST,
MovieStatusChanged: &pb.MovieStatusChanged{
@ -265,7 +266,7 @@ func handleElementMsg(cli *op.Client, msg *pb.ElementMessage) error {
},
},
})
} else if status.Seek-maxInterval > cliStatus.Seek+timeDiff {
} else if status.Seek-maxInterval > msg.CheckStatusReq.Seek+timeDiff {
return cli.Send(&pb.ElementMessage{
Type: pb.ElementMessageType_TOO_SLOW,
MovieStatusChanged: &pb.MovieStatusChanged{