@@ -1251,8 +1251,9 @@ class _MeterConfig:
12511251 def attrs ():
12521252 return ["cir" , "cburst" , "pir" , "pburst" , "eburst" ]
12531253
1254- def __init__ (self , meter_name , meter_type ):
1254+ def __init__ (self , meter_name , meter_unit , meter_type ):
12551255 self ._meter_name = meter_name
1256+ self ._meter_unit = meter_unit
12561257 self ._meter_type = meter_type
12571258 self ._msg = p4runtime_pb2 .MeterConfig ()
12581259 self ._attrs = _MeterConfig .attrs ()
@@ -1288,18 +1289,18 @@ def _repr_pretty_(self, p, cycle):
12881289 p .text (str (self .msg ()))
12891290
12901291 @classmethod
1291- def set_param (cls , instance , meter_name , meter_type , name , value ):
1292+ def set_param (cls , instance , meter_name , meter_unit , meter_type , name , value ):
12921293 if instance is None :
1293- d = cls (meter_name , meter_type )
1294+ d = cls (meter_name , meter_unit , meter_type )
12941295 else :
12951296 d = instance
12961297 setattr (d , name , value )
12971298 return d
12981299
12991300 @classmethod
1300- def get_param (cls , instance , meter_name , meter_type , name ):
1301+ def get_param (cls , instance , meter_name , meter_unit , meter_type , name ):
13011302 if instance is None :
1302- d = cls (meter_name , meter_type )
1303+ d = cls (meter_name , meter_unit , meter_type )
13031304 else :
13041305 d = instance
13051306 r = getattr (d , name )
@@ -1662,7 +1663,10 @@ def __getattr__(self, name):
16621663 raise UserError ("Table has no direct meter" )
16631664 if self ._meter_config is None :
16641665 self ._meter_config = _MeterConfig (
1665- self ._direct_meter .preamble .name , self ._direct_meter .spec .unit )
1666+ self ._direct_meter .preamble .name ,
1667+ self ._direct_meter .spec .unit ,
1668+ self ._direct_meter .spec .type
1669+ )
16661670 return self ._meter_config
16671671 if name == "time_since_last_hit" :
16681672 if self ._idle_timeout_behavior is None :
@@ -1716,7 +1720,10 @@ def _from_msg(self, msg):
17161720 self ._counter_data = None
17171721 if msg .HasField ('meter_config' ):
17181722 self ._meter_config = _MeterConfig (
1719- self ._direct_meter .preamble .name , self ._direct_meter .spec .unit )
1723+ self ._direct_meter .preamble .name ,
1724+ self ._direct_meter .spec .unit ,
1725+ self ._direct_meter .spec .type
1726+ )
17201727 self ._meter_config ._from_msg (msg .meter_config )
17211728 else :
17221729 self ._meter_config = None
@@ -2012,7 +2019,8 @@ def read(self, function=None):
20122019class _MeterEntryBase (_P4EntityBase ):
20132020 def __init__ (self , * args , ** kwargs ):
20142021 super ().__init__ (* args , ** kwargs )
2015- self ._meter_type = self ._info .spec .unit
2022+ self ._meter_unit = self ._info .spec .unit
2023+ self ._meter_type = self ._info .spec .type
20162024 self ._config = None
20172025
20182026 def __dir__ (self ):
@@ -2031,7 +2039,7 @@ def __setattr__(self, name, value):
20312039 raise UserError ("Cannot change meter name" )
20322040 if name in _MeterConfig .attrs ():
20332041 self ._config = _MeterConfig .set_param (
2034- self ._config , self .name , self ._meter_type , name , value )
2042+ self ._config , self .name , self ._meter_unit , self . _meter_type , name , value )
20352043 return
20362044 if name == "config" :
20372045 if value is None :
@@ -2043,18 +2051,18 @@ def __setattr__(self, name, value):
20432051 def __getattr__ (self , name ):
20442052 if name in _MeterConfig .attrs ():
20452053 self ._config , r = _MeterConfig .get_param (
2046- self ._config , self .name , self ._meter_type , name )
2054+ self ._config , self .name , self ._meter_unit , self . _meter_type , name )
20472055 return r
20482056 if name == "config" :
20492057 if self ._config is None :
2050- self ._config = _MeterConfig (self .name , self ._meter_type )
2058+ self ._config = _MeterConfig (self .name , self ._meter_unit , self . _meter_type )
20512059 return self ._config
20522060 return super ().__getattr__ (name )
20532061
20542062 def _from_msg (self , msg ):
20552063 self ._entry .CopyFrom (msg )
20562064 if msg .HasField ('config' ):
2057- self ._config = _MeterConfig (self .name , self ._meter_type )
2065+ self ._config = _MeterConfig (self .name , self ._meter_unit , self . _meter_type )
20582066 self ._config ._from_msg (msg .config )
20592067 else :
20602068 self ._config = None
0 commit comments