@Override protected byte[] getBytes() { final List<Byte> byteList = new ArrayList<>(Bytes.asList(COPSMsgParser.shortToBytes(protocol.getValue()))); byteList.add(tosOverwrite); byteList.add(tosMask); byteList.addAll(Bytes.asList(srcAddress.getAddress())); byteList.addAll(Bytes.asList(dstAddress.getAddress())); byteList.addAll(Bytes.asList(COPSMsgParser.shortToBytes(srcPort))); byteList.addAll(Bytes.asList(COPSMsgParser.shortToBytes(dstPort))); byteList.add(priority); // reserved padding byteList.addAll(Bytes.asList((byte) 0, (byte) 0, (byte) 0)); return Bytes.toArray(byteList); }
/** * Returns a Classifier object from a byte array * * @param data - the data to parse * @return - the object or null if cannot be parsed TODO - make me more robust as exceptions can * be swallowed here. */ public static Classifier parse(final byte[] data) { final List<Byte> bytes = Bytes.asList(data); try { final byte[] srcAddrBytes = Bytes.toArray(bytes.subList(4, 8)); final byte[] dstAddrBytes = Bytes.toArray(bytes.subList(8, 12)); return new Classifier( Protocol.valueOf(COPSMsgParser.bytesToShort(data[0], data[1])), data[2], data[3], (Inet4Address) InetAddress.getByAddress(srcAddrBytes), (Inet4Address) InetAddress.getByAddress(dstAddrBytes), COPSMsgParser.bytesToShort(data[12], data[13]), COPSMsgParser.bytesToShort(data[14], data[15]), data[16]); } catch (UnknownHostException e) { return null; } }