mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
tlv: add tlv messages to general message set
Add tlv-messages to the general messages set so that their parsing messages get printed out. FIXME: figure out how to account for partial message length processing?
This commit is contained in:
committed by
Rusty Russell
parent
44d052e6c3
commit
0b12d90c4a
@@ -330,12 +330,13 @@ class CCode(object):
|
|||||||
|
|
||||||
|
|
||||||
class Message(object):
|
class Message(object):
|
||||||
def __init__(self, name, enum, comments):
|
def __init__(self, name, enum, comments, is_tlv):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.enum = enum
|
self.enum = enum
|
||||||
self.comments = comments
|
self.comments = comments
|
||||||
self.fields = []
|
self.fields = []
|
||||||
self.has_variable_fields = False
|
self.has_variable_fields = False
|
||||||
|
self.is_tlv = is_tlv
|
||||||
|
|
||||||
def checkLenField(self, field):
|
def checkLenField(self, field):
|
||||||
# Optional fields don't have a len.
|
# Optional fields don't have a len.
|
||||||
@@ -698,8 +699,9 @@ def parse_tlv_file(tlv_field_name):
|
|||||||
|
|
||||||
if len(parts) == 2:
|
if len(parts) == 2:
|
||||||
# eg commit_sig,132
|
# eg commit_sig,132
|
||||||
tlv_msg = Message(parts[0], Enumtype("TLV_" + parts[0].upper(), parts[1]), tlv_comments)
|
tlv_msg = Message(parts[0], Enumtype("TLV_" + parts[0].upper(), parts[1]), tlv_comments, True)
|
||||||
tlv_messages.append(tlv_msg)
|
tlv_messages.append(tlv_msg)
|
||||||
|
messages.append(tlv_msg)
|
||||||
|
|
||||||
tlv_comments = []
|
tlv_comments = []
|
||||||
tlv_prevfield = None
|
tlv_prevfield = None
|
||||||
@@ -763,7 +765,7 @@ for line in fileinput.input(options.files):
|
|||||||
|
|
||||||
if len(parts) == 2:
|
if len(parts) == 2:
|
||||||
# eg commit_sig,132
|
# eg commit_sig,132
|
||||||
messages.append(Message(parts[0], Enumtype("WIRE_" + parts[0].upper(), parts[1]), comments))
|
messages.append(Message(parts[0], Enumtype("WIRE_" + parts[0].upper(), parts[1]), comments, False))
|
||||||
comments = []
|
comments = []
|
||||||
prevfield = None
|
prevfield = None
|
||||||
else:
|
else:
|
||||||
@@ -816,21 +818,21 @@ def format_enums(template, enums, enumname):
|
|||||||
enumname=enumname)
|
enumname=enumname)
|
||||||
|
|
||||||
|
|
||||||
def build_hdr_enums(toplevel_enumname, messages, tlv_fields):
|
def build_hdr_enums(toplevel_enumname, toplevel_messages, tlv_fields):
|
||||||
enum_set = ""
|
enum_set = ""
|
||||||
enum_set += enum_header(construct_hdr_enums(messages), toplevel_enumname)
|
enum_set += enum_header(construct_hdr_enums(toplevel_messages), toplevel_enumname)
|
||||||
for field_name, messages in tlv_fields.items():
|
for field_name, tlv_messages in tlv_fields.items():
|
||||||
enum_set += "\n"
|
enum_set += "\n"
|
||||||
enum_set += enum_header(construct_hdr_enums(messages), field_name + '_type')
|
enum_set += enum_header(construct_hdr_enums(tlv_messages), field_name + '_type')
|
||||||
return enum_set
|
return enum_set
|
||||||
|
|
||||||
|
|
||||||
def build_impl_enums(toplevel_enumname, messages, tlv_fields):
|
def build_impl_enums(toplevel_enumname, toplevel_messages, tlv_fields):
|
||||||
enum_set = ""
|
enum_set = ""
|
||||||
enum_set += enum_impl(construct_impl_enums(messages), toplevel_enumname)
|
enum_set += enum_impl(construct_impl_enums(toplevel_messages), toplevel_enumname)
|
||||||
for field_name, messages in tlv_fields.items():
|
for field_name, tlv_messages in tlv_fields.items():
|
||||||
enum_set += "\n"
|
enum_set += "\n"
|
||||||
enum_set += enum_impl(construct_impl_enums(messages), field_name + '_type')
|
enum_set += enum_impl(construct_impl_enums(tlv_messages), field_name + '_type')
|
||||||
return enum_set
|
return enum_set
|
||||||
|
|
||||||
|
|
||||||
@@ -921,11 +923,12 @@ elif options.header:
|
|||||||
else:
|
else:
|
||||||
template = impl_template
|
template = impl_template
|
||||||
|
|
||||||
# Dump out enum, sorted by value order.
|
# Print out all the things
|
||||||
built_hdr_enums = build_hdr_enums(options.enumname, messages, tlv_fields)
|
toplevel_messages = [m for m in messages if not m.is_tlv]
|
||||||
built_impl_enums = build_impl_enums(options.enumname, messages, tlv_fields)
|
built_hdr_enums = build_hdr_enums(options.enumname, toplevel_messages, tlv_fields)
|
||||||
|
built_impl_enums = build_impl_enums(options.enumname, toplevel_messages, tlv_fields)
|
||||||
includes = '\n'.join(includes)
|
includes = '\n'.join(includes)
|
||||||
printcases = ['case {enum.name}: printf("{enum.name}:\\n"); printwire_{name}("{name}", msg); return;'.format(enum=m.enum, name=m.name) for m in messages]
|
printcases = ['case {enum.name}: printf("{enum.name}:\\n"); printwire_{name}("{name}", msg); return;'.format(enum=m.enum, name=m.name) for m in toplevel_messages]
|
||||||
|
|
||||||
if options.printwire:
|
if options.printwire:
|
||||||
decls = [m.print_printwire(options.header) for m in messages + messages_with_option]
|
decls = [m.print_printwire(options.header) for m in messages + messages_with_option]
|
||||||
|
|||||||
Reference in New Issue
Block a user