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