package edu.harvard.mcb.leschziner.particlesource; import java.util.concurrent.BlockingQueue; import edu.harvard.mcb.leschziner.core.Particle; import edu.harvard.mcb.leschziner.core.ParticlePicker; import edu.harvard.mcb.leschziner.distributed.DistributedParticleConsumer; import edu.harvard.mcb.leschziner.storage.DefaultStorageEngine; public abstract class DistributedParticlePicker extends DistributedParticleConsumer implements ParticlePicker { // Size of area picked around particle protected final int boxSize; // Queue of particles produced protected final String particleQueueName; protected final BlockingQueue<Particle> extractedParticles; public DistributedParticlePicker(int boxSize) { super(); this.boxSize = boxSize; // Pull up output queue particleQueueName = "ExtractedParticles_" + this.hashCode(); extractedParticles = DefaultStorageEngine.getStorageEngine() .getQueue(particleQueueName); } public String getParticleQueueName() { return particleQueueName; } @Override public BlockingQueue<Particle> getParticleQueue() { return extractedParticles; } @Override public void processParticle(Particle particle) { processMicrograph(particle); } }