private static void encodeByteArray(Packet<byte[]> packet, EncodeCallback<byte[]> callback) { byte[] data = packet.data; byte[] resultArray = new byte[1 + data.length]; resultArray[0] = packets.get(packet.type).byteValue(); System.arraycopy(data, 0, resultArray, 1, data.length); callback.call(resultArray); }
public static void encodePayload(Packet[] packets, EncodeCallback<byte[]> callback) throws UTF8Exception { if (packets.length == 0) { callback.call(new byte[0]); return; } final ArrayList<byte[]> results = new ArrayList<byte[]>(packets.length); for (Packet packet : packets) { encodePacket( packet, true, new EncodeCallback() { @Override public void call(Object packet) { if (packet instanceof String) { String encodingLength = String.valueOf(((String) packet).length()); byte[] sizeBuffer = new byte[encodingLength.length() + 2]; sizeBuffer[0] = (byte) 0; // is a string for (int i = 0; i < encodingLength.length(); i++) { sizeBuffer[i + 1] = (byte) Character.getNumericValue(encodingLength.charAt(i)); } sizeBuffer[sizeBuffer.length - 1] = (byte) 255; results.add( Buffer.concat(new byte[][] {sizeBuffer, stringToByteArray((String) packet)})); return; } String encodingLength = String.valueOf(((byte[]) packet).length); byte[] sizeBuffer = new byte[encodingLength.length() + 2]; sizeBuffer[0] = (byte) 1; // is binary for (int i = 0; i < encodingLength.length(); i++) { sizeBuffer[i + 1] = (byte) Character.getNumericValue(encodingLength.charAt(i)); } sizeBuffer[sizeBuffer.length - 1] = (byte) 255; results.add(Buffer.concat(new byte[][] {sizeBuffer, (byte[]) packet})); } }); } callback.call(Buffer.concat(results.toArray(new byte[results.size()][]))); }
public static void encodePacket(Packet packet, boolean utf8encode, EncodeCallback callback) { if (packet.data instanceof byte[]) { @SuppressWarnings("unchecked") Packet<byte[]> _packet = packet; @SuppressWarnings("unchecked") EncodeCallback<byte[]> _callback = callback; encodeByteArray(_packet, _callback); return; } String encoded = String.valueOf(packets.get(packet.type)); if (null != packet.data) { encoded += utf8encode ? UTF8.encode(String.valueOf(packet.data)) : String.valueOf(packet.data); } @SuppressWarnings("unchecked") EncodeCallback<String> _callback = callback; _callback.call(encoded); }
public static void encodePacket(Packet packet, boolean utf8encode, EncodeCallback callback) throws UTF8Exception { if (packet.data instanceof byte[]) { @SuppressWarnings("unchecked") Packet<byte[]> packetToEncode = packet; @SuppressWarnings("unchecked") EncodeCallback<byte[]> callbackToEncode = callback; encodeByteArray(packetToEncode, callbackToEncode); return; } String encoded = String.valueOf(packets.get(packet.type)); if (null != packet.data) { encoded += utf8encode ? UTF8.encode(String.valueOf(packet.data)) : String.valueOf(packet.data); } @SuppressWarnings("unchecked") EncodeCallback<String> tempCallback = callback; tempCallback.call(encoded); }