public static CompletableFuture<Unit> bindServer(UaTcpStackServer stackServer, String address, int port) { return SEMAPHORE.acquire().thenCompose(permit -> doBindServer(stackServer, address, port) .whenComplete((u, ex) -> permit.release()) ); }
public static CompletableFuture<Unit> shutdownAll() { return SEMAPHORE.acquire().thenCompose(permit -> doShutdownAll() .whenComplete((u, ex) -> permit.release()) ); }
public static CompletableFuture<Unit> unbindServer(UaTcpStackServer stackServer, String address, int port) { return SEMAPHORE.acquire().thenCompose(permit -> doUnbindServer(stackServer, address, port) .whenComplete((u, ex) -> permit.release()) ); }
@Override public CompletableFuture<List<UaMonitoredItem>> createMonitoredItems( TimestampsToReturn timestampsToReturn, List<MonitoredItemCreateRequest> itemsToCreate, ItemCreationCallback itemCreationCallback) { return notificationSemaphore.acquire().thenCompose(permit -> { CompletableFuture<List<UaMonitoredItem>> itemsFuture = createMonitoredItems(timestampsToReturn, itemsToCreate); return itemsFuture.whenComplete((items, ex) -> { try { if (items != null) { for (int i = 0; i < items.size(); i++) { UaMonitoredItem item = items.get(i); itemCreationCallback.onItemCreated(client.getDataTypeManager(), item, i); } } } finally { permit.release(); } }); }); }
subscription.getNotificationSemaphore().acquire().thenAccept(permit -> deliveryQueue.submit(() -> { try { Map<UInteger, OpcUaMonitoredItem> items = subscription.getItemsByClientHandle();