summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-04-07 23:26:50 +0300
committerAlon Levy <alevy@redhat.com>2011-04-07 23:26:50 +0300
commite367c44eda33d3144eb2ccdadb76effba213ac79 (patch)
tree8c1952ff518aab20056e54441f47d9f2bb158a0f
parenta9a63598f894543c7a7a9059ec3981cadfd1e996 (diff)
client_proto: add annotated data to ParsedResult named tuple (as last element, 'an' name)
-rw-r--r--client_proto.py16
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 = {}