splitInputOrigins method
Implementation
List<Map<int, int>> splitInputOrigins(
Map<int, int> origins, int commandsLength) {
if (origins.isEmpty) {
return [origins];
}
var maxWriteBatchSize = MongoModernMessage.maxWriteBatchSize;
if (commandsLength <= maxWriteBatchSize) {
return [origins];
}
var ret = <Map<int, int>>[];
var offset = 0;
var elementLimit = maxWriteBatchSize - 1;
var rest = commandsLength;
Map<int, int> splittedElement;
var highestKey = 0;
var highestOperation = 0;
while (rest > 0) {
splittedElement = <int, int>{if (offset > 0) 0: highestOperation};
for (var key in origins.keys) {
if (key >= offset && key <= elementLimit) {
if (key > highestKey) {
highestKey = key;
highestOperation = origins[key]!;
}
splittedElement[key - offset] = origins[key]!;
}
}
offset = elementLimit + 1;
elementLimit = min(commandsLength, elementLimit + maxWriteBatchSize);
rest -= maxWriteBatchSize;
ret.add(splittedElement);
}
return ret;
}