@ -11,12 +11,13 @@ class MessageNamespace(object):
domain , such as within a given BOLT """
domain , such as within a given BOLT """
def __init__ ( self , csv_lines = [ ] ) :
def __init__ ( self , csv_lines = [ ] ) :
self . subtypes = { }
self . subtypes = { }
self . fundamentaltypes = { }
self . tlvtypes = { }
self . tlvtypes = { }
self . messagetypes = { }
self . messagetypes = { }
# For convenience, basic types go in every namespace
# For convenience, basic types go in every namespace
for t in fundamental_types ( ) :
for t in fundamental_types ( ) :
self . add_sub type ( t )
self . add_fundamental type ( t )
self . load_csv ( csv_lines )
self . load_csv ( csv_lines )
@ -26,6 +27,10 @@ domain, such as within a given BOLT"""
return ValueError ( ' Already have {} ' . format ( prev ) )
return ValueError ( ' Already have {} ' . format ( prev ) )
self . subtypes [ t . name ] = t
self . subtypes [ t . name ] = t
def add_fundamentaltype ( self , t ) :
assert not self . get_type ( t . name )
self . fundamentaltypes [ t . name ] = t
def add_tlvtype ( self , t ) :
def add_tlvtype ( self , t ) :
prev = self . get_type ( t . name )
prev = self . get_type ( t . name )
if prev :
if prev :
@ -51,6 +56,11 @@ domain, such as within a given BOLT"""
return m
return m
return None
return None
def get_fundamentaltype ( self , name ) :
if name in self . fundamentaltypes :
return self . fundamentaltypes [ name ]
return None
def get_subtype ( self , name ) :
def get_subtype ( self , name ) :
if name in self . subtypes :
if name in self . subtypes :
return self . subtypes [ name ]
return self . subtypes [ name ]
@ -62,7 +72,9 @@ domain, such as within a given BOLT"""
return None
return None
def get_type ( self , name ) :
def get_type ( self , name ) :
t = self . get_subtype ( name )
t = self . get_fundamentaltype ( name )
if not t :
t = self . get_subtype ( name )
if not t :
if not t :
t = self . get_tlvtype ( name )
t = self . get_tlvtype ( name )
return t
return t