Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 9cf04d3f5 -> 3d73a89c1


DISPATCH-198 - Generalize the message parser to handle all data types.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/3d73a89c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/3d73a89c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/3d73a89c

Branch: refs/heads/master
Commit: 3d73a89c143e5406b575b17e6e92cd65eddcfc0c
Parents: 9cf04d3
Author: Ted Ross <[email protected]>
Authored: Tue Dec 1 12:34:30 2015 -0500
Committer: Ted Ross <[email protected]>
Committed: Tue Dec 1 12:34:30 2015 -0500

----------------------------------------------------------------------
 src/message.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/3d73a89c/src/message.c
----------------------------------------------------------------------
diff --git a/src/message.c b/src/message.c
index 6c375a7..4d2b3f6 100644
--- a/src/message.c
+++ b/src/message.c
@@ -319,13 +319,17 @@ static int qd_check_and_advance(qd_buffer_t         
**buffer,
     int consume     = 0;
     unsigned char tag = next_octet(&test_cursor, &test_buffer);
     if (!test_cursor) return 0;
-    switch (tag) {
-    case 0x45 : // list0
-        break;
-
-    case 0xd0 : // list32
-    case 0xd1 : // map32
-    case 0xb0 : // vbin32
+    switch (tag & 0xF0) {
+    case 0x40:               break;
+    case 0x50: consume = 1;  break;
+    case 0x60: consume = 2;  break;
+    case 0x70: consume = 4;  break;
+    case 0x80: consume = 8;  break;
+    case 0x90: consume = 16; break;
+
+    case 0xB0:
+    case 0xD0:
+    case 0xF0:
         pre_consume += 3;
         consume |= ((int) next_octet(&test_cursor, &test_buffer)) << 24;
         if (!test_cursor) return 0;
@@ -335,9 +339,9 @@ static int qd_check_and_advance(qd_buffer_t         
**buffer,
         if (!test_cursor) return 0;
         // Fall through to the next case...
 
-    case 0xc0 : // list8
-    case 0xc1 : // map8
-    case 0xa0 : // vbin8
+    case 0xA0:
+    case 0xC0:
+    case 0xE0:
         pre_consume += 1;
         consume |= (int) next_octet(&test_cursor, &test_buffer);
         if (!test_cursor) return 0;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to