Exemple #1
0
 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);
 }
Exemple #2
0
  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);
  }
Exemple #4
0
  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);
  }