feat: add redis cache and fanout support

This commit is contained in:
richjohnrambo
2026-08-25 20:54:03 +08:00
parent 07376c70e3
commit f900a08a01
68 changed files with 3949 additions and 5696 deletions
+31 -31
View File
@@ -41,7 +41,7 @@ func pbServDataSerialize(data *MsgServerData) *pbx.ServerMsg_Data {
FromUserId: data.From,
Timestamp: timeToInt64(&data.Timestamp),
DeletedAt: timeToInt64(data.DeletedAt),
SeqId: int32(data.SeqId),
SeqId: data.SeqId,
Head: interfaceMapToByteMap(data.Head),
Content: interfaceToBytes(data.Content),
},
@@ -86,7 +86,7 @@ func pbServPresSerialize(pres *MsgServerPres) *pbx.ServerMsg_Pres {
Src: pres.Src,
What: what,
UserAgent: pres.UserAgent,
SeqId: int32(pres.SeqId),
SeqId: pres.SeqId,
DelId: int32(pres.DelId),
DelSeq: pbDelQuerySerialize(pres.DelSeq),
TargetUserId: pres.AcsTarget,
@@ -103,7 +103,7 @@ func pbServInfoSerialize(info *MsgServerInfo) *pbx.ServerMsg_Info {
FromUserId: info.From,
Src: info.Src,
What: pbInfoNoteWhatSerialize(info.What),
SeqId: int32(info.SeqId),
SeqId: info.SeqId,
Event: pbCallEventSerialize(info.Event),
Payload: info.Payload,
},
@@ -165,7 +165,7 @@ func pbServDeserialize(pkt *pbx.ServerMsg) *ServerComMessage {
From: data.GetFromUserId(),
Timestamp: *tsptr,
DeletedAt: int64ToTime(data.GetDeletedAt()),
SeqId: int(data.GetSeqId()),
SeqId: data.GetSeqId(),
Head: byteMapToInterfaceMap(data.GetHead()),
Content: data.GetContent(),
}
@@ -204,7 +204,7 @@ func pbServDeserialize(pkt *pbx.ServerMsg) *ServerComMessage {
Src: pres.GetSrc(),
What: what,
UserAgent: pres.GetUserAgent(),
SeqId: int(pres.GetSeqId()),
SeqId: pres.GetSeqId(),
DelId: int(pres.GetDelId()),
DelSeq: pbDelQueryDeserialize(pres.GetDelSeq()),
AcsTarget: pres.GetTargetUserId(),
@@ -217,7 +217,7 @@ func pbServDeserialize(pkt *pbx.ServerMsg) *ServerComMessage {
Src: info.GetSrc(),
From: info.GetFromUserId(),
What: pbInfoNoteWhatDeserialize(info.GetWhat()),
SeqId: int(info.GetSeqId()),
SeqId: info.GetSeqId(),
Event: pbCallEventDeserialize(info.GetEvent()),
Payload: info.GetPayload(),
}
@@ -365,7 +365,7 @@ func pbCliSerialize(msg *ClientComMessage) *pbx.ClientMsg {
Note: &pbx.ClientNote{
Topic: msg.Note.Topic,
What: pbInfoNoteWhatSerialize(msg.Note.What),
SeqId: int32(msg.Note.SeqId),
SeqId: msg.Note.SeqId,
Unread: int32(msg.Note.Unread),
Event: pbCallEventSerialize(msg.Note.Event),
Payload: msg.Note.Payload,
@@ -485,7 +485,7 @@ func pbCliDeserialize(pkt *pbx.ClientMsg) *ClientComMessage {
} else if note := pkt.GetNote(); note != nil {
msg.Note = &MsgClientNote{
Topic: note.GetTopic(),
SeqId: int(note.GetSeqId()),
SeqId: note.GetSeqId(),
What: pbInfoNoteWhatDeserialize(note.GetWhat()),
Unread: int(note.GetUnread()),
Event: pbCallEventDeserialize(note.GetEvent()),
@@ -585,15 +585,15 @@ func pbGetQuerySerialize(in *MsgGetQuery) *pbx.GetQuery {
}
if in.Data != nil {
out.Data = &pbx.GetOpts{
BeforeId: int32(in.Data.BeforeId),
SinceId: int32(in.Data.SinceId),
BeforeId: in.Data.BeforeId,
SinceId: in.Data.SinceId,
Limit: int32(in.Data.Limit),
}
if len(in.Data.IdRanges) > 0 {
out.Data.Ranges = make([]*pbx.SeqRange, len(in.Data.IdRanges))
for i, dq := range in.Data.IdRanges {
out.Data.Ranges[i] = &pbx.SeqRange{Low: int32(dq.LowId), Hi: int32(dq.HiId)}
out.Data.Ranges[i] = &pbx.SeqRange{Low: dq.LowId, Hi: dq.HiId}
}
}
}
@@ -623,16 +623,16 @@ func pbGetQueryDeserialize(in *pbx.GetQuery) *MsgGetQuery {
}
if data := in.GetData(); data != nil {
msg.Data = &MsgGetOpts{
BeforeId: int(data.GetBeforeId()),
SinceId: int(data.GetSinceId()),
BeforeId: data.GetBeforeId(),
SinceId: data.GetSinceId(),
Limit: int(data.GetLimit()),
}
if ranges := data.GetRanges(); len(ranges) > 0 {
msg.Data.IdRanges = make([]MsgRange, len(ranges))
for i, sr := range ranges {
msg.Data.IdRanges[i].LowId = int(sr.GetLow())
msg.Data.IdRanges[i].HiId = int(sr.GetHi())
msg.Data.IdRanges[i].LowId = sr.GetLow()
msg.Data.IdRanges[i].HiId = sr.GetHi()
}
}
}
@@ -890,9 +890,9 @@ func pbTopicDescSerialize(desc *MsgTopicDesc) *pbx.TopicDesc {
IsChan: desc.IsChan,
Defacs: pbDefaultAcsSerialize(desc.DefaultAcs),
Acs: pbAccessModeSerialize(desc.Acs),
SeqId: int32(desc.SeqId),
ReadId: int32(desc.ReadSeqId),
RecvId: int32(desc.RecvSeqId),
SeqId: desc.SeqId,
ReadId: desc.ReadSeqId,
RecvId: desc.RecvSeqId,
DelId: int32(desc.DelId),
Public: interfaceToBytes(desc.Public),
Trusted: interfaceToBytes(desc.Trusted),
@@ -918,9 +918,9 @@ func pbTopicDescDeserialize(desc *pbx.TopicDesc) *MsgTopicDesc {
IsChan: desc.GetIsChan(),
DefaultAcs: pbDefaultAcsDeserialize(desc.GetDefacs()),
Acs: pbAccessModeDeserialize(desc.GetAcs()),
SeqId: int(desc.SeqId),
ReadSeqId: int(desc.ReadId),
RecvSeqId: int(desc.RecvId),
SeqId: desc.SeqId,
ReadSeqId: desc.ReadId,
RecvSeqId: desc.RecvId,
DelId: int(desc.DelId),
Public: bytesToInterface(desc.Public),
Trusted: bytesToInterface(desc.Trusted),
@@ -947,7 +947,7 @@ func pbTopicSerializeToDesc(topic *Topic) *pbx.TopicDesc {
Auth: topic.accessAuth.String(),
Anon: topic.accessAnon.String(),
},
SeqId: int32(topic.lastID),
SeqId: topic.lastID,
DelId: int32(topic.delID),
Public: interfaceToBytes(topic.public),
Trusted: interfaceToBytes(topic.trusted),
@@ -972,15 +972,15 @@ func pbTopicSubSerialize(sub *MsgTopicSub) *pbx.TopicSub {
DeletedAt: timeToInt64(sub.DeletedAt),
Online: sub.Online,
Acs: pbAccessModeSerialize(&sub.Acs),
ReadId: int32(sub.ReadSeqId),
RecvId: int32(sub.RecvSeqId),
ReadId: sub.ReadSeqId,
RecvId: sub.RecvSeqId,
Public: interfaceToBytes(sub.Public),
Trusted: interfaceToBytes(sub.Trusted),
Private: interfaceToBytes(sub.Private),
UserId: sub.User,
Topic: sub.Topic,
TouchedAt: timeToInt64(sub.TouchedAt),
SeqId: int32(sub.SeqId),
SeqId: sub.SeqId,
DelId: int32(sub.DelId),
}
if sub.LastSeen != nil {
@@ -1001,15 +1001,15 @@ func pbTopicSubSliceDeserialize(subs []*pbx.TopicSub) []MsgTopicSub {
UpdatedAt: int64ToTime(subs[i].GetUpdatedAt()),
DeletedAt: int64ToTime(subs[i].GetDeletedAt()),
Online: subs[i].GetOnline(),
ReadSeqId: int(subs[i].GetReadId()),
RecvSeqId: int(subs[i].GetRecvId()),
ReadSeqId: subs[i].GetReadId(),
RecvSeqId: subs[i].GetRecvId(),
Public: bytesToInterface(subs[i].GetPublic()),
Trusted: bytesToInterface(subs[i].GetTrusted()),
Private: bytesToInterface(subs[i].GetPrivate()),
User: subs[i].GetUserId(),
Topic: subs[i].GetTopic(),
TouchedAt: int64ToTime(subs[i].GetTouchedAt()),
SeqId: int(subs[i].GetSeqId()),
SeqId: subs[i].GetSeqId(),
DelId: int(subs[i].GetDelId()),
}
if acs := subs[i].GetAcs(); acs != nil {
@@ -1063,7 +1063,7 @@ func pbDelQuerySerialize(in []MsgRange) []*pbx.SeqRange {
out := make([]*pbx.SeqRange, len(in))
for i, dq := range in {
out[i] = &pbx.SeqRange{Low: int32(dq.LowId), Hi: int32(dq.HiId)}
out[i] = &pbx.SeqRange{Low: dq.LowId, Hi: dq.HiId}
}
return out
@@ -1076,8 +1076,8 @@ func pbDelQueryDeserialize(in []*pbx.SeqRange) []MsgRange {
out := make([]MsgRange, len(in))
for i, sr := range in {
out[i].LowId = int(sr.GetLow())
out[i].HiId = int(sr.GetHi())
out[i].LowId = sr.GetLow()
out[i].HiId = sr.GetHi()
}
return out