Skip to main content

[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



Back to the top