package net.johnewart.gearman.server.cluster.util; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IAtomicLong; import net.johnewart.gearman.common.interfaces.JobHandleFactory; public class HazelcastJobHandleFactory implements JobHandleFactory { private final HazelcastInstance hazelcast; private final String clusterHostname; final IAtomicLong jobHandleCounter; public HazelcastJobHandleFactory(HazelcastInstance hazelcast, String clusterHostname) { this.hazelcast = hazelcast; this.clusterHostname = clusterHostname; jobHandleCounter = hazelcast.getAtomicLong("jobhandlecounter"); } public final byte[] getNextJobHandle() { String handle = "H:".concat(clusterHostname).concat(":").concat(String.valueOf(jobHandleCounter.incrementAndGet())); return handle.getBytes(); } }