Fix caching of error code data not happening 19/7419/1
authorAlexandre Huff <alexandrehuff@utfpr.edu.br>
Fri, 17 Dec 2021 11:04:48 +0000 (08:04 -0300)
committerAlexandre Huff <alexandrehuff@utfpr.edu.br>
Fri, 17 Dec 2021 11:04:48 +0000 (08:04 -0300)
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

ricxappframe/rmr/rmrclib/rmrclib.py

index 953b76f..c26ffe1 100644 (file)
@@ -97,9 +97,13 @@ def get_mapping_dict(cache={}):
 
 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")