use of org.eclipse.milo.opcua.stack.core.types.structured.TranslateBrowsePathsToNodeIdsRequest in project milo by eclipse.
the class BrowsePathsHelper method onTranslateBrowsePaths.
public void onTranslateBrowsePaths(ServiceRequest service) {
TranslateBrowsePathsToNodeIdsRequest request = (TranslateBrowsePathsToNodeIdsRequest) service.getRequest();
OpcUaServer server = service.attr(ServiceAttributes.SERVER_KEY).get();
List<BrowsePath> browsePaths = l(request.getBrowsePaths());
if (browsePaths.isEmpty()) {
service.setServiceFault(StatusCodes.Bad_NothingToDo);
return;
}
if (browsePaths.size() > server.getConfig().getLimits().getMaxNodesPerTranslateBrowsePathsToNodeIds().intValue()) {
service.setServiceFault(StatusCodes.Bad_TooManyOperations);
return;
}
List<CompletableFuture<BrowsePathResult>> futures = newArrayListWithCapacity(browsePaths.size());
for (BrowsePath browsePath : browsePaths) {
futures.add(translate(browsePath));
}
sequence(futures).thenAcceptAsync(results -> {
ResponseHeader header = service.createResponseHeader();
TranslateBrowsePathsToNodeIdsResponse response = new TranslateBrowsePathsToNodeIdsResponse(header, a(results, BrowsePathResult.class), new DiagnosticInfo[0]);
service.setResponse(response);
}, server.getExecutorService());
}
Aggregations