package net.johnewart.gearman.common.packets.response; import net.johnewart.gearman.common.Job; import net.johnewart.gearman.constants.PacketType; import java.util.Arrays; import java.util.concurrent.atomic.AtomicReference; public class JobAssignAll extends ResponsePacket { protected AtomicReference<String> jobHandle, functionName; protected byte[] data; public JobAssignAll(byte[] pktdata) { super(pktdata); jobHandle = new AtomicReference<>(); functionName = new AtomicReference<>(); int pOff = parseString(0, jobHandle); pOff = parseString(pOff, functionName); this.data = Arrays.copyOfRange(rawdata, pOff, rawdata.length); this.type = PacketType.JOB_ASSIGN_ALL; } public JobAssignAll(String jobhandle, String functionName, byte[] data) { this.jobHandle = new AtomicReference<>(jobhandle); this.functionName = new AtomicReference<>(functionName); this.data = data.clone(); this.type = PacketType.JOB_ASSIGN; } public String getJobHandle() { return this.jobHandle.get(); } @Override public byte[] toByteArray() { byte[] metadata = stringsToTerminatedByteArray(jobHandle.get(), functionName.get()); return concatByteArrays(getHeader(), metadata, this.data); } @Override public int getPayloadSize() { return this.jobHandle.get().length() + 1 + this.functionName.get().length() + 1 + this.data.length; } public String getFunctionName() { return functionName.get(); } public byte[] getData() { return data; } public Job getJob() { return new Job.Builder() .jobHandle(this.jobHandle.get()) .data(this.data) .functionName(this.functionName.get()) .build(); } }