Update of /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core
In directory usw-pr-cvs1:/tmp/cvs-serv14355/src/org/beepcore/beep/core
Modified Files:
Frame.java
Log Message:
Improved header parsing
Index: Frame.java
===================================================================
RCS file: /cvsroot/beepcore-java/beepcore-java/src/org/beepcore/beep/core/Frame.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** Frame.java 2001/11/27 07:31:21 1.14
--- Frame.java 2001/11/27 16:04:58 1.15
***************
*** 3,6 ****
--- 3,7 ----
*
* Copyright (c) 2001 Invisible Worlds, Inc. All rights reserved.
+ * Copyright (c) 2001 Huston Franklin. All rights reserved.
*
* The contents of this file are subject to the Blocks Public License (the
***************
*** 25,28 ****
--- 26,30 ----
import org.beepcore.beep.util.BufferSegment;
+ import org.beepcore.beep.util.HeaderParser;
import org.beepcore.beep.util.Log;
***************
*** 293,357 ****
Log.logEntry(Log.SEV_DEBUG_VERBOSE, "Processing normal BEEP frame");
! int limit = length;
! StringTokenizer st;
! try {
! st = new StringTokenizer(new String(headerBuffer, 0, length,
! "UTF-8"));
! } catch (UnsupportedEncodingException e) {
! throw new RuntimeException("UnsupportedEncodingException" +
! e.getMessage());
! }
!
! int count = st.countTokens();
!
! if (!(count == 6 || count == 7)) {
! Log.logEntry(Log.SEV_DEBUG,
! "Illegal header tokens=" + count + "\n"
! + new String(headerBuffer));
!
! throw new BEEPException("Malformed BEEP Header");
! }
! // Get Message Type
! // Kick out if we've maxed, or if the type gets set.
! int msgType = MessageType.getMessageType(st.nextToken());
!
! // Read the Channel Number
! int channelNum = Integer.parseInt(st.nextToken());
!
! // Read the Message Number
! int msgNum = Integer.parseInt(st.nextToken());
!
! // Read the more flag
! char isLast = st.nextToken().charAt(0);
!
! boolean last;
! if (isLast == '*') {
! last = false;
! } else if (isLast == '.') {
! last = true;
! } else {
!
! Log.logEntry(Log.SEV_DEBUG, "lastFrame=" + isLast);
!
! throw new BEEPException("Malformed BEEP Header");
}
-
- // Sequence Number
- long seqNum = Long.parseLong(st.nextToken());
! // Size
! int size = Integer.parseInt(st.nextToken());
!
! if (size < 0) {
throw new BEEPException("Malformed BEEP Header");
- }
-
- int ansNum = -1;
- if (count == 7) {
-
- // AnsNo
- ansNum = Integer.parseInt(st.nextToken());
}
--- 295,315 ----
Log.logEntry(Log.SEV_DEBUG_VERBOSE, "Processing normal BEEP frame");
! HeaderParser header = new HeaderParser(headerBuffer, length);
! int msgType =
! MessageType.getMessageType(new String(header.parseType()));
! int channelNum = header.parseInt();
! int msgNum = header.parseInt();
! boolean last = header.parseLast();
! long seqNum = header.parseUnsignedInt();
! int size = header.parseInt();
! int ansNum = -1;
! if (header.hasMoreTokens()) {
! ansNum = header.parseInt();
}
! if (header.hasMoreTokens()) {
throw new BEEPException("Malformed BEEP Header");
}
|