public static List<byte[]> parseMessages(final File file) throws IOException { Preconditions.checkArgument(file != null, "Filename cannot be null"); return parseMessages(new FileInputStream(file)); }
private static List<byte[]> parseMessages(final String c) { final String content = clearWhiteSpaceToUpper(c); final List<byte[]> messages = Lists.newLinkedList(); int idx = content.indexOf(LENGTH, 0); while (idx > -1) { // next chars are final length, ending with '.' final int lengthIdx = idx + LENGTH.length(); final int messageIdx = content.indexOf('.', lengthIdx); final int length = Integer.parseInt(content.substring(lengthIdx, messageIdx)); // dot final int messageEndIdx = messageIdx + (length * 2) + 1; // Assert that message is longer than minimum 4(header.length == 4) // If length in PCEP message would be 0, loop would never end Preconditions.checkArgument(length >= MINIMAL_LENGTH, "Invalid message at index " + idx + ", length atribute is lower than " + MINIMAL_LENGTH); // dot final String hexMessage = content.substring(messageIdx + 1, messageEndIdx); final byte[] message = BaseEncoding.base16().decode(hexMessage); messages.add(message); idx = messageEndIdx; idx = content.indexOf(LENGTH, idx); } LOG.info("Succesfully extracted {} messages", messages.size()); return messages; }
public static List<byte[]> parseMessages(final InputStream is) throws IOException { Preconditions.checkNotNull(is); try (InputStreamReader isr = new InputStreamReader(is, "UTF-8")) { return parseMessages(CharStreams.toString(isr)); } }