[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[milo-dev] Browse example performance
|
Hello all!
I wonder how the building of a hierarchical tree which looks in my case
something like this:
MOpcDir browseNode(int level, MOpcDir mn, OpcUaClient client, NodeId
browseRoot) {
BrowseDescription browse = new
BrowseDescription(browseRoot, BrowseDirection.Forward,
Identifiers.References,
true,
uint(NodeClass.Object.getValue() | NodeClass.Variable.getValue()),
uint(BrowseResultMask.All.getValue()));
level++;
try {
BrowseResult browseResult =
client.browse(browse).get();
try {
for (ReferenceDescription rd :
browseResult.getReferences()) {
String n =
rd.getBrowseName().getName();
String t =
rd.getNodeClass().toString();
MOpcDir currentnode = new
MOpcDir(n);
int lvl= level;
if (t == "Object")
{
rd.getNodeId().local().ifPresent(nodeId -> {
// recursively
browse to children
mn.add(browseNode(lvl, currentnode,client, nodeId));
});
}
if (t == "Variable")
mn.add(new MOpcVariable(n));
}
} catch (Exception e) {
}
} catch (InterruptedException | ExecutionException e) {
logger.error("Browsing nodeId={} failed: {}",
browseRoot, e.getMessage(), e);
}
level--;
return mn;
}
...can be transformed by using CompletableFuture to speed-up scanning of a
large OPC structure (currently around 220k elements and takes around 3-4
hours).
Kind regards
Mario Kostadincev