The state_to_status() function re-generates the mapping dict on
every call, which could negatively affect performance.
This change only generates the mapping dict on first call and
caches it for subsequent calls.
Issue-Id: RIC-862
Signed-off-by: Alexandre Huff <alexandrehuff@utfpr.edu.br>
Change-Id: Ida25c5d1f08b4b82e100b6c67ffe911bb8093224
def state_to_status(stateno):
"""
- Converts a msg state integer to a status string.
+ Converts a msg state integer to a status string and caches for subsequent calls.
Returns "UNKNOWN STATE" if the int value is not known.
"""
- sdict = get_mapping_dict()
- return sdict.get(stateno, "UNKNOWN STATE")
+ try:
+ return state_to_status.sdict.get(stateno, "UNKNOWN STATE")
+ except AttributeError: # sdict does not exist on first call
+ state_to_status.sdict = get_mapping_dict()
+
+ return state_to_status.sdict.get(stateno, "UNKNOWN STATE")