Skip to content

Commit 15b7221

Browse files
committed
refactor: the SDK interface using the pb protocol to replace json.
Signed-off-by: Gordon <[email protected]>
1 parent c9ca3cd commit 15b7221

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

Diff for: internal/conversation_msg/message_check.go

+19-4
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (c *Conversation) validateAndFillInterBlockGaps(ctx context.Context, thisSt
5858
startSeq = thisStartSeq + 1
5959
endSeq = lastEndSeq - 1
6060
}
61-
if isLostSeq {
61+
if isLostSeq && lastEndSeq != 0 {
6262
log.ZDebug(ctx, "get lost LastMinSeq is :", "lastEndSeq", lastEndSeq, "thisStartSeq", thisStartSeq, "startSeq", startSeq, "endSeq", endSeq)
6363
lostSeqList := getLostSeqListWithLimitLength(startSeq, endSeq, []int64{})
6464
log.ZDebug(ctx, "get lost lostSeqList is :", "lostSeqList", lostSeqList, "length:", len(lostSeqList))
@@ -74,6 +74,15 @@ func (c *Conversation) validateAndFillInterBlockGaps(ctx context.Context, thisSt
7474
// of the message history has been reached. If not, it attempts to retrieve any missing messages to ensure continuity.
7575
func (c *Conversation) validateAndFillEndBlockContinuity(ctx context.Context, conversationID string,
7676
isReverse bool, count int, startTime int64, list *[]*model_struct.LocalChatLog, messageListCallback *sdk.GetAdvancedHistoryMessageListCallback) {
77+
isShouldFetchMessage, lostSeqList := c.checkEndBlock(ctx, conversationID, isReverse, count, list, messageListCallback)
78+
if isShouldFetchMessage {
79+
c.fetchAndMergeMissingMessages(ctx, conversationID, lostSeqList, isReverse, count, startTime, list, messageListCallback)
80+
_, _ = c.checkEndBlock(ctx, conversationID, isReverse, count, list, messageListCallback)
81+
}
82+
83+
}
84+
func (c *Conversation) checkEndBlock(ctx context.Context, conversationID string, isReverse bool, count int,
85+
list *[]*model_struct.LocalChatLog, messageListCallback *sdk.GetAdvancedHistoryMessageListCallback) (isShouldFetchMessage bool, seqList []int64) {
7786
// Perform an end-of-block check if the retrieved message count is less than requested
7887
if len(*list) < count {
7988
if isReverse {
@@ -94,12 +103,14 @@ func (c *Conversation) validateAndFillEndBlockContinuity(ctx context.Context, co
94103
// since `lastEndSeq < maxSeqRecorderMaxSeq` is handled in inter-block continuity.
95104
lostSeqList := getLostSeqListWithLimitLength(maxSeq+1, c.maxSeqRecorder.Get(conversationID), []int64{})
96105
if len(lostSeqList) > 0 {
106+
isShouldFetchMessage = true
107+
seqList = lostSeqList
97108
log.ZDebug(ctx, "validateAndFillEndBlockContinuity", "lostSeqList", lostSeqList)
98-
c.fetchAndMergeMissingMessages(ctx, conversationID, lostSeqList, isReverse, count, startTime, list, messageListCallback)
99109
}
100110

101111
}
102112
}
113+
return isShouldFetchMessage, seqList
103114
} else {
104115
_, minSeq, _ := c.getMaxAndMinHaveSeqList(*list)
105116
log.ZDebug(ctx, "validateAndFillEndBlockContinuity", "minSeq", minSeq, "conversationID", conversationID)
@@ -118,17 +129,21 @@ func (c *Conversation) validateAndFillEndBlockContinuity(ctx context.Context, co
118129
// since `lastMinSeq > 1` is handled in inter-block continuity.
119130
lostSeqList := getLostSeqListWithLimitLength(1, minSeq-1, []int64{})
120131
if len(lostSeqList) > 0 {
132+
isShouldFetchMessage = true
133+
seqList = lostSeqList
121134
log.ZDebug(ctx, "validateAndFillEndBlockContinuity", "lostSeqList", lostSeqList)
122-
c.fetchAndMergeMissingMessages(ctx, conversationID, lostSeqList, isReverse, count, startTime, list, messageListCallback)
123135
}
124136

125137
}
126138
}
139+
return isShouldFetchMessage, seqList
127140
}
141+
return isShouldFetchMessage, seqList
142+
128143
} else {
129144
messageListCallback.IsEnd = false
145+
return isShouldFetchMessage, seqList
130146
}
131-
132147
}
133148
func (c *Conversation) getMaxAndMinHaveSeqList(messages []*model_struct.LocalChatLog) (max, min int64, seqList []int64) {
134149
for i := 0; i < len(messages); i++ {

0 commit comments

Comments
 (0)