feat: auto identify multithread datasources

This commit is contained in:
Ferrari Martino Giordano
2024-03-11 11:24:04 +01:00
parent c44d484fe9
commit 5558faf781
2 changed files with 6 additions and 1 deletions
+6 -1
View File
@@ -300,15 +300,20 @@ def __process_ds__(name, obj, edges):
sigs = {}
node = ""
thread = ""
multi_thread = False
for edge in edges:
if edge[0][0] == name:
sigs[edge[0][1]] = edge[0][2]
if not thread:
thread = edge[-1]
elif thread != edge[-1]:
multi_thread = True
if edge[1][0] == name:
sigs[edge[1][1]] = edge[1][2]
if not thread:
thread = edge[-1]
elif thread != edge[-1]:
multi_thread = True
if sigs:
if cls == "GAMDataSource":
node, edges = __process_gamds__(name, sigs, edges)
@@ -338,7 +343,7 @@ def __process_ds__(name, obj, edges):
sig_type = sigs[sig_name]
node += f"<{__sig_name__(sig_name)}> {sig_name} ({__type_to_str__(sig_type)})"
node += '", color=blue];\n'
if cls != "RealTimeThreadAsyncBridge" and node:
if not multi_thread and node:
node = f"subgraph cluster_{thread}" + "{" + node + "};"
return node, edges