search for packet start in UDP stream in SwissTiming parser

This commit is contained in:
Axel Uhl committed 2011-09-01 11:59:48 +02:00
1 parent e172bbd0b5
commit 3a56728f16
5 files changed
+19 -9

No files matched your search

@@ -8,5 +8,5 @@ public interface SwissTimingMessageParser extends UDPMessageParser<SwissTimingMe
SwissTimingMessage parse(byte[] message) throws SwissTimingFormatException;
SwissTimingMessage parse(byte[] message, int offset) throws SwissTimingFormatException;
SwissTimingMessage parse(byte[] message, int offset, int length) throws SwissTimingFormatException;
}
@@ -14,14 +14,16 @@ public class SwissTimingMessageParserImpl implements SwissTimingMessageParser {
@Override
public SwissTimingMessage parse(byte[] message) throws SwissTimingFormatException {
int i=0;
return parse(message, i);
return parse(message, 0, message.length);
}
@Override
public SwissTimingMessage parse(byte[] message, int offset) throws SwissTimingFormatException {
public SwissTimingMessage parse(byte[] message, int offset, int length) throws SwissTimingFormatException {
int i = offset;
if (message[i] != 0x10 || message[i+1] != 0x00) {
while (i<offset+length-1 && (message[i] != 0x10 || message[i+1] != 0x00)) {
i++;
}
if (i>=offset+length-1 || message[i] != 0x10 || message[i+1] != 0x00) {
throw new SwissTimingFormatException("Didn't find start marker 0x1000", message);
}
i+=2;
@@ -88,7 +90,7 @@ public class SwissTimingMessageParserImpl implements SwissTimingMessageParser {
@Override
public SwissTimingMessage parse(DatagramPacket p) throws SwissTimingFormatException {
return parse(p.getData(), p.getOffset());
return parse(p.getData(), p.getOffset(), p.getLength());
}
}