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]
