diff --git a/coolamqp/framing/field_table.py b/coolamqp/framing/field_table.py index 3cc94dc96cfefa070c0c900d86d416b94ccf7cca..0e85462880c219e8b40aa8eafd0b18dd5f8d464e 100644 --- a/coolamqp/framing/field_table.py +++ b/coolamqp/framing/field_table.py @@ -22,6 +22,9 @@ import six def _tobuf(buf, pattern, *vals): return buf.write(struct.pack(pattern, *vals)) +def _tobufv(buf, value, pattern, *vals): + _tobuf(buf, pattern, *vals) + buf.write(value) def enframe_decimal(buf, v): # convert decimal to bytes dps = 0 @@ -44,8 +47,7 @@ def deframe_shortstr(buf, offset): # -> value, bytes_eaten def enframe_shortstr(buf, value): - _tobuf(buf, '!B', len(value)) - buf.write(value) + _tobufv(buf, value, '!B', len(value)) def deframe_longstr(buf, offset): # -> value, bytes_eaten @@ -54,8 +56,7 @@ def deframe_longstr(buf, offset): # -> value, bytes_eaten def enframe_longstr(buf, value): - _tobuf(buf, '!I', len(value)) - buf.write(value) + _tobufv(buf, value, '!I', len(value)) FIELD_TYPES = { @@ -162,8 +163,7 @@ def enframe_table(buf, table): _tobuf(buf, '!I', frame_table_size(table) - 4) for name, fv in table: - _tobuf(buf, '!B', len(name)) - buf.write(name) + _tobufv(buf, name, '!B', len(name)) enframe_field_value(buf, fv)