private GearmanPacket generateCanDoPacket(FunctionDefinition def) { GearmanPacketType pt = GearmanPacketType.CAN_DO; byte[] data = null; byte[] name = ByteUtils.toUTF8Bytes(def.getFactory().getFunctionName()); long timeout = def.getTimeout(); if (timeout > 0) { pt = GearmanPacketType.CAN_DO_TIMEOUT; byte[] to = ByteUtils.toUTF8Bytes(String.valueOf(timeout)); data = new byte[name.length + to.length + 1]; System.arraycopy(name, 0, data, 0, name.length); data[name.length] = ByteUtils.NULL; System.arraycopy(to, 0, data, name.length + 1, to.length); } else { data = name; } return new GearmanPacketImpl(GearmanPacketMagic.REQ, pt, data); }