package com.comandante.pushpackage;
import com.comandante.stickypunch.api.model.PackageZipEntry;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
public class PackageZipPoolPopulate implements Runnable {
private static final Logger log = LogManager.getLogger(PackageZipPoolPopulate.class);
private final ArrayBlockingQueue<PackageZipEntry> packagesQueue;
private final PackageZipBuilder packageZipBuilder;
public PackageZipPoolPopulate(PackageZipPool packageZipPool, PackageZipBuilder packageZipBuilder) {
this.packagesQueue = packageZipPool.packagesQueue;
this.packageZipBuilder = packageZipBuilder;
}
@Override
public void run() {
while (true) {
String newUserId = UUID.randomUUID().toString();
try {
final long startTime = System.currentTimeMillis();
PackageZipEntry packageZipEntry = new PackageZipEntry(packageZipBuilder.createPackage(newUserId), newUserId);
final long endTime = System.currentTimeMillis();
packagesQueue.put(packageZipEntry);
log.info(String.format("Added a new package zip to pool. Generation Time: %dms", endTime - startTime));
} catch (Exception e) {
log.error("Unable to populate package zip pool!", e);
try {
Thread.sleep(6000);
} catch (InterruptedException e1) {
}
}
}
}
}