diff --git a/src/message.nim b/src/message.nim index 20eedcd..030a023 100644 --- a/src/message.nim +++ b/src/message.nim @@ -33,24 +33,3 @@ const DefaultSyncMessageInterval* = initDuration(seconds = 30) DefaultBufferSweepInterval* = initDuration(seconds = 60) MaxMessageSize* = 1024 * 1024 # 1 MB - -# Helper functions for HistoryEntry -proc newHistoryEntry*(messageId: SdsMessageID, retrievalHint: seq[byte] = @[]): HistoryEntry = - ## Creates a new HistoryEntry with optional retrieval hint - HistoryEntry(messageId: messageId, retrievalHint: retrievalHint) - -proc newHistoryEntry*(messageId: SdsMessageID, retrievalHint: string): HistoryEntry = - ## Creates a new HistoryEntry with string retrieval hint - HistoryEntry(messageId: messageId, retrievalHint: cast[seq[byte]](retrievalHint)) - -proc toCausalHistory*(messageIds: seq[SdsMessageID]): seq[HistoryEntry] = - ## Converts a sequence of message IDs to HistoryEntry sequence (for backward compatibility) - result = newSeq[HistoryEntry](messageIds.len) - for i, msgId in messageIds: - result[i] = newHistoryEntry(msgId) - -proc getMessageIds*(causalHistory: seq[HistoryEntry]): seq[SdsMessageID] = - ## Extracts message IDs from HistoryEntry sequence - result = newSeq[SdsMessageID](causalHistory.len) - for i, entry in causalHistory: - result[i] = entry.messageId diff --git a/src/reliability_utils.nim b/src/reliability_utils.nim index 5e88fc9..90055bc 100644 --- a/src/reliability_utils.nim +++ b/src/reliability_utils.nim @@ -124,6 +124,27 @@ proc updateLamportTimestamp*( error "Failed to update lamport timestamp", channelId = channelId, msgTs = msgTs, error = getCurrentExceptionMsg() +# Helper functions for HistoryEntry +proc newHistoryEntry*(messageId: SdsMessageID, retrievalHint: seq[byte] = @[]): HistoryEntry = + ## Creates a new HistoryEntry with optional retrieval hint + HistoryEntry(messageId: messageId, retrievalHint: retrievalHint) + +proc newHistoryEntry*(messageId: SdsMessageID, retrievalHint: string): HistoryEntry = + ## Creates a new HistoryEntry with string retrieval hint + HistoryEntry(messageId: messageId, retrievalHint: cast[seq[byte]](retrievalHint)) + +proc toCausalHistory*(messageIds: seq[SdsMessageID]): seq[HistoryEntry] = + ## Converts a sequence of message IDs to HistoryEntry sequence + result = newSeq[HistoryEntry](messageIds.len) + for i, msgId in messageIds: + result[i] = newHistoryEntry(msgId) + +proc getMessageIds*(causalHistory: seq[HistoryEntry]): seq[SdsMessageID] = + ## Extracts message IDs from HistoryEntry sequence + result = newSeq[SdsMessageID](causalHistory.len) + for i, entry in causalHistory: + result[i] = entry.messageId + proc getRecentHistoryEntries*( rm: ReliabilityManager, n: int, channelId: SdsChannelID ): seq[HistoryEntry] = @@ -265,4 +286,4 @@ proc removeChannel*( except Exception: error "Failed to remove channel", channelId = channelId, msg = getCurrentExceptionMsg() - return err(ReliabilityError.reInternalError) + return err(ReliabilityError.reInternalError) \ No newline at end of file