diff options
author | Alon Levy <alevy@redhat.com> | 2011-04-07 23:26:50 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-04-07 23:26:50 +0300 |
commit | e367c44eda33d3144eb2ccdadb76effba213ac79 (patch) | |
tree | 8c1952ff518aab20056e54441f47d9f2bb158a0f | |
parent | a9a63598f894543c7a7a9059ec3981cadfd1e996 (diff) |
client_proto: add annotated data to ParsedResult named tuple (as last element, 'an' name)
-rw-r--r-- | client_proto.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/client_proto.py b/client_proto.py index a90f0fa..d5d4515 100644 --- a/client_proto.py +++ b/client_proto.py @@ -296,14 +296,14 @@ def parse_complex_member(member, the_type, data, i_s): break return i_s_out, member.name, parsed -ParseResult=namedtuple('ParseResult', ['msg_proto', 'result_name', 'result_value']) +ParseResult=namedtuple('ParseResult', ['msg_proto', 'result_name', 'result_value', 'an']) def parse(channel_type, is_client, header, data): if channel_type not in channels: return NoPrint(name='unknown channel (%s %s)' % ( is_client, header), s=data) # annotation support - data = AnnotatedString(data) + an_data = AnnotatedString(data) channel = channels[channel_type] collection = channel.client if is_client else channel.server if header.e.type not in collection: @@ -312,15 +312,15 @@ def parse(channel_type, is_client, header, data): else: msg_proto = collection[header.e.type] i_s, result_name, result_value = parse_complex_member( - msg_proto, msg_proto.message_type, data, 0) - i_s = max(data.max_pointer_i_s, i_s) - left_over = NoPrint(name='%s:%s' % (channel_type, i_s), s=data[i_s:]) if i_s < len(data) else '' - #result_value.data = data # let the reference escape, so we can print annotation data + msg_proto, msg_proto.message_type, an_data, 0) + i_s = max(an_data.max_pointer_i_s, i_s) + left_over = NoPrint(name='%s:%s' % (channel_type, i_s), s=an_data[i_s:]) if i_s < len(an_data) else '' + #result_value.an_data = an_data # let the reference escape, so we can print annotation an_data if len(left_over) > 0: logger.warning("in message %s %s out %s unaccounted for (%2.1d%%)" % ( - msg_proto.name, len(left_over), len(data), 100.0*len(left_over)/len(data))) + msg_proto.name, len(left_over), len(an_data), 100.0*len(left_over)/len(an_data))) #import pdb; pdb.set_trace() - return ParseResult(msg_proto, result_name, result_value) + return ParseResult(msg_proto, result_name, result_value, an=an_data) class NoPrint(object): objs = {} |