- for (int i = 0; i < threadAmount; i++) {
- final ArrayList<Execution.DestToPayload> payloads = new ArrayList<>();
- for (int j = 0; j < openDevices.size(); j++) {
- final StringBuilder destBuilder = new StringBuilder(dest);
- destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), controllerDestination)
- .replace(destBuilder.indexOf(PORT_KEY), destBuilder.indexOf(PORT_KEY) + PORT_KEY.length(), Integer.toString(openDevices.get(j)));
- payloads.add(new Execution.DestToPayload(destBuilder.toString(), prepareMessage(openDevices.get(j), editContentString)));
+ if (generateConfigBatchSize > 1) {
+
+ final int batchedRequests = openDevices.size() / generateConfigBatchSize;
+ final int batchedRequestsPerThread = batchedRequests / threadAmount;
+ final int leftoverBatchedRequests = (batchedRequests) % threadAmount;
+ final int leftoverRequests = openDevices.size() - (batchedRequests * generateConfigBatchSize);
+
+ final StringBuilder destBuilder = new StringBuilder(dest);
+ destBuilder.replace(destBuilder.indexOf(ADDRESS_PORT), destBuilder.indexOf(ADDRESS_PORT) + ADDRESS_PORT.length(), controllerDestination);
+
+ for (int l = 0; l < threadAmount; l++) {
+ from = l * (batchedRequests * batchedRequestsPerThread);
+ to = from + (batchedRequests * batchedRequestsPerThread);
+ iterator = openDevices.subList(from, to).iterator();
+ allThreadsPayloads.add(createBatchedPayloads(batchedRequestsPerThread, iterator, editContentString, destBuilder.toString()));
+ }
+ ArrayList<Execution.DestToPayload> payloads = null;
+ if (leftoverBatchedRequests > 0) {
+ from = threadAmount * (batchedRequests * batchedRequestsPerThread);
+ to = from + (batchedRequests * batchedRequestsPerThread);
+ iterator = openDevices.subList(from, to).iterator();
+ payloads = createBatchedPayloads(leftoverBatchedRequests, iterator, editContentString, destBuilder.toString());
+ }
+ String payload = "";
+
+ for (int j = 0; j < leftoverRequests; j++) {
+ from = openDevices.size() - leftoverRequests;
+ to = openDevices.size();
+ iterator = openDevices.subList(from, to).iterator();
+ final StringBuilder payloadBuilder = new StringBuilder(prepareMessage(iterator.next(), editContentString));
+ payload += modifyMessage(payloadBuilder, j, leftoverRequests);
+ }
+ if (leftoverRequests > 0 || leftoverBatchedRequests > 0) {
+
+ if (payloads != null) {
+ payloads.add(new Execution.DestToPayload(destBuilder.toString(), payload));
+ }
+ allThreadsPayloads.add(payloads);
+ }
+ } else {
+ final int requestPerThreads = openDevices.size() / threadAmount;
+ final int leftoverRequests = openDevices.size() % threadAmount;
+
+ for (int i = 0; i < threadAmount; i++) {
+ from = i * requestPerThreads;
+ to = from + requestPerThreads;
+ iterator = openDevices.subList(from, to).iterator();
+ allThreadsPayloads.add(createPayloads(iterator, editContentString));