mirror of
https://github.com/duanhf2012/origin.git
synced 2026-03-14 04:37:33 +08:00
优化RankService排行榜服务
This commit is contained in:
356
rpc/rank.pb.go
356
rpc/rank.pb.go
@@ -27,7 +27,6 @@ type RankData struct {
|
|||||||
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
|
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
|
||||||
SortData []int64 `protobuf:"varint,2,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
|
SortData []int64 `protobuf:"varint,2,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
|
||||||
Data []byte `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"`
|
Data []byte `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"`
|
||||||
ExpireMs int64 `protobuf:"varint,4,opt,name=expireMs,proto3" json:"expireMs,omitempty"`
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
@@ -87,17 +86,10 @@ func (m *RankData) GetData() []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RankData) GetExpireMs() int64 {
|
|
||||||
if m != nil {
|
|
||||||
return m.ExpireMs
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// RankPosData 排行数据——查询返回
|
// RankPosData 排行数据——查询返回
|
||||||
type RankPosData struct {
|
type RankPosData struct {
|
||||||
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
|
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
|
||||||
RankPos uint64 `protobuf:"varint,2,opt,name=RankPos,proto3" json:"RankPos,omitempty"`
|
Rank uint64 `protobuf:"varint,2,opt,name=Rank,proto3" json:"Rank,omitempty"`
|
||||||
SortData []int64 `protobuf:"varint,3,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
|
SortData []int64 `protobuf:"varint,3,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
|
||||||
Data []byte `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
|
Data []byte `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
@@ -145,9 +137,9 @@ func (m *RankPosData) GetKey() uint64 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RankPosData) GetRankPos() uint64 {
|
func (m *RankPosData) GetRank() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.RankPos
|
return m.Rank
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -172,6 +164,7 @@ type RankList struct {
|
|||||||
SkipListLevel int32 `protobuf:"varint,2,opt,name=SkipListLevel,proto3" json:"SkipListLevel,omitempty"`
|
SkipListLevel int32 `protobuf:"varint,2,opt,name=SkipListLevel,proto3" json:"SkipListLevel,omitempty"`
|
||||||
IsDec bool `protobuf:"varint,3,opt,name=IsDec,proto3" json:"IsDec,omitempty"`
|
IsDec bool `protobuf:"varint,3,opt,name=IsDec,proto3" json:"IsDec,omitempty"`
|
||||||
MaxRank uint64 `protobuf:"varint,4,opt,name=MaxRank,proto3" json:"MaxRank,omitempty"`
|
MaxRank uint64 `protobuf:"varint,4,opt,name=MaxRank,proto3" json:"MaxRank,omitempty"`
|
||||||
|
ExpireMs int64 `protobuf:"varint,5,opt,name=ExpireMs,proto3" json:"ExpireMs,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
@@ -238,6 +231,13 @@ func (m *RankList) GetMaxRank() uint64 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *RankList) GetExpireMs() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.ExpireMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// UpsetRankData 更新排行榜数据
|
// UpsetRankData 更新排行榜数据
|
||||||
type UpsetRankData struct {
|
type UpsetRankData struct {
|
||||||
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
||||||
@@ -294,7 +294,7 @@ func (m *UpsetRankData) GetRankDataList() []*RankData {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteByKey 更新排行榜数据
|
// DeleteByKey 删除排行榜数据
|
||||||
type DeleteByKey struct {
|
type DeleteByKey struct {
|
||||||
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
||||||
KeyList []uint64 `protobuf:"varint,2,rep,packed,name=KeyList,proto3" json:"KeyList,omitempty"`
|
KeyList []uint64 `protobuf:"varint,2,rep,packed,name=KeyList,proto3" json:"KeyList,omitempty"`
|
||||||
@@ -454,27 +454,27 @@ func (m *FindRankDataByKey) GetKey() uint64 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindRankDataByPos 查找排行信息
|
// FindRankDataByRank 查找排行信息
|
||||||
type FindRankDataByPos struct {
|
type FindRankDataByRank struct {
|
||||||
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
||||||
Pos uint64 `protobuf:"varint,2,opt,name=Pos,proto3" json:"Pos,omitempty"`
|
Rank uint64 `protobuf:"varint,2,opt,name=Rank,proto3" json:"Rank,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) Reset() { *m = FindRankDataByPos{} }
|
func (m *FindRankDataByRank) Reset() { *m = FindRankDataByRank{} }
|
||||||
func (m *FindRankDataByPos) String() string { return proto.CompactTextString(m) }
|
func (m *FindRankDataByRank) String() string { return proto.CompactTextString(m) }
|
||||||
func (*FindRankDataByPos) ProtoMessage() {}
|
func (*FindRankDataByRank) ProtoMessage() {}
|
||||||
func (*FindRankDataByPos) Descriptor() ([]byte, []int) {
|
func (*FindRankDataByRank) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_d5b64eda47521620, []int{7}
|
return fileDescriptor_d5b64eda47521620, []int{7}
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) XXX_Unmarshal(b []byte) error {
|
func (m *FindRankDataByRank) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *FindRankDataByRank) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
if deterministic {
|
||||||
return xxx_messageInfo_FindRankDataByPos.Marshal(b, m, deterministic)
|
return xxx_messageInfo_FindRankDataByRank.Marshal(b, m, deterministic)
|
||||||
} else {
|
} else {
|
||||||
b = b[:cap(b)]
|
b = b[:cap(b)]
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
@@ -484,54 +484,54 @@ func (m *FindRankDataByPos) XXX_Marshal(b []byte, deterministic bool) ([]byte, e
|
|||||||
return b[:n], nil
|
return b[:n], nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) XXX_Merge(src proto.Message) {
|
func (m *FindRankDataByRank) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_FindRankDataByPos.Merge(m, src)
|
xxx_messageInfo_FindRankDataByRank.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) XXX_Size() int {
|
func (m *FindRankDataByRank) XXX_Size() int {
|
||||||
return m.Size()
|
return m.Size()
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) XXX_DiscardUnknown() {
|
func (m *FindRankDataByRank) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_FindRankDataByPos.DiscardUnknown(m)
|
xxx_messageInfo_FindRankDataByRank.DiscardUnknown(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
var xxx_messageInfo_FindRankDataByPos proto.InternalMessageInfo
|
var xxx_messageInfo_FindRankDataByRank proto.InternalMessageInfo
|
||||||
|
|
||||||
func (m *FindRankDataByPos) GetRankId() uint64 {
|
func (m *FindRankDataByRank) GetRankId() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.RankId
|
return m.RankId
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) GetPos() uint64 {
|
func (m *FindRankDataByRank) GetRank() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.Pos
|
return m.Rank
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindRankDataListStartTo 查找排行信息,StartPos开始Count个
|
// FindRankDataList 查找排行信息
|
||||||
type FindRankDataListStartTo struct {
|
type FindRankDataList struct {
|
||||||
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
|
||||||
StartPos uint64 `protobuf:"varint,2,opt,name=StartPos,proto3" json:"StartPos,omitempty"`
|
StartRank uint64 `protobuf:"varint,2,opt,name=StartRank,proto3" json:"StartRank,omitempty"`
|
||||||
Count uint64 `protobuf:"varint,3,opt,name=Count,proto3" json:"Count,omitempty"`
|
Count uint64 `protobuf:"varint,3,opt,name=Count,proto3" json:"Count,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) Reset() { *m = FindRankDataListStartTo{} }
|
func (m *FindRankDataList) Reset() { *m = FindRankDataList{} }
|
||||||
func (m *FindRankDataListStartTo) String() string { return proto.CompactTextString(m) }
|
func (m *FindRankDataList) String() string { return proto.CompactTextString(m) }
|
||||||
func (*FindRankDataListStartTo) ProtoMessage() {}
|
func (*FindRankDataList) ProtoMessage() {}
|
||||||
func (*FindRankDataListStartTo) Descriptor() ([]byte, []int) {
|
func (*FindRankDataList) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_d5b64eda47521620, []int{8}
|
return fileDescriptor_d5b64eda47521620, []int{8}
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) XXX_Unmarshal(b []byte) error {
|
func (m *FindRankDataList) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return m.Unmarshal(b)
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *FindRankDataList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
if deterministic {
|
||||||
return xxx_messageInfo_FindRankDataListStartTo.Marshal(b, m, deterministic)
|
return xxx_messageInfo_FindRankDataList.Marshal(b, m, deterministic)
|
||||||
} else {
|
} else {
|
||||||
b = b[:cap(b)]
|
b = b[:cap(b)]
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
@@ -541,33 +541,33 @@ func (m *FindRankDataListStartTo) XXX_Marshal(b []byte, deterministic bool) ([]b
|
|||||||
return b[:n], nil
|
return b[:n], nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) XXX_Merge(src proto.Message) {
|
func (m *FindRankDataList) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_FindRankDataListStartTo.Merge(m, src)
|
xxx_messageInfo_FindRankDataList.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) XXX_Size() int {
|
func (m *FindRankDataList) XXX_Size() int {
|
||||||
return m.Size()
|
return m.Size()
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) XXX_DiscardUnknown() {
|
func (m *FindRankDataList) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_FindRankDataListStartTo.DiscardUnknown(m)
|
xxx_messageInfo_FindRankDataList.DiscardUnknown(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
var xxx_messageInfo_FindRankDataListStartTo proto.InternalMessageInfo
|
var xxx_messageInfo_FindRankDataList proto.InternalMessageInfo
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) GetRankId() uint64 {
|
func (m *FindRankDataList) GetRankId() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.RankId
|
return m.RankId
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) GetStartPos() uint64 {
|
func (m *FindRankDataList) GetStartRank() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.StartPos
|
return m.StartRank
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) GetCount() uint64 {
|
func (m *FindRankDataList) GetCount() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.Count
|
return m.Count
|
||||||
}
|
}
|
||||||
@@ -633,8 +633,8 @@ func (m *RankDataList) GetRankPosDataList() []*RankPosData {
|
|||||||
// RankResult
|
// RankResult
|
||||||
type RankResult struct {
|
type RankResult struct {
|
||||||
AddCount int32 `protobuf:"varint,1,opt,name=AddCount,proto3" json:"AddCount,omitempty"`
|
AddCount int32 `protobuf:"varint,1,opt,name=AddCount,proto3" json:"AddCount,omitempty"`
|
||||||
RemoveCount int32 `protobuf:"varint,2,opt,name=RemoveCount,proto3" json:"RemoveCount,omitempty"`
|
ModifyCount int32 `protobuf:"varint,2,opt,name=ModifyCount,proto3" json:"ModifyCount,omitempty"`
|
||||||
ModifyCount int32 `protobuf:"varint,3,opt,name=ModifyCount,proto3" json:"ModifyCount,omitempty"`
|
RemoveCount int32 `protobuf:"varint,3,opt,name=RemoveCount,proto3" json:"RemoveCount,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
@@ -680,16 +680,16 @@ func (m *RankResult) GetAddCount() int32 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RankResult) GetRemoveCount() int32 {
|
func (m *RankResult) GetModifyCount() int32 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.RemoveCount
|
return m.ModifyCount
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RankResult) GetModifyCount() int32 {
|
func (m *RankResult) GetRemoveCount() int32 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.ModifyCount
|
return m.RemoveCount
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -702,8 +702,8 @@ func init() {
|
|||||||
proto.RegisterType((*DeleteByKey)(nil), "rpc.DeleteByKey")
|
proto.RegisterType((*DeleteByKey)(nil), "rpc.DeleteByKey")
|
||||||
proto.RegisterType((*AddRankList)(nil), "rpc.AddRankList")
|
proto.RegisterType((*AddRankList)(nil), "rpc.AddRankList")
|
||||||
proto.RegisterType((*FindRankDataByKey)(nil), "rpc.FindRankDataByKey")
|
proto.RegisterType((*FindRankDataByKey)(nil), "rpc.FindRankDataByKey")
|
||||||
proto.RegisterType((*FindRankDataByPos)(nil), "rpc.FindRankDataByPos")
|
proto.RegisterType((*FindRankDataByRank)(nil), "rpc.FindRankDataByRank")
|
||||||
proto.RegisterType((*FindRankDataListStartTo)(nil), "rpc.FindRankDataListStartTo")
|
proto.RegisterType((*FindRankDataList)(nil), "rpc.FindRankDataList")
|
||||||
proto.RegisterType((*RankDataList)(nil), "rpc.RankDataList")
|
proto.RegisterType((*RankDataList)(nil), "rpc.RankDataList")
|
||||||
proto.RegisterType((*RankResult)(nil), "rpc.RankResult")
|
proto.RegisterType((*RankResult)(nil), "rpc.RankResult")
|
||||||
}
|
}
|
||||||
@@ -711,37 +711,37 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("proto/rpcproto/rank.proto", fileDescriptor_d5b64eda47521620) }
|
func init() { proto.RegisterFile("proto/rpcproto/rank.proto", fileDescriptor_d5b64eda47521620) }
|
||||||
|
|
||||||
var fileDescriptor_d5b64eda47521620 = []byte{
|
var fileDescriptor_d5b64eda47521620 = []byte{
|
||||||
// 468 bytes of a gzipped FileDescriptorProto
|
// 470 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdf, 0x8b, 0xd3, 0x40,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0x51, 0x8b, 0xd3, 0x40,
|
||||||
0x10, 0x26, 0x4d, 0x72, 0x2d, 0x93, 0x2b, 0x9e, 0xab, 0x68, 0xf4, 0xa1, 0x84, 0x45, 0xb0, 0x4f,
|
0x10, 0x66, 0x9b, 0xe4, 0x5a, 0x27, 0x57, 0xac, 0xab, 0x48, 0x14, 0x29, 0x61, 0x11, 0xec, 0x53,
|
||||||
0x15, 0x15, 0x7c, 0x50, 0x44, 0x7a, 0x16, 0xe1, 0xb8, 0x2b, 0xc8, 0x54, 0x5f, 0xee, 0x2d, 0x66,
|
0x45, 0x05, 0x1f, 0x14, 0xd1, 0x9e, 0x55, 0x38, 0xae, 0x05, 0xd9, 0xe2, 0xcb, 0x3d, 0x08, 0x31,
|
||||||
0x57, 0x0c, 0xad, 0xcd, 0x92, 0xec, 0x1d, 0xed, 0x7f, 0xe8, 0xa3, 0x7f, 0x82, 0xf4, 0x2f, 0x91,
|
0xbb, 0x42, 0x68, 0x6d, 0x96, 0xcd, 0xde, 0x71, 0xfd, 0x1f, 0xfe, 0x28, 0x1f, 0xfd, 0x09, 0xd2,
|
||||||
0xd9, 0x64, 0xf3, 0xe3, 0x8e, 0xf4, 0x6d, 0xbe, 0x6f, 0xbe, 0xcc, 0x37, 0x3b, 0x33, 0x04, 0x9e,
|
0x5f, 0x22, 0xb3, 0xc9, 0xa6, 0xc9, 0x61, 0xfa, 0x36, 0xdf, 0x37, 0x5f, 0xe6, 0x9b, 0x9d, 0x19,
|
||||||
0xa9, 0x3c, 0xd3, 0xd9, 0xab, 0x5c, 0x25, 0x55, 0x10, 0x6f, 0xd7, 0x33, 0x13, 0x32, 0x37, 0x57,
|
0x02, 0x8f, 0x94, 0xce, 0x4d, 0xfe, 0x5c, 0xab, 0xb4, 0x0a, 0x92, 0xed, 0x7a, 0x6a, 0x43, 0xea,
|
||||||
0x09, 0xff, 0x05, 0x23, 0x8c, 0xb7, 0xeb, 0x45, 0xac, 0x63, 0x76, 0x06, 0xee, 0xa5, 0xdc, 0x87,
|
0x69, 0x95, 0xb2, 0x05, 0x0c, 0x78, 0xb2, 0x5d, 0xcf, 0x13, 0x93, 0xd0, 0x11, 0x78, 0x17, 0x72,
|
||||||
0x4e, 0xe4, 0x4c, 0x3d, 0xa4, 0x90, 0x3d, 0x87, 0xd1, 0x2a, 0xcb, 0x35, 0x65, 0xc3, 0x41, 0xe4,
|
0x17, 0x91, 0x98, 0x4c, 0x7c, 0x8e, 0x21, 0x7d, 0x0c, 0x83, 0x55, 0xae, 0x0d, 0x66, 0xa3, 0x5e,
|
||||||
0x4e, 0x5d, 0xac, 0x31, 0x63, 0xe0, 0x19, 0xde, 0x8d, 0x9c, 0xe9, 0x29, 0x9a, 0x98, 0xf4, 0x72,
|
0xec, 0x4d, 0x3c, 0x5e, 0x63, 0x4a, 0xc1, 0xb7, 0xbc, 0x17, 0x93, 0xc9, 0x29, 0xb7, 0x31, 0x4b,
|
||||||
0xa7, 0xd2, 0x5c, 0x2e, 0x8b, 0xd0, 0x8b, 0x1c, 0xd2, 0x5b, 0xcc, 0x53, 0x08, 0xc8, 0xe9, 0x6b,
|
0x21, 0xc4, 0x6a, 0x5f, 0xf2, 0xa2, 0xa3, 0x20, 0x05, 0x1f, 0x05, 0x51, 0xcf, 0x52, 0x36, 0x6e,
|
||||||
0x56, 0xf4, 0x98, 0x85, 0x30, 0xac, 0x04, 0xe1, 0xc0, 0xb0, 0x16, 0x76, 0xda, 0x70, 0x7b, 0xda,
|
0x99, 0x78, 0x1d, 0x26, 0x7e, 0xc3, 0xe4, 0x17, 0x29, 0x7b, 0x5e, 0x64, 0x85, 0xa1, 0x0f, 0xe1,
|
||||||
0xf0, 0x9a, 0x36, 0xf8, 0xae, 0x7c, 0xd4, 0x55, 0x5a, 0x68, 0xf6, 0x04, 0x4e, 0x28, 0xbe, 0x10,
|
0x04, 0xe3, 0x73, 0x51, 0xb9, 0x54, 0x88, 0x3e, 0x85, 0xe1, 0x6a, 0x9d, 0x29, 0xd4, 0x2c, 0xe4,
|
||||||
0x95, 0x55, 0x85, 0xd8, 0x0b, 0x18, 0xaf, 0xd6, 0xa9, 0x22, 0xcd, 0x95, 0xbc, 0x95, 0x1b, 0xe3,
|
0xb5, 0xdc, 0x58, 0xc7, 0x80, 0xb7, 0x49, 0xfa, 0x00, 0x82, 0xf3, 0x62, 0x2e, 0x53, 0xfb, 0x88,
|
||||||
0xe9, 0x63, 0x97, 0x64, 0x8f, 0xc1, 0xbf, 0x28, 0x16, 0x32, 0x31, 0xaf, 0x1c, 0x61, 0x09, 0xa8,
|
0x01, 0x2f, 0x01, 0x8d, 0xa0, 0xbf, 0x4c, 0x6e, 0x6c, 0x9f, 0xbe, 0x2d, 0xea, 0x20, 0xb6, 0xfa,
|
||||||
0xd3, 0x65, 0xbc, 0xa3, 0x42, 0xc6, 0xd6, 0x43, 0x0b, 0xf9, 0x35, 0x8c, 0xbf, 0xab, 0x42, 0xea,
|
0xe9, 0x46, 0x65, 0x5a, 0x2e, 0x8b, 0x28, 0x88, 0x09, 0xb6, 0xea, 0x30, 0xbb, 0x84, 0xe1, 0x57,
|
||||||
0x7a, 0xa6, 0x7d, 0xf6, 0xaf, 0xe1, 0xd4, 0x6a, 0xc8, 0xcd, 0x4c, 0x37, 0x78, 0x33, 0x9e, 0xe5,
|
0x55, 0x48, 0x53, 0x8f, 0xb3, 0xab, 0xb5, 0x17, 0x70, 0xea, 0x34, 0xd8, 0x89, 0x1d, 0x6c, 0xf8,
|
||||||
0x2a, 0x99, 0xd9, 0x04, 0x76, 0x24, 0xfc, 0x13, 0x04, 0x0b, 0xb9, 0x91, 0x5a, 0x9e, 0xef, 0x69,
|
0x72, 0x38, 0xd5, 0x2a, 0x9d, 0xba, 0x04, 0x6f, 0x49, 0xd8, 0x7b, 0x08, 0xe7, 0x72, 0x23, 0x8d,
|
||||||
0x5c, 0x7d, 0x95, 0x43, 0x18, 0x5e, 0xca, 0x7d, 0x5d, 0xd4, 0x43, 0x0b, 0xf9, 0x3b, 0x08, 0xe6,
|
0x3c, 0xdb, 0xe1, 0x14, 0xbb, 0x2a, 0x47, 0xd0, 0xbf, 0x90, 0xbb, 0xba, 0xa8, 0xcf, 0x1d, 0x64,
|
||||||
0x42, 0xd4, 0x93, 0x79, 0x09, 0xc3, 0xb9, 0x10, 0x46, 0xe8, 0xdc, 0x71, 0x27, 0x12, 0x6d, 0x96,
|
0xaf, 0x21, 0x9c, 0x09, 0x51, 0x4f, 0xed, 0x19, 0xf4, 0x67, 0x42, 0x58, 0x21, 0xb9, 0xe5, 0x8e,
|
||||||
0x7f, 0x84, 0x87, 0x5f, 0xd2, 0xad, 0xb0, 0xcd, 0x1c, 0xb7, 0xaf, 0xf6, 0x3a, 0xa8, 0xf7, 0x7a,
|
0x24, 0x77, 0x59, 0xf6, 0x0e, 0xee, 0x7d, 0xce, 0xb6, 0xc2, 0x35, 0x73, 0xdc, 0xbe, 0x5a, 0x77,
|
||||||
0xff, 0x73, 0x5a, 0xe9, 0x91, 0xcf, 0x9b, 0x03, 0xa0, 0x90, 0x27, 0xf0, 0xb4, 0xfd, 0x39, 0x75,
|
0xaf, 0x5e, 0x37, 0xfb, 0x00, 0xb4, 0xfd, 0xb9, 0x9d, 0x62, 0xd7, 0xf7, 0xff, 0x39, 0x0e, 0xf6,
|
||||||
0xb4, 0xd2, 0x71, 0xae, 0xbf, 0x65, 0xbd, 0x45, 0xe8, 0x5e, 0x48, 0xd2, 0x54, 0xaa, 0x31, 0x6d,
|
0x0d, 0x46, 0xcd, 0x0a, 0x47, 0x77, 0xfe, 0x04, 0xee, 0xac, 0x4c, 0xa2, 0x4d, 0xa3, 0xc8, 0x81,
|
||||||
0xf4, 0x73, 0x76, 0xb3, 0xd5, 0x66, 0xa3, 0x1e, 0x96, 0x80, 0xab, 0xee, 0x3a, 0xe8, 0x3a, 0x2c,
|
0xc0, 0x5d, 0x7f, 0xcc, 0xaf, 0xb6, 0xc6, 0xee, 0xda, 0xe7, 0x25, 0x60, 0xaa, 0xbd, 0x0c, 0xbc,
|
||||||
0x2e, 0xd5, 0xa5, 0x41, 0x97, 0x64, 0xef, 0xe1, 0x41, 0xeb, 0xa4, 0x5b, 0x7b, 0x3c, 0xab, 0x27,
|
0x1b, 0x87, 0x4b, 0x75, 0x69, 0xd1, 0x26, 0xe9, 0x1b, 0xb8, 0xdb, 0xb8, 0xf3, 0xc6, 0x16, 0x47,
|
||||||
0x59, 0xe5, 0xf0, 0xae, 0x90, 0x6f, 0x00, 0x88, 0x42, 0x59, 0xdc, 0x6c, 0x34, 0x75, 0x3c, 0x17,
|
0xf5, 0x1c, 0xab, 0x1c, 0xbf, 0x2d, 0x64, 0x1b, 0x00, 0xa4, 0xb8, 0x2c, 0xae, 0x36, 0x06, 0x2f,
|
||||||
0xa2, 0xb1, 0xf2, 0xb1, 0xc6, 0x2c, 0x82, 0x00, 0xe5, 0xef, 0xec, 0x56, 0x96, 0xe9, 0xf2, 0x4e,
|
0x6a, 0x26, 0xc4, 0xc1, 0x2a, 0xe0, 0x35, 0xa6, 0x31, 0x84, 0xcb, 0x5c, 0x64, 0x3f, 0x76, 0x65,
|
||||||
0xdb, 0x14, 0x29, 0x96, 0x99, 0x48, 0x7f, 0xee, 0x9b, 0x97, 0xf9, 0xd8, 0xa6, 0xce, 0x1f, 0xfd,
|
0xba, 0xbc, 0xe0, 0x26, 0x85, 0x0a, 0x2e, 0x7f, 0xe6, 0xd7, 0xf2, 0xf0, 0xb2, 0x80, 0x37, 0xa9,
|
||||||
0x39, 0x4c, 0x9c, 0xbf, 0x87, 0x89, 0xf3, 0xef, 0x30, 0x71, 0xae, 0xfd, 0xd9, 0x87, 0x5c, 0x25,
|
0xb3, 0xfb, 0xbf, 0xf7, 0x63, 0xf2, 0x67, 0x3f, 0x26, 0x7f, 0xf7, 0x63, 0x72, 0x19, 0x4c, 0xdf,
|
||||||
0x3f, 0x4e, 0xcc, 0x7f, 0xe0, 0xed, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4b, 0x0e, 0xaf, 0x42,
|
0x6a, 0x95, 0x7e, 0x3f, 0xb1, 0x3f, 0x80, 0x57, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xb1,
|
||||||
0x24, 0x04, 0x00, 0x00,
|
0x14, 0x9a, 0x1d, 0x04, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RankData) Marshal() (dAtA []byte, err error) {
|
func (m *RankData) Marshal() (dAtA []byte, err error) {
|
||||||
@@ -768,11 +768,6 @@ func (m *RankData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i -= len(m.XXX_unrecognized)
|
i -= len(m.XXX_unrecognized)
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
if m.ExpireMs != 0 {
|
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.ExpireMs))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0x20
|
|
||||||
}
|
|
||||||
if len(m.Data) > 0 {
|
if len(m.Data) > 0 {
|
||||||
i -= len(m.Data)
|
i -= len(m.Data)
|
||||||
copy(dAtA[i:], m.Data)
|
copy(dAtA[i:], m.Data)
|
||||||
@@ -857,8 +852,8 @@ func (m *RankPosData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i--
|
i--
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
}
|
}
|
||||||
if m.RankPos != 0 {
|
if m.Rank != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.RankPos))
|
i = encodeVarintRank(dAtA, i, uint64(m.Rank))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x10
|
dAtA[i] = 0x10
|
||||||
}
|
}
|
||||||
@@ -894,6 +889,11 @@ func (m *RankList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i -= len(m.XXX_unrecognized)
|
i -= len(m.XXX_unrecognized)
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
|
if m.ExpireMs != 0 {
|
||||||
|
i = encodeVarintRank(dAtA, i, uint64(m.ExpireMs))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x28
|
||||||
|
}
|
||||||
if m.MaxRank != 0 {
|
if m.MaxRank != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.MaxRank))
|
i = encodeVarintRank(dAtA, i, uint64(m.MaxRank))
|
||||||
i--
|
i--
|
||||||
@@ -1096,7 +1096,7 @@ func (m *FindRankDataByKey) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
return len(dAtA) - i, nil
|
return len(dAtA) - i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) Marshal() (dAtA []byte, err error) {
|
func (m *FindRankDataByRank) Marshal() (dAtA []byte, err error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
dAtA = make([]byte, size)
|
dAtA = make([]byte, size)
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
@@ -1106,12 +1106,12 @@ func (m *FindRankDataByPos) Marshal() (dAtA []byte, err error) {
|
|||||||
return dAtA[:n], nil
|
return dAtA[:n], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) MarshalTo(dAtA []byte) (int, error) {
|
func (m *FindRankDataByRank) MarshalTo(dAtA []byte) (int, error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
func (m *FindRankDataByRank) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
i := len(dAtA)
|
i := len(dAtA)
|
||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
@@ -1120,8 +1120,8 @@ func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i -= len(m.XXX_unrecognized)
|
i -= len(m.XXX_unrecognized)
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
if m.Pos != 0 {
|
if m.Rank != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.Pos))
|
i = encodeVarintRank(dAtA, i, uint64(m.Rank))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x10
|
dAtA[i] = 0x10
|
||||||
}
|
}
|
||||||
@@ -1133,7 +1133,7 @@ func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
return len(dAtA) - i, nil
|
return len(dAtA) - i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) Marshal() (dAtA []byte, err error) {
|
func (m *FindRankDataList) Marshal() (dAtA []byte, err error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
dAtA = make([]byte, size)
|
dAtA = make([]byte, size)
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
@@ -1143,12 +1143,12 @@ func (m *FindRankDataListStartTo) Marshal() (dAtA []byte, err error) {
|
|||||||
return dAtA[:n], nil
|
return dAtA[:n], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) MarshalTo(dAtA []byte) (int, error) {
|
func (m *FindRankDataList) MarshalTo(dAtA []byte) (int, error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
func (m *FindRankDataList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
i := len(dAtA)
|
i := len(dAtA)
|
||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
@@ -1162,8 +1162,8 @@ func (m *FindRankDataListStartTo) MarshalToSizedBuffer(dAtA []byte) (int, error)
|
|||||||
i--
|
i--
|
||||||
dAtA[i] = 0x18
|
dAtA[i] = 0x18
|
||||||
}
|
}
|
||||||
if m.StartPos != 0 {
|
if m.StartRank != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.StartPos))
|
i = encodeVarintRank(dAtA, i, uint64(m.StartRank))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x10
|
dAtA[i] = 0x10
|
||||||
}
|
}
|
||||||
@@ -1245,13 +1245,13 @@ func (m *RankResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i -= len(m.XXX_unrecognized)
|
i -= len(m.XXX_unrecognized)
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
if m.ModifyCount != 0 {
|
if m.RemoveCount != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.ModifyCount))
|
i = encodeVarintRank(dAtA, i, uint64(m.RemoveCount))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x18
|
dAtA[i] = 0x18
|
||||||
}
|
}
|
||||||
if m.RemoveCount != 0 {
|
if m.ModifyCount != 0 {
|
||||||
i = encodeVarintRank(dAtA, i, uint64(m.RemoveCount))
|
i = encodeVarintRank(dAtA, i, uint64(m.ModifyCount))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x10
|
dAtA[i] = 0x10
|
||||||
}
|
}
|
||||||
@@ -1294,9 +1294,6 @@ func (m *RankData) Size() (n int) {
|
|||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovRank(uint64(l))
|
n += 1 + l + sovRank(uint64(l))
|
||||||
}
|
}
|
||||||
if m.ExpireMs != 0 {
|
|
||||||
n += 1 + sovRank(uint64(m.ExpireMs))
|
|
||||||
}
|
|
||||||
if m.XXX_unrecognized != nil {
|
if m.XXX_unrecognized != nil {
|
||||||
n += len(m.XXX_unrecognized)
|
n += len(m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
@@ -1312,8 +1309,8 @@ func (m *RankPosData) Size() (n int) {
|
|||||||
if m.Key != 0 {
|
if m.Key != 0 {
|
||||||
n += 1 + sovRank(uint64(m.Key))
|
n += 1 + sovRank(uint64(m.Key))
|
||||||
}
|
}
|
||||||
if m.RankPos != 0 {
|
if m.Rank != 0 {
|
||||||
n += 1 + sovRank(uint64(m.RankPos))
|
n += 1 + sovRank(uint64(m.Rank))
|
||||||
}
|
}
|
||||||
if len(m.SortData) > 0 {
|
if len(m.SortData) > 0 {
|
||||||
l = 0
|
l = 0
|
||||||
@@ -1350,6 +1347,9 @@ func (m *RankList) Size() (n int) {
|
|||||||
if m.MaxRank != 0 {
|
if m.MaxRank != 0 {
|
||||||
n += 1 + sovRank(uint64(m.MaxRank))
|
n += 1 + sovRank(uint64(m.MaxRank))
|
||||||
}
|
}
|
||||||
|
if m.ExpireMs != 0 {
|
||||||
|
n += 1 + sovRank(uint64(m.ExpireMs))
|
||||||
|
}
|
||||||
if m.XXX_unrecognized != nil {
|
if m.XXX_unrecognized != nil {
|
||||||
n += len(m.XXX_unrecognized)
|
n += len(m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
@@ -1435,7 +1435,7 @@ func (m *FindRankDataByKey) Size() (n int) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataByPos) Size() (n int) {
|
func (m *FindRankDataByRank) Size() (n int) {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -1444,8 +1444,8 @@ func (m *FindRankDataByPos) Size() (n int) {
|
|||||||
if m.RankId != 0 {
|
if m.RankId != 0 {
|
||||||
n += 1 + sovRank(uint64(m.RankId))
|
n += 1 + sovRank(uint64(m.RankId))
|
||||||
}
|
}
|
||||||
if m.Pos != 0 {
|
if m.Rank != 0 {
|
||||||
n += 1 + sovRank(uint64(m.Pos))
|
n += 1 + sovRank(uint64(m.Rank))
|
||||||
}
|
}
|
||||||
if m.XXX_unrecognized != nil {
|
if m.XXX_unrecognized != nil {
|
||||||
n += len(m.XXX_unrecognized)
|
n += len(m.XXX_unrecognized)
|
||||||
@@ -1453,7 +1453,7 @@ func (m *FindRankDataByPos) Size() (n int) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *FindRankDataListStartTo) Size() (n int) {
|
func (m *FindRankDataList) Size() (n int) {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -1462,8 +1462,8 @@ func (m *FindRankDataListStartTo) Size() (n int) {
|
|||||||
if m.RankId != 0 {
|
if m.RankId != 0 {
|
||||||
n += 1 + sovRank(uint64(m.RankId))
|
n += 1 + sovRank(uint64(m.RankId))
|
||||||
}
|
}
|
||||||
if m.StartPos != 0 {
|
if m.StartRank != 0 {
|
||||||
n += 1 + sovRank(uint64(m.StartPos))
|
n += 1 + sovRank(uint64(m.StartRank))
|
||||||
}
|
}
|
||||||
if m.Count != 0 {
|
if m.Count != 0 {
|
||||||
n += 1 + sovRank(uint64(m.Count))
|
n += 1 + sovRank(uint64(m.Count))
|
||||||
@@ -1504,12 +1504,12 @@ func (m *RankResult) Size() (n int) {
|
|||||||
if m.AddCount != 0 {
|
if m.AddCount != 0 {
|
||||||
n += 1 + sovRank(uint64(m.AddCount))
|
n += 1 + sovRank(uint64(m.AddCount))
|
||||||
}
|
}
|
||||||
if m.RemoveCount != 0 {
|
|
||||||
n += 1 + sovRank(uint64(m.RemoveCount))
|
|
||||||
}
|
|
||||||
if m.ModifyCount != 0 {
|
if m.ModifyCount != 0 {
|
||||||
n += 1 + sovRank(uint64(m.ModifyCount))
|
n += 1 + sovRank(uint64(m.ModifyCount))
|
||||||
}
|
}
|
||||||
|
if m.RemoveCount != 0 {
|
||||||
|
n += 1 + sovRank(uint64(m.RemoveCount))
|
||||||
|
}
|
||||||
if m.XXX_unrecognized != nil {
|
if m.XXX_unrecognized != nil {
|
||||||
n += len(m.XXX_unrecognized)
|
n += len(m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
@@ -1680,25 +1680,6 @@ func (m *RankData) Unmarshal(dAtA []byte) error {
|
|||||||
m.Data = []byte{}
|
m.Data = []byte{}
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 4:
|
|
||||||
if wireType != 0 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field ExpireMs", wireType)
|
|
||||||
}
|
|
||||||
m.ExpireMs = 0
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowRank
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
m.ExpireMs |= int64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipRank(dAtA[iNdEx:])
|
skippy, err := skipRank(dAtA[iNdEx:])
|
||||||
@@ -1774,9 +1755,9 @@ func (m *RankPosData) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
if wireType != 0 {
|
if wireType != 0 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field RankPos", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field Rank", wireType)
|
||||||
}
|
}
|
||||||
m.RankPos = 0
|
m.Rank = 0
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowRank
|
return ErrIntOverflowRank
|
||||||
@@ -1786,7 +1767,7 @@ func (m *RankPosData) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
m.RankPos |= uint64(b&0x7F) << shift
|
m.Rank |= uint64(b&0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -2032,6 +2013,25 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 5:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field ExpireMs", wireType)
|
||||||
|
}
|
||||||
|
m.ExpireMs = 0
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowRank
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
m.ExpireMs |= int64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipRank(dAtA[iNdEx:])
|
skippy, err := skipRank(dAtA[iNdEx:])
|
||||||
@@ -2493,7 +2493,7 @@ func (m *FindRankDataByKey) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
|
func (m *FindRankDataByRank) Unmarshal(dAtA []byte) error {
|
||||||
l := len(dAtA)
|
l := len(dAtA)
|
||||||
iNdEx := 0
|
iNdEx := 0
|
||||||
for iNdEx < l {
|
for iNdEx < l {
|
||||||
@@ -2516,10 +2516,10 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
|
|||||||
fieldNum := int32(wire >> 3)
|
fieldNum := int32(wire >> 3)
|
||||||
wireType := int(wire & 0x7)
|
wireType := int(wire & 0x7)
|
||||||
if wireType == 4 {
|
if wireType == 4 {
|
||||||
return fmt.Errorf("proto: FindRankDataByPos: wiretype end group for non-group")
|
return fmt.Errorf("proto: FindRankDataByRank: wiretype end group for non-group")
|
||||||
}
|
}
|
||||||
if fieldNum <= 0 {
|
if fieldNum <= 0 {
|
||||||
return fmt.Errorf("proto: FindRankDataByPos: illegal tag %d (wire type %d)", fieldNum, wire)
|
return fmt.Errorf("proto: FindRankDataByRank: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
}
|
}
|
||||||
switch fieldNum {
|
switch fieldNum {
|
||||||
case 1:
|
case 1:
|
||||||
@@ -2543,9 +2543,9 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
if wireType != 0 {
|
if wireType != 0 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Pos", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field Rank", wireType)
|
||||||
}
|
}
|
||||||
m.Pos = 0
|
m.Rank = 0
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowRank
|
return ErrIntOverflowRank
|
||||||
@@ -2555,7 +2555,7 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
m.Pos |= uint64(b&0x7F) << shift
|
m.Rank |= uint64(b&0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -2585,7 +2585,7 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
|
func (m *FindRankDataList) Unmarshal(dAtA []byte) error {
|
||||||
l := len(dAtA)
|
l := len(dAtA)
|
||||||
iNdEx := 0
|
iNdEx := 0
|
||||||
for iNdEx < l {
|
for iNdEx < l {
|
||||||
@@ -2608,10 +2608,10 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
|
|||||||
fieldNum := int32(wire >> 3)
|
fieldNum := int32(wire >> 3)
|
||||||
wireType := int(wire & 0x7)
|
wireType := int(wire & 0x7)
|
||||||
if wireType == 4 {
|
if wireType == 4 {
|
||||||
return fmt.Errorf("proto: FindRankDataListStartTo: wiretype end group for non-group")
|
return fmt.Errorf("proto: FindRankDataList: wiretype end group for non-group")
|
||||||
}
|
}
|
||||||
if fieldNum <= 0 {
|
if fieldNum <= 0 {
|
||||||
return fmt.Errorf("proto: FindRankDataListStartTo: illegal tag %d (wire type %d)", fieldNum, wire)
|
return fmt.Errorf("proto: FindRankDataList: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
}
|
}
|
||||||
switch fieldNum {
|
switch fieldNum {
|
||||||
case 1:
|
case 1:
|
||||||
@@ -2635,9 +2635,9 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
if wireType != 0 {
|
if wireType != 0 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field StartPos", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field StartRank", wireType)
|
||||||
}
|
}
|
||||||
m.StartPos = 0
|
m.StartRank = 0
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowRank
|
return ErrIntOverflowRank
|
||||||
@@ -2647,7 +2647,7 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
m.StartPos |= uint64(b&0x7F) << shift
|
m.StartRank |= uint64(b&0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -2852,25 +2852,6 @@ func (m *RankResult) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
if wireType != 0 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field RemoveCount", wireType)
|
|
||||||
}
|
|
||||||
m.RemoveCount = 0
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowRank
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
m.RemoveCount |= int32(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
if wireType != 0 {
|
if wireType != 0 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field ModifyCount", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field ModifyCount", wireType)
|
||||||
}
|
}
|
||||||
@@ -2889,6 +2870,25 @@ func (m *RankResult) Unmarshal(dAtA []byte) error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 3:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field RemoveCount", wireType)
|
||||||
|
}
|
||||||
|
m.RemoveCount = 0
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowRank
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
m.RemoveCount |= int32(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipRank(dAtA[iNdEx:])
|
skippy, err := skipRank(dAtA[iNdEx:])
|
||||||
|
|||||||
76
rpc/rank.proto
Normal file
76
rpc/rank.proto
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package rpc;
|
||||||
|
option go_package = ".;rpc";
|
||||||
|
|
||||||
|
// RankData 排行数据
|
||||||
|
message RankData {
|
||||||
|
uint64 Key = 1; //数据主建
|
||||||
|
repeated int64 SortData = 2; //参与排行的数据
|
||||||
|
bytes Data = 3; //不参与排行的数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// RankPosData 排行数据——查询返回
|
||||||
|
message RankPosData {
|
||||||
|
uint64 Key = 1; //数据主建
|
||||||
|
uint64 Rank = 2; //名次
|
||||||
|
repeated int64 SortData = 3; //参与排行的数据
|
||||||
|
bytes Data = 4; //不参与排行的数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// RankList 排行榜数据
|
||||||
|
message RankList {
|
||||||
|
uint64 RankId = 1; //排行榜类型
|
||||||
|
int32 SkipListLevel = 2; //排行榜level-生成的跳表的level, 8/16/32/64等
|
||||||
|
bool IsDec = 3; //不参与排行的数据
|
||||||
|
uint64 MaxRank = 4; //最大排名
|
||||||
|
int64 ExpireMs = 5;//有效时间毫秒,0表示永不过期
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpsetRankData 更新排行榜数据
|
||||||
|
message UpsetRankData {
|
||||||
|
uint64 RankId = 1; //排行榜的ID
|
||||||
|
repeated RankData RankDataList = 2; //排行数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByKey 删除排行榜数据
|
||||||
|
message DeleteByKey {
|
||||||
|
uint64 RankId = 1; //排行榜的分类ID
|
||||||
|
repeated uint64 KeyList = 2; //排行数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddRankList 新增排行榜
|
||||||
|
message AddRankList {
|
||||||
|
repeated RankList AddList = 1; //添加的排行榜列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindRankDataByKey 查找排行信息
|
||||||
|
message FindRankDataByKey {
|
||||||
|
uint64 RankId = 1; //排行榜的ID
|
||||||
|
uint64 Key = 2; //排行的key
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindRankDataByRank 查找排行信息
|
||||||
|
message FindRankDataByRank {
|
||||||
|
uint64 RankId = 1; //排行榜的ID
|
||||||
|
uint64 Rank = 2; //排行名次
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindRankDataList 查找排行信息
|
||||||
|
message FindRankDataList {
|
||||||
|
uint64 RankId = 1; //排行榜的ID
|
||||||
|
uint64 StartRank = 2; //排行的位置 0开始
|
||||||
|
uint64 Count = 3; //查询格式
|
||||||
|
}
|
||||||
|
|
||||||
|
// RankDataList
|
||||||
|
message RankDataList {
|
||||||
|
uint64 RankDataCount = 1; //排行长度
|
||||||
|
repeated RankPosData RankPosDataList = 2; //排行数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// RankResult
|
||||||
|
message RankResult {
|
||||||
|
int32 AddCount = 1;//新增数量
|
||||||
|
int32 ModifyCount = 2; //修改数量
|
||||||
|
int32 RemoveCount = 3;//删除数量
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ var RankDataPool = sync.NewPoolEx(make(chan sync.IPoolData, 10240), func() sync.
|
|||||||
|
|
||||||
type RankData struct {
|
type RankData struct {
|
||||||
*rpc.RankData
|
*rpc.RankData
|
||||||
|
bRelease bool
|
||||||
ref bool
|
ref bool
|
||||||
compareFunc func(other skip.Comparator) int
|
compareFunc func(other skip.Comparator) int
|
||||||
}
|
}
|
||||||
|
|||||||
127
sysservice/rankservice/RankDataExpire.go
Normal file
127
sysservice/rankservice/RankDataExpire.go
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
package rankservice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"container/heap"
|
||||||
|
|
||||||
|
"github.com/duanhf2012/origin/util/sync"
|
||||||
|
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var expireDataPool = sync.NewPoolEx(make(chan sync.IPoolData, 10240), func() sync.IPoolData {
|
||||||
|
return &ExpireData{}
|
||||||
|
})
|
||||||
|
|
||||||
|
type ExpireData struct {
|
||||||
|
Index int
|
||||||
|
Key uint64
|
||||||
|
RefreshTimestamp int64
|
||||||
|
ref bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type rankDataHeap struct {
|
||||||
|
rankDatas []*ExpireData
|
||||||
|
expireMs int64
|
||||||
|
mapExpireData map[uint64]*ExpireData
|
||||||
|
}
|
||||||
|
|
||||||
|
var expireData ExpireData
|
||||||
|
func (ed *ExpireData) Reset(){
|
||||||
|
*ed = expireData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ed *ExpireData) IsRef() bool{
|
||||||
|
return ed.ref
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ed *ExpireData) Ref(){
|
||||||
|
ed.ref = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ed *ExpireData) UnRef(){
|
||||||
|
ed.ref = false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Init(maxRankDataCount int32,expireMs time.Duration){
|
||||||
|
rd.rankDatas = make([]*ExpireData,0,maxRankDataCount)
|
||||||
|
rd.expireMs = int64(expireMs)
|
||||||
|
rd.mapExpireData = make(map[uint64]*ExpireData,512)
|
||||||
|
heap.Init(rd)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Len() int {
|
||||||
|
return len(rd.rankDatas)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Less(i, j int) bool {
|
||||||
|
return rd.rankDatas[i].RefreshTimestamp < rd.rankDatas[j].RefreshTimestamp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Swap(i, j int) {
|
||||||
|
rd.rankDatas[i], rd.rankDatas[j] = rd.rankDatas[j], rd.rankDatas[i]
|
||||||
|
rd.rankDatas[i].Index,rd.rankDatas[j].Index = i,j
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Push(x interface{}) {
|
||||||
|
ed := x.(*ExpireData)
|
||||||
|
ed.Index = len(rd.rankDatas)
|
||||||
|
rd.rankDatas = append(rd.rankDatas,ed)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) Pop() (ret interface{}) {
|
||||||
|
l := len(rd.rankDatas)
|
||||||
|
var retData *ExpireData
|
||||||
|
rd.rankDatas, retData = rd.rankDatas[:l-1], rd.rankDatas[l-1]
|
||||||
|
retData.Index = -1
|
||||||
|
ret = retData
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) PopExpireKey() uint64{
|
||||||
|
if rd.Len() <= 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if rd.rankDatas[0].RefreshTimestamp+rd.expireMs > time.Now().UnixNano() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
rankData := heap.Pop(rd).(*ExpireData)
|
||||||
|
delete(rd.mapExpireData,rankData.Key)
|
||||||
|
|
||||||
|
return rankData.Key
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) PushOrRefreshExpireKey(key uint64){
|
||||||
|
//1.先删掉之前的
|
||||||
|
expData ,ok := rd.mapExpireData[key]
|
||||||
|
if ok == true {
|
||||||
|
expData.RefreshTimestamp = time.Now().UnixNano()
|
||||||
|
heap.Fix(rd,expData.Index)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//2.直接插入
|
||||||
|
expData = expireDataPool.Get().(*ExpireData)
|
||||||
|
expData.Key = key
|
||||||
|
expData.RefreshTimestamp = time.Now().UnixNano()
|
||||||
|
rd.mapExpireData[key] = expData
|
||||||
|
|
||||||
|
heap.Push(rd,expData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rd *rankDataHeap) RemoveExpireKey(key uint64){
|
||||||
|
expData ,ok := rd.mapExpireData[key]
|
||||||
|
if ok == false {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(rd.mapExpireData,key)
|
||||||
|
heap.Remove(rd,expData.Index)
|
||||||
|
expireDataPool.Put(expData)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4,23 +4,13 @@ import "github.com/duanhf2012/origin/service"
|
|||||||
|
|
||||||
type RankDataChangeType int8
|
type RankDataChangeType int8
|
||||||
|
|
||||||
const (
|
|
||||||
RankDataNone RankDataChangeType = 0
|
|
||||||
RankDataAdd RankDataChangeType = 1 //数据插入
|
|
||||||
RankDataUpdate RankDataChangeType = 2 //数据更新
|
|
||||||
RankDataDelete RankDataChangeType = 3 //数据删除
|
|
||||||
)
|
|
||||||
|
|
||||||
type IRankSkip interface {
|
type IRankSkip interface {
|
||||||
GetRankID() uint64
|
GetRankID() uint64
|
||||||
GetRankLen() uint64
|
GetRankLen() uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// RankDataChangeCallBack 排行数据变化时调用
|
|
||||||
//type RankDataChangeCallBack interface {
|
|
||||||
// CB(iRankService service.IService, rankSkip IRankSkip, changeType RankDataChangeType, changed []*RankData)
|
|
||||||
//}
|
|
||||||
|
|
||||||
type IRankModule interface {
|
type IRankModule interface {
|
||||||
service.IModule
|
service.IModule
|
||||||
|
|
||||||
|
|||||||
@@ -3,22 +3,12 @@ package rankservice
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/duanhf2012/origin/log"
|
"github.com/duanhf2012/origin/log"
|
||||||
"github.com/duanhf2012/origin/node"
|
|
||||||
"github.com/duanhf2012/origin/rpc"
|
"github.com/duanhf2012/origin/rpc"
|
||||||
"github.com/duanhf2012/origin/service"
|
"github.com/duanhf2012/origin/service"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
node.Setup(&RankService{})
|
|
||||||
}
|
|
||||||
|
|
||||||
const PreMapRankSkipLen = 10
|
const PreMapRankSkipLen = 10
|
||||||
const ManualAddRankSkip = "RPC_ManualAddRankSkip"
|
|
||||||
const UpsetRank = "RPC_UpsetRank"
|
|
||||||
const DeleteRankDataByKey = "RPC_DeleteRankDataByKey"
|
|
||||||
const FindRankDataByKey = "RPC_FindRankDataByKey"
|
|
||||||
const FindRankDataByPos = "RPC_FindRankDataByPos"
|
|
||||||
const FindRankDataListStartTo = "RPC_FindRankDataListStartTo"
|
|
||||||
|
|
||||||
type RankService struct {
|
type RankService struct {
|
||||||
service.Service
|
service.Service
|
||||||
@@ -68,7 +58,7 @@ func (rs *RankService) RPC_ManualAddRankSkip(addInfo *rpc.AddRankList, addResult
|
|||||||
return fmt.Errorf("RPC_AddRankSkip must has rank id")
|
return fmt.Errorf("RPC_AddRankSkip must has rank id")
|
||||||
}
|
}
|
||||||
|
|
||||||
newSkip := NewRankSkip(addRankListData.IsDec, transformLevel(addRankListData.SkipListLevel), addRankListData.MaxRank)
|
newSkip := NewRankSkip(addRankListData.IsDec, transformLevel(addRankListData.SkipListLevel), addRankListData.MaxRank,time.Duration(addRankListData.ExpireMs)*time.Millisecond)
|
||||||
rs.mapRankSkip[addRankListData.RankId] = newSkip
|
rs.mapRankSkip[addRankListData.RankId] = newSkip
|
||||||
addList = append(addList, addRankListData.RankId)
|
addList = append(addList, addRankListData.RankId)
|
||||||
}
|
}
|
||||||
@@ -91,7 +81,7 @@ func (rs *RankService) RPC_UpsetRank(upsetInfo *rpc.UpsetRankData, upsetResult *
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC_DeleteRankDataByKey 按排行的key进行删除
|
// RPC_DeleteRankDataByKey 按key从排行榜中进行删除
|
||||||
func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResult *rpc.RankResult) error {
|
func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResult *rpc.RankResult) error {
|
||||||
rankSkip, ok := rs.mapRankSkip[delInfo.RankId]
|
rankSkip, ok := rs.mapRankSkip[delInfo.RankId]
|
||||||
if ok == false || rankSkip == nil {
|
if ok == false || rankSkip == nil {
|
||||||
@@ -107,49 +97,49 @@ func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResu
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC_FindRankDataByKey 按key查找
|
// RPC_FindRankDataByKey 按key查找,返回对应的排行名次信息
|
||||||
func (rs *RankService) RPC_FindRankDataByKey(findInfo *rpc.FindRankDataByKey, findResult *rpc.RankPosData) error {
|
func (rs *RankService) RPC_FindRankDataByKey(findInfo *rpc.FindRankDataByKey, findResult *rpc.RankPosData) error {
|
||||||
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
||||||
if ok == false || rankObj == nil {
|
if ok == false || rankObj == nil {
|
||||||
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
|
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
|
||||||
}
|
}
|
||||||
|
|
||||||
findRankData, rankPos := rankObj.GetRankNodeData(findInfo.Key)
|
findRankData, rank := rankObj.GetRankNodeData(findInfo.Key)
|
||||||
if findRankData != nil {
|
if findRankData != nil {
|
||||||
findResult.Data = findRankData.Data
|
findResult.Data = findRankData.Data
|
||||||
findResult.Key = findRankData.Key
|
findResult.Key = findRankData.Key
|
||||||
findResult.SortData = findRankData.SortData
|
findResult.SortData = findRankData.SortData
|
||||||
findResult.RankPos = rankPos
|
findResult.Rank = rank
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC_FindRankDataByPos 按pos查找
|
// RPC_FindRankDataByRank 按pos查找
|
||||||
func (rs *RankService) RPC_FindRankDataByPos(findInfo *rpc.FindRankDataByPos, findResult *rpc.RankPosData) error {
|
func (rs *RankService) RPC_FindRankDataByRank(findInfo *rpc.FindRankDataByRank, findResult *rpc.RankPosData) error {
|
||||||
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
||||||
if ok == false || rankObj == nil {
|
if ok == false || rankObj == nil {
|
||||||
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
|
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
|
||||||
}
|
}
|
||||||
|
|
||||||
findRankData, rankPos := rankObj.GetRankNodeDataByPos(findInfo.Pos)
|
findRankData, rankPos := rankObj.GetRankNodeDataByRank(findInfo.Rank)
|
||||||
if findRankData != nil {
|
if findRankData != nil {
|
||||||
findResult.Data = findRankData.Data
|
findResult.Data = findRankData.Data
|
||||||
findResult.Key = findRankData.Key
|
findResult.Key = findRankData.Key
|
||||||
findResult.SortData = findRankData.SortData
|
findResult.SortData = findRankData.SortData
|
||||||
findResult.RankPos = rankPos
|
findResult.Rank = rankPos
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RPC_FindRankDataListStartTo 按pos查找,start开始count个排行数据
|
// RPC_FindRankDataList 按StartRank查找,从StartRank开始count个排行数据
|
||||||
func (rs *RankService) RPC_FindRankDataListStartTo(findInfo *rpc.FindRankDataListStartTo, findResult *rpc.RankDataList) error {
|
func (rs *RankService) RPC_FindRankDataList(findInfo *rpc.FindRankDataList, findResult *rpc.RankDataList) error {
|
||||||
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
rankObj, ok := rs.mapRankSkip[findInfo.RankId]
|
||||||
if ok == false || rankObj == nil {
|
if ok == false || rankObj == nil {
|
||||||
return fmt.Errorf("RPC_FindRankDataListStartTo[", findInfo.RankId, "] no this rank type")
|
return fmt.Errorf("RPC_FindRankDataListStartTo[", findInfo.RankId, "] no this rank type")
|
||||||
}
|
}
|
||||||
|
|
||||||
findResult.RankDataCount = rankObj.GetRankLen()
|
findResult.RankDataCount = rankObj.GetRankLen()
|
||||||
return rankObj.GetRankDataFromToLimit(findInfo.StartPos, findInfo.Count, findResult)
|
return rankObj.GetRankDataFromToLimit(findInfo.StartRank, findInfo.Count, findResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *RankService) deleteRankList(delIdList []uint64) {
|
func (rs *RankService) deleteRankList(delIdList []uint64) {
|
||||||
@@ -187,9 +177,14 @@ func (rs *RankService) dealCfg() error {
|
|||||||
level, _ := mapCfg["SkipListLevel"].(float64)
|
level, _ := mapCfg["SkipListLevel"].(float64)
|
||||||
isDec, _ := mapCfg["IsDec"].(bool)
|
isDec, _ := mapCfg["IsDec"].(bool)
|
||||||
maxRank, _ := mapCfg["MaxRank"].(float64)
|
maxRank, _ := mapCfg["MaxRank"].(float64)
|
||||||
|
expireMs, _ := mapCfg["ExpireMs"].(float64)
|
||||||
|
|
||||||
newSkip := NewRankSkip(isDec, transformLevel(int32(level)), uint64(maxRank))
|
newSkip := NewRankSkip(isDec, transformLevel(int32(level)), uint64(maxRank),time.Duration(expireMs)*time.Millisecond)
|
||||||
rs.mapRankSkip[uint64(rankId)] = newSkip
|
rs.mapRankSkip[uint64(rankId)] = newSkip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/duanhf2012/origin/rpc"
|
"github.com/duanhf2012/origin/rpc"
|
||||||
"github.com/duanhf2012/origin/util/algorithms/skip"
|
"github.com/duanhf2012/origin/util/algorithms/skip"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RankSkip struct {
|
type RankSkip struct {
|
||||||
@@ -12,19 +13,46 @@ type RankSkip struct {
|
|||||||
skipList *skip.SkipList //跳表
|
skipList *skip.SkipList //跳表
|
||||||
mapRankData map[uint64]*RankData //排行数据map
|
mapRankData map[uint64]*RankData //排行数据map
|
||||||
maxLen uint64 //排行数据长度
|
maxLen uint64 //排行数据长度
|
||||||
|
expireMs time.Duration //有效时间
|
||||||
rankModule IRankModule
|
rankModule IRankModule
|
||||||
|
rankDataExpire rankDataHeap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const MaxPickExpireNum = 2
|
||||||
|
const (
|
||||||
|
RankDataNone RankDataChangeType = 0
|
||||||
|
RankDataAdd RankDataChangeType = 1 //数据插入
|
||||||
|
RankDataUpdate RankDataChangeType = 2 //数据更新
|
||||||
|
RankDataDelete RankDataChangeType = 3 //数据删除
|
||||||
|
)
|
||||||
|
|
||||||
// NewRankSkip 创建排行榜
|
// NewRankSkip 创建排行榜
|
||||||
func NewRankSkip(isDes bool, level interface{}, maxLen uint64) *RankSkip {
|
func NewRankSkip(isDes bool, level interface{}, maxLen uint64,expireMs time.Duration) *RankSkip {
|
||||||
ret := &RankSkip{}
|
rs := &RankSkip{}
|
||||||
|
|
||||||
ret.isDes = isDes
|
rs.isDes = isDes
|
||||||
ret.skipList = skip.New(level)
|
rs.skipList = skip.New(level)
|
||||||
ret.mapRankData = make(map[uint64]*RankData, 10240)
|
rs.mapRankData = make(map[uint64]*RankData, 10240)
|
||||||
ret.maxLen = maxLen
|
rs.maxLen = maxLen
|
||||||
|
rs.expireMs = expireMs
|
||||||
|
rs.rankDataExpire.Init(int32(maxLen),expireMs)
|
||||||
|
|
||||||
return ret
|
return rs
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rs *RankSkip) pickExpireKey(){
|
||||||
|
if rs.expireMs == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for i:=1;i<MaxPickExpireNum;i++{
|
||||||
|
key := rs.rankDataExpire.PopExpireKey()
|
||||||
|
if key == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rs.DeleteRankData([]uint64{key})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *RankSkip) SetupRankModule(rankModule IRankModule) {
|
func (rs *RankSkip) SetupRankModule(rankModule IRankModule) {
|
||||||
@@ -68,6 +96,8 @@ func (rs *RankSkip) UpsetRank(upsetRankData []*rpc.RankData) (addCount int32, mo
|
|||||||
|
|
||||||
addCount = int32(len(addList))
|
addCount = int32(len(addList))
|
||||||
modifyCount = int32(len(updateList))
|
modifyCount = int32(len(updateList))
|
||||||
|
|
||||||
|
rs.pickExpireKey()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,13 +120,18 @@ func (rs *RankSkip) upsetRank(upsetData *rpc.RankData) (*RankData, RankDataChang
|
|||||||
newRankData := NewRankData(rs.isDes, upsetData)
|
newRankData := NewRankData(rs.isDes, upsetData)
|
||||||
rs.skipList.Insert(newRankData)
|
rs.skipList.Insert(newRankData)
|
||||||
rs.mapRankData[upsetData.Key] = newRankData
|
rs.mapRankData[upsetData.Key] = newRankData
|
||||||
|
|
||||||
|
//刷新有效期
|
||||||
|
rs.rankDataExpire.PushOrRefreshExpireKey(upsetData.Key)
|
||||||
|
|
||||||
return newRankData, RankDataUpdate
|
return newRankData, RankDataUpdate
|
||||||
}
|
}
|
||||||
|
|
||||||
if rs.checkCanInsert(upsetData) {
|
if rs.checkInsertAndReplace(upsetData) {
|
||||||
newRankData := NewRankData(rs.isDes, upsetData)
|
newRankData := NewRankData(rs.isDes, upsetData)
|
||||||
rs.skipList.Insert(newRankData)
|
rs.skipList.Insert(newRankData)
|
||||||
rs.mapRankData[upsetData.Key] = newRankData
|
rs.mapRankData[upsetData.Key] = newRankData
|
||||||
|
rs.rankDataExpire.PushOrRefreshExpireKey(upsetData.Key)
|
||||||
return newRankData, RankDataAdd
|
return newRankData, RankDataAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,10 +155,12 @@ func (rs *RankSkip) DeleteRankData(delKeys []uint64) int32 {
|
|||||||
//从排行榜中删除
|
//从排行榜中删除
|
||||||
for _, rankData := range removeRankData {
|
for _, rankData := range removeRankData {
|
||||||
rs.skipList.Delete(rankData)
|
rs.skipList.Delete(rankData)
|
||||||
ReleaseRankData(rankData)
|
|
||||||
delete(rs.mapRankData, rankData.Key)
|
delete(rs.mapRankData, rankData.Key)
|
||||||
|
rs.rankDataExpire.RemoveExpireKey(rankData.Key)
|
||||||
|
ReleaseRankData(rankData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rs.pickExpireKey()
|
||||||
return int32(len(removeRankData))
|
return int32(len(removeRankData))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,13 +176,13 @@ func (rs *RankSkip) GetRankNodeData(findKey uint64) (*RankData, uint64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetRankNodeDataByPos 获取,返回排名节点与名次
|
// GetRankNodeDataByPos 获取,返回排名节点与名次
|
||||||
func (rs *RankSkip) GetRankNodeDataByPos(pos uint64) (*RankData, uint64) {
|
func (rs *RankSkip) GetRankNodeDataByRank(rank uint64) (*RankData, uint64) {
|
||||||
rankNode := rs.skipList.ByPosition(pos)
|
rankNode := rs.skipList.ByPosition(rank)
|
||||||
if rankNode == nil {
|
if rankNode == nil {
|
||||||
return nil, 0
|
return nil, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
return rankNode.(*RankData), pos
|
return rankNode.(*RankData), rank
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRankKeyPrevToLimit 获取key前count名的数据
|
// GetRankKeyPrevToLimit 获取key前count名的数据
|
||||||
@@ -166,7 +203,7 @@ func (rs *RankSkip) GetRankKeyPrevToLimit(findKey, count uint64, result *rpc.Ran
|
|||||||
rankData := iter.Value().(*RankData)
|
rankData := iter.Value().(*RankData)
|
||||||
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
||||||
Key: rankData.Key,
|
Key: rankData.Key,
|
||||||
RankPos: rankPos - iterCount,
|
Rank: rankPos - iterCount,
|
||||||
SortData: rankData.SortData,
|
SortData: rankData.SortData,
|
||||||
Data: rankData.Data,
|
Data: rankData.Data,
|
||||||
})
|
})
|
||||||
@@ -194,7 +231,7 @@ func (rs *RankSkip) GetRankKeyNextToLimit(findKey, count uint64, result *rpc.Ran
|
|||||||
rankData := iter.Value().(*RankData)
|
rankData := iter.Value().(*RankData)
|
||||||
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
||||||
Key: rankData.Key,
|
Key: rankData.Key,
|
||||||
RankPos: rankPos + iterCount,
|
Rank: rankPos + iterCount,
|
||||||
SortData: rankData.SortData,
|
SortData: rankData.SortData,
|
||||||
Data: rankData.Data,
|
Data: rankData.Data,
|
||||||
})
|
})
|
||||||
@@ -220,7 +257,7 @@ func (rs *RankSkip) GetRankDataFromToLimit(startPos, count uint64, result *rpc.R
|
|||||||
rankData := iter.Value().(*RankData)
|
rankData := iter.Value().(*RankData)
|
||||||
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
|
||||||
Key: rankData.Key,
|
Key: rankData.Key,
|
||||||
RankPos: iterCount + startPos,
|
Rank: iterCount + startPos,
|
||||||
SortData: rankData.SortData,
|
SortData: rankData.SortData,
|
||||||
Data: rankData.Data,
|
Data: rankData.Data,
|
||||||
})
|
})
|
||||||
@@ -231,7 +268,7 @@ func (rs *RankSkip) GetRankDataFromToLimit(startPos, count uint64, result *rpc.R
|
|||||||
}
|
}
|
||||||
|
|
||||||
// checkCanInsert 检查是否能插入
|
// checkCanInsert 检查是否能插入
|
||||||
func (rs *RankSkip) checkCanInsert(upsetData *rpc.RankData) bool {
|
func (rs *RankSkip) checkInsertAndReplace(upsetData *rpc.RankData) bool {
|
||||||
//maxLen为0,不限制长度
|
//maxLen为0,不限制长度
|
||||||
if rs.maxLen == 0 {
|
if rs.maxLen == 0 {
|
||||||
return true
|
return true
|
||||||
@@ -254,9 +291,11 @@ func (rs *RankSkip) checkCanInsert(upsetData *rpc.RankData) bool {
|
|||||||
|
|
||||||
//移除最后一位
|
//移除最后一位
|
||||||
//回调模块,该RandData从排行中删除
|
//回调模块,该RandData从排行中删除
|
||||||
|
rs.rankDataExpire.RemoveExpireKey(lastRankData.Key)
|
||||||
rs.rankModule.OnLeaveRank(rs, []*RankData{lastRankData})
|
rs.rankModule.OnLeaveRank(rs, []*RankData{lastRankData})
|
||||||
rs.skipList.Delete(lastPosData)
|
rs.skipList.Delete(lastPosData)
|
||||||
delete(rs.mapRankData, lastRankData.Key)
|
delete(rs.mapRankData, lastRankData.Key)
|
||||||
ReleaseRankData(lastRankData)
|
ReleaseRankData(lastRankData)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user