@@ -76,11 +76,16 @@ public MessageLog() {
76
76
this .setLastCheckpoint (0L );
77
77
}
78
78
79
- public List <OrderedRequestMessageWrapper > getOrderedRequestHistory (long sequenceNumber ) {
80
- ArrayList <OrderedRequestMessageWrapper > orderedRequestHistory = new ArrayList <>();
79
+ /**
80
+ * Get the ordered request history from the sequence number to the end of the ordered messages
81
+ * @param sequenceNumber - the sequence number to start the history from
82
+ * @return - a map of the ordered request history with the sequence number as the key
83
+ */
84
+ public SortedMap <Long , OrderedRequestMessageWrapper > getOrderedRequestHistory (long sequenceNumber ) {
85
+ SortedMap <Long , OrderedRequestMessageWrapper > orderedRequestHistory = new TreeMap <>();
81
86
long maxSeqNum = this .getOrderedMessages ().isEmpty () ? 0 : this .getOrderedMessages ().lastKey ();
82
87
for (long i = sequenceNumber + 1 ; i <= maxSeqNum ; i ++) {
83
- orderedRequestHistory .add ( this .orderedMessages .get (i ));
88
+ orderedRequestHistory .put ( i , this .orderedMessages .get (i ));
84
89
}
85
90
return orderedRequestHistory ;
86
91
}
@@ -194,6 +199,10 @@ public void putRequestCache(String clientId, RequestMessage rm, SpeculativeRespo
194
199
this .getResponseCache ().put (clientId , new ImmutablePair <>(rm , srw ));
195
200
}
196
201
202
+ public void putOrderedRequestMessageWrapper (OrderedRequestMessageWrapper ormw ) {
203
+ this .getOrderedMessages ().put (ormw .getOrderedRequest ().getSequenceNumber (), ormw );
204
+ }
205
+
197
206
public long highestTimestampInCacheForClient (String clientId ) {
198
207
if (!this .getResponseCache ().containsKey (clientId )) {
199
208
return -1 ;
0 commit comments