in mbp-with-mbo/src/main/java/com/epam/cme/mdp3/control/OffHeapSnapshotCycleHandler.java [41:71]
public void update(long totNumReports, long lastMsgSeqNumProcessed, int securityId, long noChunks, long currentChunk) {
if(currentChunk > noChunks) {
logger.error("Current chunk number '{}' is more than noChunks number '{}' for securityId '{}'", currentChunk, noChunks, securityId);
return;
}
if(dataSize != totNumReports){
dataSize = (int)totNumReports;
dataCache.putAll(data);
data.clear();
}
MutableLongToObjPair<LongArray> securityIdMetaData = data.computeIfAbsent(securityId, ignore -> {
if (dataCache.containsKey(securityId)) {
return dataCache.remove(securityId);
} else {
long arrayLength = noChunks > MAX_NO_CHUNK_VALUE ? noChunks : MAX_NO_CHUNK_VALUE;
LongArray newArray = new LongArray(arrayLength);
clearArray(newArray);
return new MutableLongToObjPair<>(noChunks, newArray);
}
});
LongArray currentArray = securityIdMetaData.getValue();
if(securityIdMetaData.getKey() != noChunks) {
if(currentArray.getLength() < noChunks) {
currentArray.reInit(noChunks);
}
securityIdMetaData.setKey(noChunks);
clearArray(currentArray);
}
currentArray.setValue(currentChunk - 1, lastMsgSeqNumProcessed);
}