You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/01/15 12:54:37 UTC

[plc4x] branch feature/cdutz/connection-cache-and-scraper-ng updated (e50381b658 -> 56f227137e)

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a change to branch feature/cdutz/connection-cache-and-scraper-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from e50381b658 feat(plc4j/examples): Added a new example, using the ADS protocol to read device telemetry from the PLC using MDP
     new 3681ea988a feat(ams): Made it possible to decode error responses
     new 8d71fcbbb9 feat(drivers): Updated vendor-ids and service ids
     new 56f227137e feat(cache): Added a new implementation of a connection cache

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |  44 +-
 .../bacnetip/readwrite/model/BACnetVendorId.go     |  48 ++
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  56 +-
 .../apache/plc4x/java/ads/readwrite/AmsPacket.java |  65 +-
 .../java/bacnetip/readwrite/BACnetVendorId.java    |   3 +
 .../java/knxnetip/readwrite/KnxManufacturer.java   |   6 +-
 .../java/opcua/readwrite/OpcuaNodeIdServices.java  | 673 ---------------------
 plc4j/tools/connection-cache-ng/README.md          |  51 ++
 .../pom.xml                                        |  11 +-
 .../utils/cache/CachedPlcConnectionManager.java    | 113 ++++
 .../java/utils/cache/ConnectionContainer.java      |  72 +++
 .../java/utils/cache/LeasedPlcConnection.java      | 117 ++++
 .../cache/CachedPlcConnectionManagerTest.java      |  23 +
 .../apache/plc4x/java/utils/cache/ManualTest.java  |  21 +
 .../src/test/resources/logback-test.xml            |   4 +-
 plc4j/tools/pom.xml                                |   2 +
 plc4j/tools/{scraper => scraper-ng}/pom.xml        |  25 +-
 .../ads/src/main/resources/protocols/ads/ads.mspec |  45 +-
 18 files changed, 611 insertions(+), 768 deletions(-)
 create mode 100644 plc4j/tools/connection-cache-ng/README.md
 copy plc4j/tools/{connection-cache => connection-cache-ng}/pom.xml (87%)
 create mode 100644 plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManager.java
 create mode 100644 plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
 create mode 100644 plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java
 create mode 100644 plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManagerTest.java
 create mode 100644 plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/ManualTest.java
 copy plc4j/tools/{connection-cache => connection-cache-ng}/src/test/resources/logback-test.xml (92%)
 copy plc4j/tools/{scraper => scraper-ng}/pom.xml (93%)


[plc4x] 01/03: feat(ams): Made it possible to decode error responses

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/cdutz/connection-cache-and-scraper-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 3681ea988ae5206b9b977afda94a82409d2cb0eb
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sat Jan 14 16:17:38 2023 +0100

    feat(ams): Made it possible to decode error responses
---
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  | 44 ++++++++-------
 .../apache/plc4x/java/ads/readwrite/AmsPacket.java | 65 +++++++++++++++-------
 .../ads/src/main/resources/protocols/ads/ads.mspec | 45 ++++++++-------
 3 files changed, 92 insertions(+), 62 deletions(-)

diff --git a/plc4go/protocols/ads/readwrite/model/AmsPacket.go b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
index cf0ae2073b..1e794fa7dc 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
@@ -450,48 +450,50 @@ func AmsPacketParseWithBuffer(readBuffer utils.ReadBuffer) (AmsPacket, error) {
 	var _child AmsPacketChildSerializeRequirement
 	var typeSwitchError error
 	switch {
-	case commandId == CommandId_INVALID && response == bool(false): // AdsInvalidRequest
+	case errorCode == 0x00000000 && commandId == CommandId_INVALID && response == bool(false): // AdsInvalidRequest
 		_childTemp, typeSwitchError = AdsInvalidRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_INVALID && response == bool(true): // AdsInvalidResponse
+	case errorCode == 0x00000000 && commandId == CommandId_INVALID && response == bool(true): // AdsInvalidResponse
 		_childTemp, typeSwitchError = AdsInvalidResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(false): // AdsReadDeviceInfoRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(false): // AdsReadDeviceInfoRequest
 		_childTemp, typeSwitchError = AdsReadDeviceInfoRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(true): // AdsReadDeviceInfoResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(true): // AdsReadDeviceInfoResponse
 		_childTemp, typeSwitchError = AdsReadDeviceInfoResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ && response == bool(false): // AdsReadRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ && response == bool(false): // AdsReadRequest
 		_childTemp, typeSwitchError = AdsReadRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ && response == bool(true): // AdsReadResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ && response == bool(true): // AdsReadResponse
 		_childTemp, typeSwitchError = AdsReadResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_WRITE && response == bool(false): // AdsWriteRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE && response == bool(false): // AdsWriteRequest
 		_childTemp, typeSwitchError = AdsWriteRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_WRITE && response == bool(true): // AdsWriteResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE && response == bool(true): // AdsWriteResponse
 		_childTemp, typeSwitchError = AdsWriteResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_STATE && response == bool(false): // AdsReadStateRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_STATE && response == bool(false): // AdsReadStateRequest
 		_childTemp, typeSwitchError = AdsReadStateRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_STATE && response == bool(true): // AdsReadStateResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_STATE && response == bool(true): // AdsReadStateResponse
 		_childTemp, typeSwitchError = AdsReadStateResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_WRITE_CONTROL && response == bool(false): // AdsWriteControlRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE_CONTROL && response == bool(false): // AdsWriteControlRequest
 		_childTemp, typeSwitchError = AdsWriteControlRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_WRITE_CONTROL && response == bool(true): // AdsWriteControlResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE_CONTROL && response == bool(true): // AdsWriteControlResponse
 		_childTemp, typeSwitchError = AdsWriteControlResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(false): // AdsAddDeviceNotificationRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(false): // AdsAddDeviceNotificationRequest
 		_childTemp, typeSwitchError = AdsAddDeviceNotificationRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(true): // AdsAddDeviceNotificationResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(true): // AdsAddDeviceNotificationResponse
 		_childTemp, typeSwitchError = AdsAddDeviceNotificationResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(false): // AdsDeleteDeviceNotificationRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(false): // AdsDeleteDeviceNotificationRequest
 		_childTemp, typeSwitchError = AdsDeleteDeviceNotificationRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(true): // AdsDeleteDeviceNotificationResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(true): // AdsDeleteDeviceNotificationResponse
 		_childTemp, typeSwitchError = AdsDeleteDeviceNotificationResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(false): // AdsDeviceNotificationRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(false): // AdsDeviceNotificationRequest
 		_childTemp, typeSwitchError = AdsDeviceNotificationRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(true): // AdsDeviceNotificationResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(true): // AdsDeviceNotificationResponse
 		_childTemp, typeSwitchError = AdsDeviceNotificationResponseParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_WRITE && response == bool(false): // AdsReadWriteRequest
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_WRITE && response == bool(false): // AdsReadWriteRequest
 		_childTemp, typeSwitchError = AdsReadWriteRequestParseWithBuffer(readBuffer)
-	case commandId == CommandId_ADS_READ_WRITE && response == bool(true): // AdsReadWriteResponse
+	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_WRITE && response == bool(true): // AdsReadWriteResponse
 		_childTemp, typeSwitchError = AdsReadWriteResponseParseWithBuffer(readBuffer)
+	case true: // ErrorResponse
+		_childTemp, typeSwitchError = ErrorResponseParseWithBuffer(readBuffer)
 	default:
-		typeSwitchError = errors.Errorf("Unmapped type for parameters [commandId=%v, response=%v]", commandId, response)
+		typeSwitchError = errors.Errorf("Unmapped type for parameters [errorCode=%v, commandId=%v, response=%v]", errorCode, commandId, response)
 	}
 	if typeSwitchError != nil {
 		return nil, errors.Wrap(typeSwitchError, "Error parsing sub-type for type-switch of AmsPacket")
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
index 6547947b91..520d01ff4d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
@@ -346,71 +346,96 @@ public abstract class AmsPacket implements Message {
 
     // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
     AmsPacketBuilder builder = null;
-    if (EvaluationHelper.equals(commandId, CommandId.INVALID)
+    if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.INVALID)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsInvalidRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.INVALID)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.INVALID)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsInvalidResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_DEVICE_INFO)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_DEVICE_INFO)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsReadDeviceInfoRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_DEVICE_INFO)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_DEVICE_INFO)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsReadDeviceInfoResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsReadRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsReadResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_WRITE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_WRITE)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsWriteRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_WRITE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_WRITE)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsWriteResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_STATE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_STATE)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsReadStateRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_STATE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_STATE)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsReadStateResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_WRITE_CONTROL)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_WRITE_CONTROL)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsWriteControlRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_WRITE_CONTROL)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_WRITE_CONTROL)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsWriteControlResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_ADD_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_ADD_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsAddDeviceNotificationRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_ADD_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_ADD_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsAddDeviceNotificationResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_DELETE_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_DELETE_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsDeleteDeviceNotificationRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_DELETE_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_DELETE_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsDeleteDeviceNotificationResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsDeviceNotificationRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_DEVICE_NOTIFICATION)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_DEVICE_NOTIFICATION)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsDeviceNotificationResponse.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_WRITE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_WRITE)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = AdsReadWriteRequest.staticParseBuilder(readBuffer);
-    } else if (EvaluationHelper.equals(commandId, CommandId.ADS_READ_WRITE)
+    } else if (EvaluationHelper.equals(errorCode, (long) 0x00000000L)
+        && EvaluationHelper.equals(commandId, CommandId.ADS_READ_WRITE)
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder = AdsReadWriteResponse.staticParseBuilder(readBuffer);
+    } else {
+      builder = ErrorResponse.staticParseBuilder(readBuffer);
     }
     if (builder == null) {
       throw new ParseException(
           "Unsupported case for discriminated type"
               + " parameters ["
+              + "errorCode="
+              + errorCode
+              + " "
               + "commandId="
               + commandId
               + " "
diff --git a/protocols/ads/src/main/resources/protocols/ads/ads.mspec b/protocols/ads/src/main/resources/protocols/ads/ads.mspec
index ffead9cd7d..a7e5a3b699 100644
--- a/protocols/ads/src/main/resources/protocols/ads/ads.mspec
+++ b/protocols/ads/src/main/resources/protocols/ads/ads.mspec
@@ -146,12 +146,13 @@
     // 4 bytes	Free usable 32 bit array. Usually this array serves to send an Id. This Id makes is possible to assign a received response to a request, which was sent before.
     [simple        uint        32  invokeId                                  ]
     // The payload
-    [typeSwitch commandId, response
-        ['INVALID', 'false' AdsInvalidRequest]
-        ['INVALID', 'true' AdsInvalidResponse]
+    // TODO: In case of an error code that is not 0, we might not have a payload at all
+    [typeSwitch errorCode, commandId, response
+        ['0x00000000', 'INVALID', 'false' AdsInvalidRequest]
+        ['0x00000000', 'INVALID', 'true' AdsInvalidResponse]
 
-        ['ADS_READ_DEVICE_INFO', 'false' AdsReadDeviceInfoRequest]
-        ['ADS_READ_DEVICE_INFO', 'true' AdsReadDeviceInfoResponse
+        ['0x00000000', 'ADS_READ_DEVICE_INFO', 'false' AdsReadDeviceInfoRequest]
+        ['0x00000000', 'ADS_READ_DEVICE_INFO', 'true' AdsReadDeviceInfoResponse
             // 4 bytes	ADS error number.
             [simple ReturnCode result]
             // Version	1 byte	Major version number
@@ -164,7 +165,7 @@
             [array byte  device count '16']
         ]
 
-        ['ADS_READ', 'false' AdsReadRequest
+        ['0x00000000', 'ADS_READ', 'false' AdsReadRequest
             // 4 bytes	Index Group of the data which should be read.
             [simple uint 32 indexGroup]
             // 4 bytes	Index Offset of the data which should be read.
@@ -172,7 +173,7 @@
             // 4 bytes	Length of the data (in bytes) which should be read.
             [simple uint 32 length]
         ]
-        ['ADS_READ', 'true' AdsReadResponse
+        ['0x00000000', 'ADS_READ', 'true' AdsReadResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
             // 4 bytes	Length of data which are supplied back.
@@ -181,7 +182,7 @@
             [array byte data count 'length']
         ]
 
-        ['ADS_WRITE', 'false' AdsWriteRequest
+        ['0x00000000', 'ADS_WRITE', 'false' AdsWriteRequest
             // 4 bytes	Index Group of the data which should be written.
             [simple uint 32 indexGroup]
             // 4 bytes	Index Offset of the data which should be written.
@@ -191,13 +192,13 @@
             // n bytes	Data which are written in the ADS device.
             [array byte data count 'length']
         ]
-        ['ADS_WRITE', 'true' AdsWriteResponse
+        ['0x00000000', 'ADS_WRITE', 'true' AdsWriteResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
         ]
 
-        ['ADS_READ_STATE', 'false' AdsReadStateRequest]
-        ['ADS_READ_STATE', 'true' AdsReadStateResponse
+        ['0x00000000', 'ADS_READ_STATE', 'false' AdsReadStateRequest]
+        ['0x00000000', 'ADS_READ_STATE', 'true' AdsReadStateResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
             // 2 bytes	New ADS status (see data type ADSSTATE of the ADS-DLL).
@@ -206,7 +207,7 @@
             [simple uint 16 deviceState]
         ]
 
-        ['ADS_WRITE_CONTROL', 'false' AdsWriteControlRequest
+        ['0x00000000', 'ADS_WRITE_CONTROL', 'false' AdsWriteControlRequest
             // 2 bytes	New ADS status (see data type ADSSTATE of the ADS-DLL).
             [simple uint 16 adsState]
             // 2 bytes	New device status.
@@ -216,12 +217,12 @@
             // n bytes	Additional data which are sent to the ADS device
             [array byte data count 'length']
         ]
-        ['ADS_WRITE_CONTROL', 'true' AdsWriteControlResponse
+        ['0x00000000', 'ADS_WRITE_CONTROL', 'true' AdsWriteControlResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
         ]
 
-        ['ADS_ADD_DEVICE_NOTIFICATION', 'false' AdsAddDeviceNotificationRequest
+        ['0x00000000', 'ADS_ADD_DEVICE_NOTIFICATION', 'false' AdsAddDeviceNotificationRequest
             // 4 bytes	Index Group of the data, which should be sent per notification.
             [simple     uint 32      indexGroup      ]
             // 4 bytes	Index Offset of the data, which should be sent per notification.
@@ -239,23 +240,23 @@
             [reserved   uint 64      '0x0000'        ]
             [reserved   uint 64      '0x0000'        ]
         ]
-        ['ADS_ADD_DEVICE_NOTIFICATION', 'true' AdsAddDeviceNotificationResponse
+        ['0x00000000', 'ADS_ADD_DEVICE_NOTIFICATION', 'true' AdsAddDeviceNotificationResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
             // 4 bytes	Handle of notification
             [simple uint 32 notificationHandle]
         ]
 
-        ['ADS_DELETE_DEVICE_NOTIFICATION', 'false' AdsDeleteDeviceNotificationRequest
+        ['0x00000000', 'ADS_DELETE_DEVICE_NOTIFICATION', 'false' AdsDeleteDeviceNotificationRequest
             // 4 bytes	Handle of notification
             [simple uint 32 notificationHandle]
         ]
-        ['ADS_DELETE_DEVICE_NOTIFICATION', 'true' AdsDeleteDeviceNotificationResponse
+        ['0x00000000', 'ADS_DELETE_DEVICE_NOTIFICATION', 'true' AdsDeleteDeviceNotificationResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
         ]
 
-        ['ADS_DEVICE_NOTIFICATION', 'false' AdsDeviceNotificationRequest
+        ['0x00000000', 'ADS_DEVICE_NOTIFICATION', 'false' AdsDeviceNotificationRequest
             // 4 bytes	Size of data in byte.
             [simple uint 32 length]
             // 4 bytes	Number of elements of type AdsStampHeader.
@@ -263,9 +264,9 @@
             // n bytes	Array with elements of type AdsStampHeader.
             [array AdsStampHeader adsStampHeaders count 'stamps']
         ]
-        ['ADS_DEVICE_NOTIFICATION', 'true' AdsDeviceNotificationResponse]
+        ['0x00000000', 'ADS_DEVICE_NOTIFICATION', 'true' AdsDeviceNotificationResponse]
 
-        ['ADS_READ_WRITE', 'false' AdsReadWriteRequest
+        ['0x00000000', 'ADS_READ_WRITE', 'false' AdsReadWriteRequest
             // 4 bytes	Index Group of the data which should be written.
             [simple uint 32 indexGroup]
             // 4 bytes	Index Offset of the data which should be written.
@@ -279,7 +280,7 @@
             // n bytes	Data which are written in the ADS device.
             [array byte data count 'writeLength - (COUNT(items) * 12)']
         ]
-        ['ADS_READ_WRITE', 'true' AdsReadWriteResponse
+        ['0x00000000', 'ADS_READ_WRITE', 'true' AdsReadWriteResponse
             // 4 bytes	ADS error number
             [simple ReturnCode result]
             // 4 bytes	Length of data in byte.
@@ -287,6 +288,8 @@
             // n bytes Additional data which are sent to the ADS device
             [array byte data count 'length']
         ]
+        [ErrorResponse
+        ]
     ]
 ]
 


[plc4x] 03/03: feat(cache): Added a new implementation of a connection cache

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/cdutz/connection-cache-and-scraper-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 56f227137e05ddbf4d9f620789ca13a0af20cb9b
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 15 13:54:28 2023 +0100

    feat(cache): Added a new implementation of a connection cache
    
    - Mostly untested draft implementation ... tests are coming.
---
 plc4j/tools/connection-cache-ng/README.md          |  51 +++++++++
 plc4j/tools/{ => connection-cache-ng}/pom.xml      |  51 +++++----
 .../utils/cache/CachedPlcConnectionManager.java    | 113 ++++++++++++++++++++
 .../java/utils/cache/ConnectionContainer.java      |  72 +++++++++++++
 .../java/utils/cache/LeasedPlcConnection.java      | 117 +++++++++++++++++++++
 .../cache/CachedPlcConnectionManagerTest.java      |  23 ++++
 .../apache/plc4x/java/utils/cache/ManualTest.java  |  21 ++++
 .../src/test/resources/logback-test.xml}           |  36 +++----
 plc4j/tools/pom.xml                                |   2 +
 plc4j/tools/scraper-ng/pom.xml                     | 110 +++++++++++++++++++
 10 files changed, 555 insertions(+), 41 deletions(-)

diff --git a/plc4j/tools/connection-cache-ng/README.md b/plc4j/tools/connection-cache-ng/README.md
new file mode 100644
index 0000000000..1a7fe7600e
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/README.md
@@ -0,0 +1,51 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+
+# Connection Cache
+
+In contrast to typical database-connections, plc-connections have numerous disadvantages:
+
+1. The number of connections a PLC is able to accept might be very limited.
+2. Connecting can require a number of round-trips and a lot of data being transmitted.
+
+If multiple places in the application want to access a PLC, the option of `every part opens its own connection` will quickly drain the resources of the PLC. Opening and closing the connections in order to reduce this, will waste a lot of resources.
+
+Therefore, it's the goal of the connection-cache to allow gaining access to a PLC the usual way, however as soon as a client is finished with its work, it doesn't close the connection, but gives it back to the cache for the next client to be able to use the same connection without having to re-connect.
+
+The `ConnectionCache` implements the `PlcConnectionManager` interface, just the same way the `PlcDriverManager` does, so it can generally be used instead of the un-cached version.
+
+## Architecture
+
+The `CachedPlcConnectionManager` contains a map of `ConnectionContainer` objects.
+Each of these generally have a reference to a real `PlcConnection` as well as all properties for managing it's state.
+
+In general there are just three properties:
+
+- A reference to the connection this container handles
+- A reference to the current connection-lease (`null`, if the `ConnectionContainer` is idle)
+- A queue where all further lease-requests are lined up
+
+Whenever a `PlcConnection` is required, instead of returning a real `PlcConnection`, the `CachedPlcConnectionManager` returns a `LeasedPlcConnection`. 
+
+This object is a volatile container for a `PlcConnection`, allowing the container to invalidate the `PlcConnection`. 
+
+Whenever a `CachedPlcConnectionManager`'s `getConnection` method is used, it returns a new instance of such a container. Whenever the client calls `close` on this connection, it is however not really closed, but the reference to the real connection is cleared, hereby rendering the connection-lease useless and the connection is returned to the `ConnectionContainer`. Also, if the client holds on to the connection-lease for longer than the `maxLeaseTime` the container invalidates the connec [...]
+
+If a `CachedPlcConnectionManager` is used to get a connection that is currently being used, instead of returning a reference to it, a Future is generated and added to a queue. As soon as the connection is released, the container checks if there are any requests waiting.
+If there are it takes the oldest request and completes that future with a new lease.
\ No newline at end of file
diff --git a/plc4j/tools/pom.xml b/plc4j/tools/connection-cache-ng/pom.xml
similarity index 54%
copy from plc4j/tools/pom.xml
copy to plc4j/tools/connection-cache-ng/pom.xml
index c3fbe156a4..7b7a7ed43c 100644
--- a/plc4j/tools/pom.xml
+++ b/plc4j/tools/connection-cache-ng/pom.xml
@@ -23,24 +23,39 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>plc4j</artifactId>
+    <artifactId>plc4j-tools</artifactId>
     <version>0.11.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>plc4j-tools</artifactId>
-  <packaging>pom</packaging>
-
-  <name>PLC4J: Tools</name>
-  <description>A collection of tools that provide additional services to users.</description>
-
-  <modules>
-    <module>capture-replay</module>
-    <module>connection-cache</module>
-    <module>connection-pool</module>
-    <module>opm</module>
-    <module>plc4x-server</module>
-    <module>scraper</module>
-    <module>ui</module>
-  </modules>
-
-</project>
\ No newline at end of file
+  <artifactId>plc4j-connection-cache-ng</artifactId>
+
+  <name>PLC4J: Tools: Connection Cache (NG)</name>
+  <description>An implementation of a connection pool based on Apache Commons Pool.</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-api</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-driver-ads</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-driver-mock</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManager.java b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManager.java
new file mode 100644
index 0000000000..0ffd2d6999
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManager.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.utils.cache;
+
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.PlcConnectionManager;
+import org.apache.plc4x.java.api.authentication.PlcAuthentication;
+import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.time.Duration;
+import java.util.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+public class CachedPlcConnectionManager implements PlcConnectionManager {
+
+    private static final Logger LOG = LoggerFactory.getLogger(CachedPlcConnectionManager.class);
+
+    private final PlcConnectionManager connectionManager;
+    private final Duration maxLeaseTime;
+    private final Duration maxWaitTime;
+
+    private final Map<String, ConnectionContainer> connectionContainers;
+
+    public static Builder getBuilder(PlcConnectionManager connectionManager) {
+        return new Builder(connectionManager);
+    }
+    public CachedPlcConnectionManager(PlcConnectionManager connectionManager, Duration maxLeaseTime, Duration maxWaitTime) {
+        this.connectionManager = connectionManager;
+        this.maxLeaseTime = maxLeaseTime;
+        this.maxWaitTime = maxWaitTime;
+        this.connectionContainers = new HashMap<>();
+    }
+
+    public PlcConnection getConnection(String url) throws PlcConnectionException {
+        ConnectionContainer connectionContainer;
+        synchronized (connectionContainers) {
+            connectionContainer = connectionContainers.get(url);
+            if (connectionContainers.get(url) == null) {
+                LOG.debug("Creating new connection");
+
+                // Establish the real connection to the plc
+                PlcConnection connection = connectionManager.getConnection(url);
+
+                // Crate a connection container to manage handling this connection
+                connectionContainer = new ConnectionContainer(connection);
+                connectionContainers.put(url, connectionContainer);
+            } else {
+                LOG.debug("Reusing exising connection");
+            }
+        }
+
+        // Get a lease (a future for a connection)
+        Future<PlcConnection> leaseFuture = connectionContainer.lease();
+        try {
+            return leaseFuture.get(this.maxWaitTime.toMillis(), TimeUnit.MILLISECONDS);
+        } catch (ExecutionException | InterruptedException | TimeoutException e) {
+            throw new PlcConnectionException("Error acquiring lease for connection", e);
+        }
+    }
+
+    public PlcConnection getConnection(String url, PlcAuthentication authentication) throws PlcConnectionException {
+        throw new PlcConnectionException("the cached driver manager currently doesn't support authentication");
+    }
+
+    public static class Builder {
+
+        private final PlcConnectionManager connectionManager;
+        private Duration maxLeaseTime;
+        private Duration maxWaitTime;
+
+        public Builder(PlcConnectionManager connectionManager) {
+            this.connectionManager = connectionManager;
+            this.maxLeaseTime = Duration.ofSeconds(4);
+            this.maxWaitTime = Duration.ofSeconds(20);
+        }
+
+        CachedPlcConnectionManager build() {
+            return new CachedPlcConnectionManager(this.connectionManager, this.maxLeaseTime, this.maxWaitTime);
+        }
+
+        CachedPlcConnectionManager.Builder withMaxLeaseTime(Duration maxLeaseTime) {
+            this.maxLeaseTime = maxLeaseTime;
+            return this;
+        }
+
+        CachedPlcConnectionManager.Builder withMaxWaitTime(Duration maxWaitTime) {
+            this.maxWaitTime = maxWaitTime;
+            return this;
+        }
+    }
+
+}
diff --git a/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
new file mode 100644
index 0000000000..f5f85a37a3
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.utils.cache;
+
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Future;
+
+class ConnectionContainer {
+    private final PlcConnection connection;
+    private final Queue<CompletableFuture<PlcConnection>> queue;
+
+    private LeasedPlcConnection leasedConnection;
+
+    public ConnectionContainer(PlcConnection connection) {
+        this.connection = connection;
+        this.queue = new LinkedList<>();
+        this.leasedConnection = null;
+    }
+
+    public synchronized Future<PlcConnection> lease() {
+        CompletableFuture<PlcConnection> connectionFuture = new CompletableFuture<>();
+        // If the connection is currently idle, return the connection immediately.
+        if (leasedConnection == null) {
+            leasedConnection = new LeasedPlcConnection(this, connection);
+            connectionFuture.complete(leasedConnection);
+        }
+        // Otherwise queue the future up for completion as soon as the connection is returned.
+        else {
+            queue.add(connectionFuture);
+        }
+        return connectionFuture;
+    }
+
+    public synchronized void returnConnection(LeasedPlcConnection returnedLeasedConnection) {
+        if(returnedLeasedConnection != leasedConnection) {
+            throw new PlcRuntimeException("Error trying to return lease from invalid connection");
+        }
+
+        // If the queue is empty, simply return.
+        if(queue.isEmpty()) {
+            leasedConnection = null;
+            return;
+        }
+
+        // Create a new lease and complete the next future in the queue with this.
+        leasedConnection = new LeasedPlcConnection(this, connection);
+        CompletableFuture<PlcConnection> leaseFuture = queue.poll();
+        leaseFuture.complete(leasedConnection);
+    }
+
+}
diff --git a/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java
new file mode 100644
index 0000000000..e6b834d8ef
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.utils.cache;
+
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.metadata.PlcConnectionMetadata;
+
+import java.util.concurrent.CompletableFuture;
+
+public class LeasedPlcConnection implements PlcConnection {
+
+    private final ConnectionContainer connectionContainer;
+    private PlcConnection connection;
+
+    public LeasedPlcConnection(ConnectionContainer connectionContainer, PlcConnection connection) {
+        this.connectionContainer = connectionContainer;
+        this.connection = connection;
+    }
+
+    @Override
+    public synchronized void close() throws Exception {
+        // Make the connection unusable.
+        connection = null;
+
+        // Tell the connection container that the connection is free to be reused.
+        connectionContainer.returnConnection(this);
+    }
+
+    @Override
+    public void connect() throws PlcConnectionException {
+        throw new PlcConnectionException("Error connecting leased connection");
+    }
+
+    @Override
+    public boolean isConnected() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.isConnected();
+    }
+
+    @Override
+    public PlcConnectionMetadata getMetadata() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.getMetadata();
+    }
+
+    @Override
+    public CompletableFuture<Void> ping() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.ping();
+    }
+
+    @Override
+    public PlcReadRequest.Builder readRequestBuilder() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.readRequestBuilder();
+    }
+
+    @Override
+    public PlcWriteRequest.Builder writeRequestBuilder() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.writeRequestBuilder();
+    }
+
+    @Override
+    public PlcSubscriptionRequest.Builder subscriptionRequestBuilder() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.subscriptionRequestBuilder();
+    }
+
+    @Override
+    public PlcUnsubscriptionRequest.Builder unsubscriptionRequestBuilder() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.unsubscriptionRequestBuilder();
+    }
+
+    @Override
+    public PlcBrowseRequest.Builder browseRequestBuilder() {
+        if(connection == null) {
+            throw new PlcRuntimeException("Error using leased connection after returning it to the cache.");
+        }
+        return connection.browseRequestBuilder();
+    }
+
+}
diff --git a/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManagerTest.java b/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManagerTest.java
new file mode 100644
index 0000000000..c656382063
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/CachedPlcConnectionManagerTest.java
@@ -0,0 +1,23 @@
+package org.apache.plc4x.java.utils.cache;
+
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.PlcConnectionManager;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+public class CachedPlcConnectionManagerTest {
+
+    @Test
+    public void testSingleConnectionRequestTest() {
+        PlcConnectionManager mockConnectionManager = Mockito.mock(PlcConnectionManager.class);
+        CachedPlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder(mockConnectionManager).build();
+        try(PlcConnection connection = connectionManager.getConnection("test")) {
+            Assertions.assertInstanceOf(LeasedPlcConnection.class, connection);
+        } catch (Exception e) {
+            Assertions.fail("Not expecting an exception here", e);
+        }
+        // TODO: Check getConnection was called on the mockConnectionManager instance ...
+    }
+
+}
diff --git a/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/ManualTest.java b/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/ManualTest.java
new file mode 100644
index 0000000000..94a9456c3b
--- /dev/null
+++ b/plc4j/tools/connection-cache-ng/src/test/java/org/apache/plc4x/java/utils/cache/ManualTest.java
@@ -0,0 +1,21 @@
+package org.apache.plc4x.java.utils.cache;
+
+import org.apache.plc4x.java.PlcDriverManager;
+import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.messages.PlcReadResponse;
+
+public class ManualTest {
+
+    public static void main(String[] args) {
+        CachedPlcConnectionManager cachedPlcConnectionManager = CachedPlcConnectionManager.getBuilder(new PlcDriverManager()).build();
+        for (int i = 0; i < 100; i++){
+            try (PlcConnection connection = cachedPlcConnectionManager.getConnection("ads:tcp://192.168.23.20?sourceAmsNetId=192.168.23.200.1.1&sourceAmsPort=65534&targetAmsNetId=192.168.23.20.1.1&targetAmsPort=851")) {
+                PlcReadResponse plcReadResponse = connection.readRequestBuilder().addTagAddress("var", "MAIN.hurz_REAL").build().execute().get();
+                System.out.printf("Run %d: Value: %f%n", i, plcReadResponse.getFloat("var"));
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+}
diff --git a/plc4j/tools/pom.xml b/plc4j/tools/connection-cache-ng/src/test/resources/logback-test.xml
similarity index 50%
copy from plc4j/tools/pom.xml
copy to plc4j/tools/connection-cache-ng/src/test/resources/logback-test.xml
index c3fbe156a4..c404198426 100644
--- a/plc4j/tools/pom.xml
+++ b/plc4j/tools/connection-cache-ng/src/test/resources/logback-test.xml
@@ -17,30 +17,20 @@
   specific language governing permissions and limitations
   under the License.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<configuration xmlns="http://ch.qos.logback/xml/ns/logback"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
 
-  <modelVersion>4.0.0</modelVersion>
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M:%line - %msg%n</pattern>
+    </encoder>
+  </appender>
 
-  <parent>
-    <groupId>org.apache.plc4x</groupId>
-    <artifactId>plc4j</artifactId>
-    <version>0.11.0-SNAPSHOT</version>
-  </parent>
+  <logger name="org.apache.plc4x.java.utils.cache" level="debug"/>
 
-  <artifactId>plc4j-tools</artifactId>
-  <packaging>pom</packaging>
+  <root level="info">
+    <appender-ref ref="STDOUT" />
+  </root>
 
-  <name>PLC4J: Tools</name>
-  <description>A collection of tools that provide additional services to users.</description>
-
-  <modules>
-    <module>capture-replay</module>
-    <module>connection-cache</module>
-    <module>connection-pool</module>
-    <module>opm</module>
-    <module>plc4x-server</module>
-    <module>scraper</module>
-    <module>ui</module>
-  </modules>
-
-</project>
\ No newline at end of file
+</configuration>
\ No newline at end of file
diff --git a/plc4j/tools/pom.xml b/plc4j/tools/pom.xml
index c3fbe156a4..defe310be4 100644
--- a/plc4j/tools/pom.xml
+++ b/plc4j/tools/pom.xml
@@ -36,10 +36,12 @@
   <modules>
     <module>capture-replay</module>
     <module>connection-cache</module>
+    <module>connection-cache-ng</module>
     <module>connection-pool</module>
     <module>opm</module>
     <module>plc4x-server</module>
     <module>scraper</module>
+    <module>scraper-ng</module>
     <module>ui</module>
   </modules>
 
diff --git a/plc4j/tools/scraper-ng/pom.xml b/plc4j/tools/scraper-ng/pom.xml
new file mode 100644
index 0000000000..ef871edaa4
--- /dev/null
+++ b/plc4j/tools/scraper-ng/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-tools</artifactId>
+    <version>0.11.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>plc4j-scraper-ng</artifactId>
+
+  <name>PLC4J: Tools: Scraper (NG)</name>
+  <description>Utility to efficiently collect a large number of items on multiple devices by different triggers.</description>
+
+  <dependencies>
+    <!--Jackson-->
+    <!--dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency-->
+
+    <!-- Apache Commons -->
+    <!--dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-math3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-pool2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency-->
+
+    <!-- PLC4X dependencies -->
+    <!--dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-api</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-connection-pool</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-connection-cache</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+    </dependency-->
+
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-spi</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- Test dependencies-->
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-driver-mock</artifactId>
+      <version>0.11.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+</project>
\ No newline at end of file


[plc4x] 02/03: feat(drivers): Updated vendor-ids and service ids

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/cdutz/connection-cache-and-scraper-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 8d71fcbbb9cc05bff1b15a7abf36f3003d1a7657
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sat Jan 14 16:18:21 2023 +0100

    feat(drivers): Updated vendor-ids and service ids
---
 .../bacnetip/readwrite/model/BACnetVendorId.go     |  48 ++
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  56 +-
 .../java/bacnetip/readwrite/BACnetVendorId.java    |   3 +
 .../java/knxnetip/readwrite/KnxManufacturer.java   |   6 +-
 .../java/opcua/readwrite/OpcuaNodeIdServices.java  | 673 ---------------------
 5 files changed, 99 insertions(+), 687 deletions(-)

diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
index f2b5aa4b51..a8cb34b52d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
@@ -1425,6 +1425,9 @@ const (
 	BACnetVendorId_EM_FIRST_CO_LTD                                                              BACnetVendorId = 1393
 	BACnetVendorId_IION_SYSTEMS_APS                                                             BACnetVendorId = 1394
 	BACnetVendorId_SAF_TEHNIKAJSC                                                               BACnetVendorId = 1396
+	BACnetVendorId_KOMFORTIQ_INC                                                                BACnetVendorId = 1397
+	BACnetVendorId_COOL_TERA_LIMITED                                                            BACnetVendorId = 1398
+	BACnetVendorId_HADRON_SOLUTIONS_SRLS                                                        BACnetVendorId = 1399
 	BACnetVendorId_UNKNOWN_VENDOR                                                               BACnetVendorId = 0xFFFF
 )
 
@@ -2822,6 +2825,9 @@ func init() {
 		BACnetVendorId_EM_FIRST_CO_LTD,
 		BACnetVendorId_IION_SYSTEMS_APS,
 		BACnetVendorId_SAF_TEHNIKAJSC,
+		BACnetVendorId_KOMFORTIQ_INC,
+		BACnetVendorId_COOL_TERA_LIMITED,
+		BACnetVendorId_HADRON_SOLUTIONS_SRLS,
 		BACnetVendorId_UNKNOWN_VENDOR,
 	}
 }
@@ -4596,6 +4602,18 @@ func (e BACnetVendorId) VendorId() uint16 {
 		{ /* '1396' */
 			return 1396
 		}
+	case 1397:
+		{ /* '1397' */
+			return 1397
+		}
+	case 1398:
+		{ /* '1398' */
+			return 1398
+		}
+	case 1399:
+		{ /* '1399' */
+			return 1399
+		}
 	case 14:
 		{ /* '14' */
 			return 14
@@ -10174,6 +10192,18 @@ func (e BACnetVendorId) VendorName() string {
 		{ /* '1396' */
 			return "SAF Tehnika JSC"
 		}
+	case 1397:
+		{ /* '1397' */
+			return "Komfort IQ, Inc."
+		}
+	case 1398:
+		{ /* '1398' */
+			return "CoolTera Limited"
+		}
+	case 1399:
+		{ /* '1399' */
+			return "Hadron Solutions S.r.l.s"
+		}
 	case 14:
 		{ /* '14' */
 			return "Cimetrics Technology"
@@ -14867,6 +14897,12 @@ func BACnetVendorIdByValue(value uint16) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_IION_SYSTEMS_APS, true
 	case 1396:
 		return BACnetVendorId_SAF_TEHNIKAJSC, true
+	case 1397:
+		return BACnetVendorId_KOMFORTIQ_INC, true
+	case 1398:
+		return BACnetVendorId_COOL_TERA_LIMITED, true
+	case 1399:
+		return BACnetVendorId_HADRON_SOLUTIONS_SRLS, true
 	case 14:
 		return BACnetVendorId_CIMETRICS_TECHNOLOGY, true
 	case 140:
@@ -17653,6 +17689,12 @@ func BACnetVendorIdByName(value string) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_IION_SYSTEMS_APS, true
 	case "SAF_TEHNIKAJSC":
 		return BACnetVendorId_SAF_TEHNIKAJSC, true
+	case "KOMFORTIQ_INC":
+		return BACnetVendorId_KOMFORTIQ_INC, true
+	case "COOL_TERA_LIMITED":
+		return BACnetVendorId_COOL_TERA_LIMITED, true
+	case "HADRON_SOLUTIONS_SRLS":
+		return BACnetVendorId_HADRON_SOLUTIONS_SRLS, true
 	case "CIMETRICS_TECHNOLOGY":
 		return BACnetVendorId_CIMETRICS_TECHNOLOGY, true
 	case "VICONICS_ELECTRONICS_INC":
@@ -20496,6 +20538,12 @@ func (e BACnetVendorId) PLC4XEnumName() string {
 		return "IION_SYSTEMS_APS"
 	case BACnetVendorId_SAF_TEHNIKAJSC:
 		return "SAF_TEHNIKAJSC"
+	case BACnetVendorId_KOMFORTIQ_INC:
+		return "KOMFORTIQ_INC"
+	case BACnetVendorId_COOL_TERA_LIMITED:
+		return "COOL_TERA_LIMITED"
+	case BACnetVendorId_HADRON_SOLUTIONS_SRLS:
+		return "HADRON_SOLUTIONS_SRLS"
 	case BACnetVendorId_CIMETRICS_TECHNOLOGY:
 		return "CIMETRICS_TECHNOLOGY"
 	case BACnetVendorId_VICONICS_ELECTRONICS_INC:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
index ea5c66832c..48361812c3 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
@@ -644,8 +644,10 @@ const (
 	KnxManufacturer_M_GAIMEX                                             KnxManufacturer = 605
 	KnxManufacturer_M_B3_INTERNATIONAL_S_R_L                             KnxManufacturer = 606
 	KnxManufacturer_M_MM_ELECTRO                                         KnxManufacturer = 607
-	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 608
-	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 609
+	KnxManufacturer_M_CASCODA                                            KnxManufacturer = 608
+	KnxManufacturer_M_XIAMEN_INTRETECH_INC_                              KnxManufacturer = 609
+	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 610
+	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 611
 )
 
 var KnxManufacturerValues []KnxManufacturer
@@ -1261,6 +1263,8 @@ func init() {
 		KnxManufacturer_M_GAIMEX,
 		KnxManufacturer_M_B3_INTERNATIONAL_S_R_L,
 		KnxManufacturer_M_MM_ELECTRO,
+		KnxManufacturer_M_CASCODA,
+		KnxManufacturer_M_XIAMEN_INTRETECH_INC_,
 		KnxManufacturer_M_ABB___RESERVED,
 		KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
 	}
@@ -3534,16 +3538,24 @@ func (e KnxManufacturer) Number() uint16 {
 		}
 	case 608:
 		{ /* '608' */
-			return 43954
+			return 667
 		}
 	case 609:
 		{ /* '609' */
-			return 43959
+			return 668
 		}
 	case 61:
 		{ /* '61' */
 			return 100
 		}
+	case 610:
+		{ /* '610' */
+			return 43954
+		}
+	case 611:
+		{ /* '611' */
+			return 43959
+		}
 	case 62:
 		{ /* '62' */
 			return 101
@@ -5992,16 +6004,24 @@ func (e KnxManufacturer) Name() string {
 		}
 	case 608:
 		{ /* '608' */
-			return "ABB - reserved"
+			return "CASCODA"
 		}
 	case 609:
 		{ /* '609' */
-			return "Busch-Jaeger Elektro - reserved"
+			return "Xiamen Intretech Inc."
 		}
 	case 61:
 		{ /* '61' */
 			return "Schneider Electric Industries SAS"
 		}
+	case 610:
+		{ /* '610' */
+			return "ABB - reserved"
+		}
+	case 611:
+		{ /* '611' */
+			return "Busch-Jaeger Elektro - reserved"
+		}
 	case 62:
 		{ /* '62' */
 			return "WHD Wilhelm Huber + Söhne"
@@ -7316,11 +7336,15 @@ func KnxManufacturerByValue(value uint16) (enum KnxManufacturer, ok bool) {
 	case 607:
 		return KnxManufacturer_M_MM_ELECTRO, true
 	case 608:
-		return KnxManufacturer_M_ABB___RESERVED, true
+		return KnxManufacturer_M_CASCODA, true
 	case 609:
-		return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
+		return KnxManufacturer_M_XIAMEN_INTRETECH_INC_, true
 	case 61:
 		return KnxManufacturer_M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS, true
+	case 610:
+		return KnxManufacturer_M_ABB___RESERVED, true
+	case 611:
+		return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
 	case 62:
 		return KnxManufacturer_M_WHD_WILHELM_HUBER_Plus_SOEHNE, true
 	case 63:
@@ -8541,12 +8565,16 @@ func KnxManufacturerByName(value string) (enum KnxManufacturer, ok bool) {
 		return KnxManufacturer_M_B3_INTERNATIONAL_S_R_L, true
 	case "M_MM_ELECTRO":
 		return KnxManufacturer_M_MM_ELECTRO, true
+	case "M_CASCODA":
+		return KnxManufacturer_M_CASCODA, true
+	case "M_XIAMEN_INTRETECH_INC_":
+		return KnxManufacturer_M_XIAMEN_INTRETECH_INC_, true
+	case "M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS":
+		return KnxManufacturer_M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS, true
 	case "M_ABB___RESERVED":
 		return KnxManufacturer_M_ABB___RESERVED, true
 	case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
 		return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
-	case "M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS":
-		return KnxManufacturer_M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS, true
 	case "M_WHD_WILHELM_HUBER_Plus_SOEHNE":
 		return KnxManufacturer_M_WHD_WILHELM_HUBER_Plus_SOEHNE, true
 	case "M_BISCHOFF_ELEKTRONIK":
@@ -9824,12 +9852,16 @@ func (e KnxManufacturer) PLC4XEnumName() string {
 		return "M_B3_INTERNATIONAL_S_R_L"
 	case KnxManufacturer_M_MM_ELECTRO:
 		return "M_MM_ELECTRO"
+	case KnxManufacturer_M_CASCODA:
+		return "M_CASCODA"
+	case KnxManufacturer_M_XIAMEN_INTRETECH_INC_:
+		return "M_XIAMEN_INTRETECH_INC_"
+	case KnxManufacturer_M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS:
+		return "M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS"
 	case KnxManufacturer_M_ABB___RESERVED:
 		return "M_ABB___RESERVED"
 	case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
 		return "M_BUSCH_JAEGER_ELEKTRO___RESERVED"
-	case KnxManufacturer_M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS:
-		return "M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS"
 	case KnxManufacturer_M_WHD_WILHELM_HUBER_Plus_SOEHNE:
 		return "M_WHD_WILHELM_HUBER_Plus_SOEHNE"
 	case KnxManufacturer_M_BISCHOFF_ELEKTRONIK:
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
index 855ecba5d3..c8cde0fcb0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
@@ -1604,6 +1604,9 @@ public enum BACnetVendorId {
   EM_FIRST_CO_LTD((int) 1393, (int) 1393, (String) "EmFirst Co. Ltd."),
   IION_SYSTEMS_APS((int) 1394, (int) 1394, (String) "Iion Systems ApS"),
   SAF_TEHNIKAJSC((int) 1396, (int) 1396, (String) "SAF Tehnika JSC"),
+  KOMFORTIQ_INC((int) 1397, (int) 1397, (String) "Komfort IQ, Inc."),
+  COOL_TERA_LIMITED((int) 1398, (int) 1398, (String) "CoolTera Limited"),
+  HADRON_SOLUTIONS_SRLS((int) 1399, (int) 1399, (String) "Hadron Solutions S.r.l.s"),
   UNKNOWN_VENDOR((int) 0xFFFF, (int) 0xFFFF, (String) "Unknown");
   private static final Map<Integer, BACnetVendorId> map;
 
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
index 6d96ae3f37..23dee449f8 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
@@ -698,9 +698,11 @@ public enum KnxManufacturer {
   M_GAIMEX((int) 605, (int) 664, (String) "Gaimex"),
   M_B3_INTERNATIONAL_S_R_L((int) 606, (int) 665, (String) "B3 International S.R.L"),
   M_MM_ELECTRO((int) 607, (int) 666, (String) "MM Electro"),
-  M_ABB___RESERVED((int) 608, (int) 43954, (String) "ABB - reserved"),
+  M_CASCODA((int) 608, (int) 667, (String) "CASCODA"),
+  M_XIAMEN_INTRETECH_INC_((int) 609, (int) 668, (String) "Xiamen Intretech Inc."),
+  M_ABB___RESERVED((int) 610, (int) 43954, (String) "ABB - reserved"),
   M_BUSCH_JAEGER_ELEKTRO___RESERVED(
-      (int) 609, (int) 43959, (String) "Busch-Jaeger Elektro - reserved");
+      (int) 611, (int) 43959, (String) "Busch-Jaeger Elektro - reserved");
   private static final Map<Integer, KnxManufacturer> map;
 
   static {
diff --git a/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaNodeIdServices.java b/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaNodeIdServices.java
index 51b95b69a7..197af70fe5 100644
--- a/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaNodeIdServices.java
+++ b/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaNodeIdServices.java
@@ -28,14 +28,6 @@ public enum OpcuaNodeIdServices {
   AccessLevelType((int) 15031L),
   AccessRestrictionType((int) 95L),
   AcknowledgeableConditionType((int) 2881L),
-  ActivateSessionRequest((int) 465L),
-  ActivateSessionRequest_Encoding_DefaultBinary((int) 467L),
-  ActivateSessionRequest_Encoding_DefaultJson((int) 15145L),
-  ActivateSessionRequest_Encoding_DefaultXml((int) 466L),
-  ActivateSessionResponse((int) 468L),
-  ActivateSessionResponse_Encoding_DefaultBinary((int) 470L),
-  ActivateSessionResponse_Encoding_DefaultJson((int) 15146L),
-  ActivateSessionResponse_Encoding_DefaultXml((int) 469L),
   AdditionalParametersType((int) 16313L),
   AdditionalParametersType_Encoding_DefaultBinary((int) 17537L),
   AdditionalParametersType_Encoding_DefaultJson((int) 17547L),
@@ -44,44 +36,16 @@ public enum OpcuaNodeIdServices {
   AddNodesItem_Encoding_DefaultBinary((int) 378L),
   AddNodesItem_Encoding_DefaultJson((int) 15165L),
   AddNodesItem_Encoding_DefaultXml((int) 377L),
-  AddNodesRequest((int) 486L),
-  AddNodesRequest_Encoding_DefaultBinary((int) 488L),
-  AddNodesRequest_Encoding_DefaultJson((int) 15167L),
-  AddNodesRequest_Encoding_DefaultXml((int) 487L),
-  AddNodesResponse((int) 489L),
-  AddNodesResponse_Encoding_DefaultBinary((int) 491L),
-  AddNodesResponse_Encoding_DefaultJson((int) 15168L),
-  AddNodesResponse_Encoding_DefaultXml((int) 490L),
-  AddNodesResult((int) 483L),
-  AddNodesResult_Encoding_DefaultBinary((int) 485L),
-  AddNodesResult_Encoding_DefaultJson((int) 15166L),
-  AddNodesResult_Encoding_DefaultXml((int) 484L),
   AddReferencesItem((int) 379L),
   AddReferencesItem_Encoding_DefaultBinary((int) 381L),
   AddReferencesItem_Encoding_DefaultJson((int) 15169L),
   AddReferencesItem_Encoding_DefaultXml((int) 380L),
-  AddReferencesRequest((int) 492L),
-  AddReferencesRequest_Encoding_DefaultBinary((int) 494L),
-  AddReferencesRequest_Encoding_DefaultJson((int) 15170L),
-  AddReferencesRequest_Encoding_DefaultXml((int) 493L),
-  AddReferencesResponse((int) 495L),
-  AddReferencesResponse_Encoding_DefaultBinary((int) 497L),
-  AddReferencesResponse_Encoding_DefaultJson((int) 15171L),
-  AddReferencesResponse_Encoding_DefaultXml((int) 496L),
   AddressSpaceFileType((int) 11595L),
   AggregateConfiguration((int) 948L),
   AggregateConfiguration_Encoding_DefaultBinary((int) 950L),
   AggregateConfiguration_Encoding_DefaultJson((int) 15304L),
   AggregateConfiguration_Encoding_DefaultXml((int) 949L),
   AggregateConfigurationType((int) 11187L),
-  AggregateFilter((int) 728L),
-  AggregateFilter_Encoding_DefaultBinary((int) 730L),
-  AggregateFilter_Encoding_DefaultJson((int) 15312L),
-  AggregateFilter_Encoding_DefaultXml((int) 729L),
-  AggregateFilterResult((int) 737L),
-  AggregateFilterResult_Encoding_DefaultBinary((int) 739L),
-  AggregateFilterResult_Encoding_DefaultJson((int) 15315L),
-  AggregateFilterResult_Encoding_DefaultXml((int) 738L),
   AggregateFunction_AnnotationCount((int) 2351L),
   AggregateFunction_Average((int) 2342L),
   AggregateFunction_Count((int) 2352L),
@@ -252,44 +216,6 @@ public enum OpcuaNodeIdServices {
   BrokerWriterGroupTransportDataType_Encoding_DefaultJson((int) 16524L),
   BrokerWriterGroupTransportDataType_Encoding_DefaultXml((int) 16021L),
   BrokerWriterGroupTransportType((int) 21136L),
-  BrowseDescription((int) 514L),
-  BrowseDescription_Encoding_DefaultBinary((int) 516L),
-  BrowseDescription_Encoding_DefaultJson((int) 15180L),
-  BrowseDescription_Encoding_DefaultXml((int) 515L),
-  BrowseDirection((int) 510L),
-  BrowseNextRequest((int) 531L),
-  BrowseNextRequest_Encoding_DefaultBinary((int) 533L),
-  BrowseNextRequest_Encoding_DefaultJson((int) 15186L),
-  BrowseNextRequest_Encoding_DefaultXml((int) 532L),
-  BrowseNextResponse((int) 534L),
-  BrowseNextResponse_Encoding_DefaultBinary((int) 536L),
-  BrowseNextResponse_Encoding_DefaultJson((int) 15187L),
-  BrowseNextResponse_Encoding_DefaultXml((int) 535L),
-  BrowsePath((int) 543L),
-  BrowsePath_Encoding_DefaultBinary((int) 545L),
-  BrowsePath_Encoding_DefaultJson((int) 15190L),
-  BrowsePath_Encoding_DefaultXml((int) 544L),
-  BrowsePathResult((int) 549L),
-  BrowsePathResult_Encoding_DefaultBinary((int) 551L),
-  BrowsePathResult_Encoding_DefaultJson((int) 15192L),
-  BrowsePathResult_Encoding_DefaultXml((int) 550L),
-  BrowsePathTarget((int) 546L),
-  BrowsePathTarget_Encoding_DefaultBinary((int) 548L),
-  BrowsePathTarget_Encoding_DefaultJson((int) 15191L),
-  BrowsePathTarget_Encoding_DefaultXml((int) 547L),
-  BrowseRequest((int) 525L),
-  BrowseRequest_Encoding_DefaultBinary((int) 527L),
-  BrowseRequest_Encoding_DefaultJson((int) 15184L),
-  BrowseRequest_Encoding_DefaultXml((int) 526L),
-  BrowseResponse((int) 528L),
-  BrowseResponse_Encoding_DefaultBinary((int) 530L),
-  BrowseResponse_Encoding_DefaultJson((int) 15185L),
-  BrowseResponse_Encoding_DefaultXml((int) 529L),
-  BrowseResult((int) 522L),
-  BrowseResult_Encoding_DefaultBinary((int) 524L),
-  BrowseResult_Encoding_DefaultJson((int) 15183L),
-  BrowseResult_Encoding_DefaultXml((int) 523L),
-  BrowseResultMask((int) 517L),
   BuildInfo((int) 338L),
   BuildInfo_Encoding_DefaultBinary((int) 340L),
   BuildInfo_Encoding_DefaultJson((int) 15361L),
@@ -297,30 +223,6 @@ public enum OpcuaNodeIdServices {
   BuildInfoType((int) 3051L),
   Byte((int) 3L),
   ByteString((int) 15L),
-  CallMethodRequest((int) 704L),
-  CallMethodRequest_Encoding_DefaultBinary((int) 706L),
-  CallMethodRequest_Encoding_DefaultJson((int) 15289L),
-  CallMethodRequest_Encoding_DefaultXml((int) 705L),
-  CallMethodResult((int) 707L),
-  CallMethodResult_Encoding_DefaultBinary((int) 709L),
-  CallMethodResult_Encoding_DefaultJson((int) 15290L),
-  CallMethodResult_Encoding_DefaultXml((int) 708L),
-  CallRequest((int) 710L),
-  CallRequest_Encoding_DefaultBinary((int) 712L),
-  CallRequest_Encoding_DefaultJson((int) 15291L),
-  CallRequest_Encoding_DefaultXml((int) 711L),
-  CallResponse((int) 713L),
-  CallResponse_Encoding_DefaultBinary((int) 715L),
-  CallResponse_Encoding_DefaultJson((int) 15292L),
-  CallResponse_Encoding_DefaultXml((int) 714L),
-  CancelRequest((int) 477L),
-  CancelRequest_Encoding_DefaultBinary((int) 479L),
-  CancelRequest_Encoding_DefaultJson((int) 15149L),
-  CancelRequest_Encoding_DefaultXml((int) 478L),
-  CancelResponse((int) 480L),
-  CancelResponse_Encoding_DefaultBinary((int) 482L),
-  CancelResponse_Encoding_DefaultJson((int) 15150L),
-  CancelResponse_Encoding_DefaultXml((int) 481L),
   CartesianCoordinates((int) 18809L),
   CartesianCoordinates_Encoding_DefaultBinary((int) 18818L),
   CartesianCoordinates_Encoding_DefaultJson((int) 19067L),
@@ -331,27 +233,7 @@ public enum OpcuaNodeIdServices {
   CertificateGroupType((int) 12555L),
   CertificateType((int) 12556L),
   CertificateUpdatedAuditEventType((int) 12620L),
-  ChannelSecurityToken((int) 441L),
-  ChannelSecurityToken_Encoding_DefaultBinary((int) 443L),
-  ChannelSecurityToken_Encoding_DefaultJson((int) 15131L),
-  ChannelSecurityToken_Encoding_DefaultXml((int) 442L),
   ChoiceStateType((int) 15109L),
-  CloseSecureChannelRequest((int) 450L),
-  CloseSecureChannelRequest_Encoding_DefaultBinary((int) 452L),
-  CloseSecureChannelRequest_Encoding_DefaultJson((int) 15134L),
-  CloseSecureChannelRequest_Encoding_DefaultXml((int) 451L),
-  CloseSecureChannelResponse((int) 453L),
-  CloseSecureChannelResponse_Encoding_DefaultBinary((int) 455L),
-  CloseSecureChannelResponse_Encoding_DefaultJson((int) 15135L),
-  CloseSecureChannelResponse_Encoding_DefaultXml((int) 454L),
-  CloseSessionRequest((int) 471L),
-  CloseSessionRequest_Encoding_DefaultBinary((int) 473L),
-  CloseSessionRequest_Encoding_DefaultJson((int) 15147L),
-  CloseSessionRequest_Encoding_DefaultXml((int) 472L),
-  CloseSessionResponse((int) 474L),
-  CloseSessionResponse_Encoding_DefaultBinary((int) 476L),
-  CloseSessionResponse_Encoding_DefaultJson((int) 15148L),
-  CloseSessionResponse_Encoding_DefaultXml((int) 475L),
   Communication((int) 24227L),
   ComplexNumberType((int) 12171L),
   ComplexNumberType_Encoding_DefaultBinary((int) 12181L),
@@ -376,55 +258,14 @@ public enum OpcuaNodeIdServices {
   ContentFilterElement_Encoding_DefaultBinary((int) 585L),
   ContentFilterElement_Encoding_DefaultJson((int) 15204L),
   ContentFilterElement_Encoding_DefaultXml((int) 584L),
-  ContentFilterElementResult((int) 604L),
-  ContentFilterElementResult_Encoding_DefaultBinary((int) 606L),
-  ContentFilterElementResult_Encoding_DefaultJson((int) 15211L),
-  ContentFilterElementResult_Encoding_DefaultXml((int) 605L),
-  ContentFilterResult((int) 607L),
-  ContentFilterResult_Encoding_DefaultBinary((int) 609L),
-  ContentFilterResult_Encoding_DefaultJson((int) 15228L),
-  ContentFilterResult_Encoding_DefaultXml((int) 608L),
   ContinuationPoint((int) 521L),
   Counter((int) 289L),
-  CreateMonitoredItemsRequest((int) 749L),
-  CreateMonitoredItemsRequest_Encoding_DefaultBinary((int) 751L),
-  CreateMonitoredItemsRequest_Encoding_DefaultJson((int) 15323L),
-  CreateMonitoredItemsRequest_Encoding_DefaultXml((int) 750L),
-  CreateMonitoredItemsResponse((int) 752L),
-  CreateMonitoredItemsResponse_Encoding_DefaultBinary((int) 754L),
-  CreateMonitoredItemsResponse_Encoding_DefaultJson((int) 15324L),
-  CreateMonitoredItemsResponse_Encoding_DefaultXml((int) 753L),
-  CreateSessionRequest((int) 459L),
-  CreateSessionRequest_Encoding_DefaultBinary((int) 461L),
-  CreateSessionRequest_Encoding_DefaultJson((int) 15138L),
-  CreateSessionRequest_Encoding_DefaultXml((int) 460L),
-  CreateSessionResponse((int) 462L),
-  CreateSessionResponse_Encoding_DefaultBinary((int) 464L),
-  CreateSessionResponse_Encoding_DefaultJson((int) 15139L),
-  CreateSessionResponse_Encoding_DefaultXml((int) 463L),
-  CreateSubscriptionRequest((int) 785L),
-  CreateSubscriptionRequest_Encoding_DefaultBinary((int) 787L),
-  CreateSubscriptionRequest_Encoding_DefaultJson((int) 15337L),
-  CreateSubscriptionRequest_Encoding_DefaultXml((int) 786L),
-  CreateSubscriptionResponse((int) 788L),
-  CreateSubscriptionResponse_Encoding_DefaultBinary((int) 790L),
-  CreateSubscriptionResponse_Encoding_DefaultJson((int) 15338L),
-  CreateSubscriptionResponse_Encoding_DefaultXml((int) 789L),
   CubeItemType((int) 12057L),
   CurrencyUnit((int) 23501L),
   CurrencyUnitType((int) 23498L),
   CurrencyUnitType_Encoding_DefaultBinary((int) 23507L),
   CurrencyUnitType_Encoding_DefaultJson((int) 23528L),
   CurrencyUnitType_Encoding_DefaultXml((int) 23520L),
-  DataChangeFilter((int) 722L),
-  DataChangeFilter_Encoding_DefaultBinary((int) 724L),
-  DataChangeFilter_Encoding_DefaultJson((int) 15294L),
-  DataChangeFilter_Encoding_DefaultXml((int) 723L),
-  DataChangeNotification((int) 809L),
-  DataChangeNotification_Encoding_DefaultBinary((int) 811L),
-  DataChangeNotification_Encoding_DefaultJson((int) 15345L),
-  DataChangeNotification_Encoding_DefaultXml((int) 810L),
-  DataChangeTrigger((int) 717L),
   DatagramConnectionTransportDataType((int) 17467L),
   DatagramConnectionTransportDataType_Encoding_DefaultBinary((int) 17468L),
   DatagramConnectionTransportDataType_Encoding_DefaultJson((int) 17476L),
@@ -475,10 +316,6 @@ public enum OpcuaNodeIdServices {
   DataSetWriterTransportDataType_Encoding_DefaultXml((int) 15956L),
   DataSetWriterTransportType((int) 15305L),
   DataSetWriterType((int) 15298L),
-  DataTypeAttributes((int) 370L),
-  DataTypeAttributes_Encoding_DefaultBinary((int) 372L),
-  DataTypeAttributes_Encoding_DefaultJson((int) 15161L),
-  DataTypeAttributes_Encoding_DefaultXml((int) 371L),
   DataTypeDefinition((int) 97L),
   DataTypeDefinition_Encoding_DefaultBinary((int) 121L),
   DataTypeDefinition_Encoding_DefaultJson((int) 15063L),
@@ -490,10 +327,6 @@ public enum OpcuaNodeIdServices {
   DataTypeDescriptionType((int) 69L),
   DataTypeDictionaryType((int) 72L),
   DataTypeEncodingType((int) 76L),
-  DataTypeNode((int) 282L),
-  DataTypeNode_Encoding_DefaultBinary((int) 284L),
-  DataTypeNode_Encoding_DefaultJson((int) 15079L),
-  DataTypeNode_Encoding_DefaultXml((int) 283L),
   DataTypeSchemaHeader((int) 15534L),
   DataTypeSchemaHeader_Encoding_DefaultBinary((int) 15676L),
   DataTypeSchemaHeader_Encoding_DefaultJson((int) 16151L),
@@ -504,68 +337,19 @@ public enum OpcuaNodeIdServices {
   Date((int) 293L),
   DateString((int) 12881L),
   DateTime((int) 13L),
-  DeadbandType((int) 718L),
   Decimal((int) 50L),
-  DecimalDataType((int) 17861L),
-  DecimalDataType_Encoding_DefaultBinary((int) 17863L),
-  DecimalDataType_Encoding_DefaultJson((int) 15045L),
-  DecimalDataType_Encoding_DefaultXml((int) 17862L),
   DecimalString((int) 12878L),
   DefaultBinary((int) 3062L),
   DefaultInstanceBrowseName((int) 17605L),
   DefaultXml((int) 3063L),
-  DeleteAtTimeDetails((int) 689L),
-  DeleteAtTimeDetails_Encoding_DefaultBinary((int) 691L),
-  DeleteAtTimeDetails_Encoding_DefaultJson((int) 15284L),
-  DeleteAtTimeDetails_Encoding_DefaultXml((int) 690L),
-  DeleteEventDetails((int) 692L),
-  DeleteEventDetails_Encoding_DefaultBinary((int) 694L),
-  DeleteEventDetails_Encoding_DefaultJson((int) 15285L),
-  DeleteEventDetails_Encoding_DefaultXml((int) 693L),
-  DeleteMonitoredItemsRequest((int) 779L),
-  DeleteMonitoredItemsRequest_Encoding_DefaultBinary((int) 781L),
-  DeleteMonitoredItemsRequest_Encoding_DefaultJson((int) 15335L),
-  DeleteMonitoredItemsRequest_Encoding_DefaultXml((int) 780L),
-  DeleteMonitoredItemsResponse((int) 782L),
-  DeleteMonitoredItemsResponse_Encoding_DefaultBinary((int) 784L),
-  DeleteMonitoredItemsResponse_Encoding_DefaultJson((int) 15336L),
-  DeleteMonitoredItemsResponse_Encoding_DefaultXml((int) 783L),
   DeleteNodesItem((int) 382L),
   DeleteNodesItem_Encoding_DefaultBinary((int) 384L),
   DeleteNodesItem_Encoding_DefaultJson((int) 15172L),
   DeleteNodesItem_Encoding_DefaultXml((int) 383L),
-  DeleteNodesRequest((int) 498L),
-  DeleteNodesRequest_Encoding_DefaultBinary((int) 500L),
-  DeleteNodesRequest_Encoding_DefaultJson((int) 15173L),
-  DeleteNodesRequest_Encoding_DefaultXml((int) 499L),
-  DeleteNodesResponse((int) 501L),
-  DeleteNodesResponse_Encoding_DefaultBinary((int) 503L),
-  DeleteNodesResponse_Encoding_DefaultJson((int) 15174L),
-  DeleteNodesResponse_Encoding_DefaultXml((int) 502L),
-  DeleteRawModifiedDetails((int) 686L),
-  DeleteRawModifiedDetails_Encoding_DefaultBinary((int) 688L),
-  DeleteRawModifiedDetails_Encoding_DefaultJson((int) 15283L),
-  DeleteRawModifiedDetails_Encoding_DefaultXml((int) 687L),
   DeleteReferencesItem((int) 385L),
   DeleteReferencesItem_Encoding_DefaultBinary((int) 387L),
   DeleteReferencesItem_Encoding_DefaultJson((int) 15175L),
   DeleteReferencesItem_Encoding_DefaultXml((int) 386L),
-  DeleteReferencesRequest((int) 504L),
-  DeleteReferencesRequest_Encoding_DefaultBinary((int) 506L),
-  DeleteReferencesRequest_Encoding_DefaultJson((int) 15176L),
-  DeleteReferencesRequest_Encoding_DefaultXml((int) 505L),
-  DeleteReferencesResponse((int) 507L),
-  DeleteReferencesResponse_Encoding_DefaultBinary((int) 509L),
-  DeleteReferencesResponse_Encoding_DefaultJson((int) 15177L),
-  DeleteReferencesResponse_Encoding_DefaultXml((int) 508L),
-  DeleteSubscriptionsRequest((int) 845L),
-  DeleteSubscriptionsRequest_Encoding_DefaultBinary((int) 847L),
-  DeleteSubscriptionsRequest_Encoding_DefaultJson((int) 15359L),
-  DeleteSubscriptionsRequest_Encoding_DefaultXml((int) 846L),
-  DeleteSubscriptionsResponse((int) 848L),
-  DeleteSubscriptionsResponse_Encoding_DefaultBinary((int) 850L),
-  DeleteSubscriptionsResponse_Encoding_DefaultJson((int) 15360L),
-  DeleteSubscriptionsResponse_Encoding_DefaultXml((int) 849L),
   DeviceFailureEventType((int) 2131L),
   DiagnosticInfo((int) 25L),
   DiagnosticsLevel((int) 19723L),
@@ -593,7 +377,6 @@ public enum OpcuaNodeIdServices {
   EccBrainpoolP384r1ApplicationCertificateType((int) 23541L),
   EccCurve25519ApplicationCertificateType((int) 23542L),
   EccCurve448ApplicationCertificateType((int) 23543L),
-  EccEncryptedSecret((int) 17546L),
   EccNistP256ApplicationCertificateType((int) 23538L),
   EccNistP384ApplicationCertificateType((int) 23539L),
   ElementOperand((int) 592L),
@@ -645,22 +428,10 @@ public enum OpcuaNodeIdServices {
   EUInformation_Encoding_DefaultBinary((int) 889L),
   EUInformation_Encoding_DefaultJson((int) 15376L),
   EUInformation_Encoding_DefaultXml((int) 888L),
-  EventFieldList((int) 917L),
-  EventFieldList_Encoding_DefaultBinary((int) 919L),
-  EventFieldList_Encoding_DefaultJson((int) 15348L),
-  EventFieldList_Encoding_DefaultXml((int) 918L),
   EventFilter((int) 725L),
   EventFilter_Encoding_DefaultBinary((int) 727L),
   EventFilter_Encoding_DefaultJson((int) 15295L),
   EventFilter_Encoding_DefaultXml((int) 726L),
-  EventFilterResult((int) 734L),
-  EventFilterResult_Encoding_DefaultBinary((int) 736L),
-  EventFilterResult_Encoding_DefaultJson((int) 15314L),
-  EventFilterResult_Encoding_DefaultXml((int) 735L),
-  EventNotificationList((int) 914L),
-  EventNotificationList_Encoding_DefaultBinary((int) 916L),
-  EventNotificationList_Encoding_DefaultJson((int) 15347L),
-  EventNotificationList_Encoding_DefaultXml((int) 915L),
   EventNotifierType((int) 15033L),
   EventQueueOverflowEventType((int) 3035L),
   EventTypesFolder((int) 3048L),
@@ -690,22 +461,6 @@ public enum OpcuaNodeIdServices {
   FilterOperand_Encoding_DefaultJson((int) 15206L),
   FilterOperand_Encoding_DefaultXml((int) 590L),
   FilterOperator((int) 576L),
-  FindServersOnNetworkRequest((int) 12190L),
-  FindServersOnNetworkRequest_Encoding_DefaultBinary((int) 12208L),
-  FindServersOnNetworkRequest_Encoding_DefaultJson((int) 15096L),
-  FindServersOnNetworkRequest_Encoding_DefaultXml((int) 12196L),
-  FindServersOnNetworkResponse((int) 12191L),
-  FindServersOnNetworkResponse_Encoding_DefaultBinary((int) 12209L),
-  FindServersOnNetworkResponse_Encoding_DefaultJson((int) 15097L),
-  FindServersOnNetworkResponse_Encoding_DefaultXml((int) 12197L),
-  FindServersRequest((int) 420L),
-  FindServersRequest_Encoding_DefaultBinary((int) 422L),
-  FindServersRequest_Encoding_DefaultJson((int) 15093L),
-  FindServersRequest_Encoding_DefaultXml((int) 421L),
-  FindServersResponse((int) 423L),
-  FindServersResponse_Encoding_DefaultBinary((int) 425L),
-  FindServersResponse_Encoding_DefaultJson((int) 15094L),
-  FindServersResponse_Encoding_DefaultXml((int) 424L),
   FiniteStateMachineType((int) 2771L),
   FiniteStateVariableType((int) 2760L),
   FiniteTransitionVariableType((int) 2767L),
@@ -719,22 +474,6 @@ public enum OpcuaNodeIdServices {
   FromState((int) 51L),
   GeneralModelChangeEventType((int) 2133L),
   GeneratesEvent((int) 41L),
-  GenericAttributes((int) 17607L),
-  GenericAttributes_Encoding_DefaultBinary((int) 17611L),
-  GenericAttributes_Encoding_DefaultJson((int) 15164L),
-  GenericAttributes_Encoding_DefaultXml((int) 17609L),
-  GenericAttributeValue((int) 17606L),
-  GenericAttributeValue_Encoding_DefaultBinary((int) 17610L),
-  GenericAttributeValue_Encoding_DefaultJson((int) 15163L),
-  GenericAttributeValue_Encoding_DefaultXml((int) 17608L),
-  GetEndpointsRequest((int) 426L),
-  GetEndpointsRequest_Encoding_DefaultBinary((int) 428L),
-  GetEndpointsRequest_Encoding_DefaultJson((int) 15100L),
-  GetEndpointsRequest_Encoding_DefaultXml((int) 427L),
-  GetEndpointsResponse((int) 429L),
-  GetEndpointsResponse_Encoding_DefaultBinary((int) 431L),
-  GetEndpointsResponse_Encoding_DefaultJson((int) 15101L),
-  GetEndpointsResponse_Encoding_DefaultXml((int) 430L),
   GuardVariableType((int) 15113L),
   Guid((int) 14L),
   HAConfiguration((int) 11202L),
@@ -776,10 +515,6 @@ public enum OpcuaNodeIdServices {
   HighlyManagedAlarmConditionClassType((int) 17219L),
   HistoricalDataConfigurationType((int) 2318L),
   HistoricalEventFilter((int) 11215L),
-  HistoryData((int) 656L),
-  HistoryData_Encoding_DefaultBinary((int) 658L),
-  HistoryData_Encoding_DefaultJson((int) 15270L),
-  HistoryData_Encoding_DefaultXml((int) 657L),
   HistoryEvent((int) 659L),
   HistoryEvent_Encoding_DefaultBinary((int) 661L),
   HistoryEvent_Encoding_DefaultJson((int) 15273L),
@@ -788,48 +523,8 @@ public enum OpcuaNodeIdServices {
   HistoryEventFieldList_Encoding_DefaultBinary((int) 922L),
   HistoryEventFieldList_Encoding_DefaultJson((int) 15349L),
   HistoryEventFieldList_Encoding_DefaultXml((int) 921L),
-  HistoryModifiedData((int) 11217L),
-  HistoryModifiedData_Encoding_DefaultBinary((int) 11227L),
-  HistoryModifiedData_Encoding_DefaultJson((int) 15272L),
-  HistoryModifiedData_Encoding_DefaultXml((int) 11219L),
-  HistoryReadDetails((int) 641L),
-  HistoryReadDetails_Encoding_DefaultBinary((int) 643L),
-  HistoryReadDetails_Encoding_DefaultJson((int) 15261L),
-  HistoryReadDetails_Encoding_DefaultXml((int) 642L),
-  HistoryReadRequest((int) 662L),
-  HistoryReadRequest_Encoding_DefaultBinary((int) 664L),
-  HistoryReadRequest_Encoding_DefaultJson((int) 15274L),
-  HistoryReadRequest_Encoding_DefaultXml((int) 663L),
-  HistoryReadResponse((int) 665L),
-  HistoryReadResponse_Encoding_DefaultBinary((int) 667L),
-  HistoryReadResponse_Encoding_DefaultJson((int) 15275L),
-  HistoryReadResponse_Encoding_DefaultXml((int) 666L),
-  HistoryReadResult((int) 638L),
-  HistoryReadResult_Encoding_DefaultBinary((int) 640L),
-  HistoryReadResult_Encoding_DefaultJson((int) 15260L),
-  HistoryReadResult_Encoding_DefaultXml((int) 639L),
-  HistoryReadValueId((int) 635L),
-  HistoryReadValueId_Encoding_DefaultBinary((int) 637L),
-  HistoryReadValueId_Encoding_DefaultJson((int) 15259L),
-  HistoryReadValueId_Encoding_DefaultXml((int) 636L),
   HistoryServerCapabilities((int) 11192L),
   HistoryServerCapabilitiesType((int) 2330L),
-  HistoryUpdateDetails((int) 677L),
-  HistoryUpdateDetails_Encoding_DefaultBinary((int) 679L),
-  HistoryUpdateDetails_Encoding_DefaultJson((int) 15279L),
-  HistoryUpdateDetails_Encoding_DefaultXml((int) 678L),
-  HistoryUpdateRequest((int) 698L),
-  HistoryUpdateRequest_Encoding_DefaultBinary((int) 700L),
-  HistoryUpdateRequest_Encoding_DefaultJson((int) 15287L),
-  HistoryUpdateRequest_Encoding_DefaultXml((int) 699L),
-  HistoryUpdateResponse((int) 701L),
-  HistoryUpdateResponse_Encoding_DefaultBinary((int) 703L),
-  HistoryUpdateResponse_Encoding_DefaultJson((int) 15288L),
-  HistoryUpdateResponse_Encoding_DefaultXml((int) 702L),
-  HistoryUpdateResult((int) 695L),
-  HistoryUpdateResult_Encoding_DefaultBinary((int) 697L),
-  HistoryUpdateResult_Encoding_DefaultJson((int) 15286L),
-  HistoryUpdateResult_Encoding_DefaultXml((int) 696L),
   HistoryUpdateType((int) 11234L),
   HttpsCertificateType((int) 12558L),
   IBaseEthernetCapabilitiesType((int) 24167L),
@@ -860,10 +555,6 @@ public enum OpcuaNodeIdServices {
   Index((int) 17588L),
   InitialStateType((int) 2309L),
   InputArguments((int) 3072L),
-  InstanceNode((int) 11879L),
-  InstanceNode_Encoding_DefaultBinary((int) 11889L),
-  InstanceNode_Encoding_DefaultJson((int) 15069L),
-  InstanceNode_Encoding_DefaultXml((int) 11887L),
   InstrumentDiagnosticAlarmType((int) 18347L),
   Int16((int) 4L),
   Int32((int) 6L),
@@ -928,78 +619,20 @@ public enum OpcuaNodeIdServices {
   MdnsDiscoveryConfiguration_Encoding_DefaultJson((int) 15106L),
   MdnsDiscoveryConfiguration_Encoding_DefaultXml((int) 12893L),
   MessageSecurityMode((int) 302L),
-  MethodAttributes((int) 358L),
-  MethodAttributes_Encoding_DefaultBinary((int) 360L),
-  MethodAttributes_Encoding_DefaultJson((int) 15157L),
-  MethodAttributes_Encoding_DefaultXml((int) 359L),
-  MethodNode((int) 276L),
-  MethodNode_Encoding_DefaultBinary((int) 278L),
-  MethodNode_Encoding_DefaultJson((int) 15077L),
-  MethodNode_Encoding_DefaultXml((int) 277L),
   ModelChangeStructureDataType((int) 877L),
   ModelChangeStructureDataType_Encoding_DefaultBinary((int) 879L),
   ModelChangeStructureDataType_Encoding_DefaultJson((int) 15373L),
   ModelChangeStructureDataType_Encoding_DefaultXml((int) 878L),
-  ModelChangeStructureVerbMask((int) 11941L),
   ModellingRule_ExposesItsArray((int) 83L),
   ModellingRule_Mandatory((int) 78L),
   ModellingRule_MandatoryPlaceholder((int) 11510L),
   ModellingRule_Optional((int) 80L),
   ModellingRule_OptionalPlaceholder((int) 11508L),
   ModellingRuleType((int) 77L),
-  ModificationInfo((int) 11216L),
-  ModificationInfo_Encoding_DefaultBinary((int) 11226L),
-  ModificationInfo_Encoding_DefaultJson((int) 15271L),
-  ModificationInfo_Encoding_DefaultXml((int) 11218L),
-  ModifyMonitoredItemsRequest((int) 761L),
-  ModifyMonitoredItemsRequest_Encoding_DefaultBinary((int) 763L),
-  ModifyMonitoredItemsRequest_Encoding_DefaultJson((int) 15327L),
-  ModifyMonitoredItemsRequest_Encoding_DefaultXml((int) 762L),
-  ModifyMonitoredItemsResponse((int) 764L),
-  ModifyMonitoredItemsResponse_Encoding_DefaultBinary((int) 766L),
-  ModifyMonitoredItemsResponse_Encoding_DefaultJson((int) 15328L),
-  ModifyMonitoredItemsResponse_Encoding_DefaultXml((int) 765L),
-  ModifySubscriptionRequest((int) 791L),
-  ModifySubscriptionRequest_Encoding_DefaultBinary((int) 793L),
-  ModifySubscriptionRequest_Encoding_DefaultJson((int) 15339L),
-  ModifySubscriptionRequest_Encoding_DefaultXml((int) 792L),
-  ModifySubscriptionResponse((int) 794L),
-  ModifySubscriptionResponse_Encoding_DefaultBinary((int) 796L),
-  ModifySubscriptionResponse_Encoding_DefaultJson((int) 15340L),
-  ModifySubscriptionResponse_Encoding_DefaultXml((int) 795L),
-  MonitoredItemCreateRequest((int) 743L),
-  MonitoredItemCreateRequest_Encoding_DefaultBinary((int) 745L),
-  MonitoredItemCreateRequest_Encoding_DefaultJson((int) 15321L),
-  MonitoredItemCreateRequest_Encoding_DefaultXml((int) 744L),
-  MonitoredItemCreateResult((int) 746L),
-  MonitoredItemCreateResult_Encoding_DefaultBinary((int) 748L),
-  MonitoredItemCreateResult_Encoding_DefaultJson((int) 15322L),
-  MonitoredItemCreateResult_Encoding_DefaultXml((int) 747L),
-  MonitoredItemModifyRequest((int) 755L),
-  MonitoredItemModifyRequest_Encoding_DefaultBinary((int) 757L),
-  MonitoredItemModifyRequest_Encoding_DefaultJson((int) 15325L),
-  MonitoredItemModifyRequest_Encoding_DefaultXml((int) 756L),
-  MonitoredItemModifyResult((int) 758L),
-  MonitoredItemModifyResult_Encoding_DefaultBinary((int) 760L),
-  MonitoredItemModifyResult_Encoding_DefaultJson((int) 15326L),
-  MonitoredItemModifyResult_Encoding_DefaultXml((int) 759L),
-  MonitoredItemNotification((int) 806L),
-  MonitoredItemNotification_Encoding_DefaultBinary((int) 808L),
-  MonitoredItemNotification_Encoding_DefaultJson((int) 15346L),
-  MonitoredItemNotification_Encoding_DefaultXml((int) 807L),
   MonitoringFilter((int) 719L),
   MonitoringFilter_Encoding_DefaultBinary((int) 721L),
   MonitoringFilter_Encoding_DefaultJson((int) 15293L),
   MonitoringFilter_Encoding_DefaultXml((int) 720L),
-  MonitoringFilterResult((int) 731L),
-  MonitoringFilterResult_Encoding_DefaultBinary((int) 733L),
-  MonitoringFilterResult_Encoding_DefaultJson((int) 15313L),
-  MonitoringFilterResult_Encoding_DefaultXml((int) 732L),
-  MonitoringMode((int) 716L),
-  MonitoringParameters((int) 740L),
-  MonitoringParameters_Encoding_DefaultBinary((int) 742L),
-  MonitoringParameters_Encoding_DefaultJson((int) 15320L),
-  MonitoringParameters_Encoding_DefaultXml((int) 741L),
   MultiStateDictionaryEntryDiscreteBaseType((int) 19077L),
   MultiStateDictionaryEntryDiscreteType((int) 19084L),
   MultiStateDiscreteType((int) 2376L),
@@ -1024,25 +657,9 @@ public enum OpcuaNodeIdServices {
   NetworkGroupDataType_Encoding_DefaultJson((int) 15364L),
   NetworkGroupDataType_Encoding_DefaultXml((int) 11950L),
   NetworkInterfaces((int) 24229L),
-  Node((int) 258L),
-  Node_Encoding_DefaultBinary((int) 260L),
-  Node_Encoding_DefaultJson((int) 15068L),
-  Node_Encoding_DefaultXml((int) 259L),
-  NodeAttributes((int) 349L),
-  NodeAttributes_Encoding_DefaultBinary((int) 351L),
-  NodeAttributes_Encoding_DefaultJson((int) 15151L),
-  NodeAttributes_Encoding_DefaultXml((int) 350L),
   NodeAttributesMask((int) 348L),
   NodeClass((int) 257L),
   NodeId((int) 17L),
-  NodeReference((int) 580L),
-  NodeReference_Encoding_DefaultBinary((int) 582L),
-  NodeReference_Encoding_DefaultJson((int) 15203L),
-  NodeReference_Encoding_DefaultXml((int) 581L),
-  NodeTypeDescription((int) 573L),
-  NodeTypeDescription_Encoding_DefaultBinary((int) 575L),
-  NodeTypeDescription_Encoding_DefaultJson((int) 15201L),
-  NodeTypeDescription_Encoding_DefaultXml((int) 574L),
   NodeVersion((int) 3068L),
   NonExclusiveDeviationAlarmType((int) 10368L),
   NonExclusiveLevelAlarmType((int) 10060L),
@@ -1052,33 +669,9 @@ public enum OpcuaNodeIdServices {
   NonTransparentNetworkRedundancyType((int) 11945L),
   NonTransparentRedundancyType((int) 2039L),
   NormalizedString((int) 12877L),
-  NotificationData((int) 945L),
-  NotificationData_Encoding_DefaultBinary((int) 947L),
-  NotificationData_Encoding_DefaultJson((int) 15344L),
-  NotificationData_Encoding_DefaultXml((int) 946L),
-  NotificationMessage((int) 803L),
-  NotificationMessage_Encoding_DefaultBinary((int) 805L),
-  NotificationMessage_Encoding_DefaultJson((int) 15343L),
-  NotificationMessage_Encoding_DefaultXml((int) 804L),
   Number((int) 26L),
   NumericRange((int) 291L),
-  ObjectAttributes((int) 352L),
-  ObjectAttributes_Encoding_DefaultBinary((int) 354L),
-  ObjectAttributes_Encoding_DefaultJson((int) 15152L),
-  ObjectAttributes_Encoding_DefaultXml((int) 353L),
-  ObjectNode((int) 261L),
-  ObjectNode_Encoding_DefaultBinary((int) 263L),
-  ObjectNode_Encoding_DefaultJson((int) 15071L),
-  ObjectNode_Encoding_DefaultXml((int) 262L),
   ObjectsFolder((int) 85L),
-  ObjectTypeAttributes((int) 361L),
-  ObjectTypeAttributes_Encoding_DefaultBinary((int) 363L),
-  ObjectTypeAttributes_Encoding_DefaultJson((int) 15158L),
-  ObjectTypeAttributes_Encoding_DefaultXml((int) 362L),
-  ObjectTypeNode((int) 264L),
-  ObjectTypeNode_Encoding_DefaultBinary((int) 266L),
-  ObjectTypeNode_Encoding_DefaultJson((int) 15073L),
-  ObjectTypeNode_Encoding_DefaultXml((int) 265L),
   ObjectTypesFolder((int) 88L),
   OffNormalAlarmType((int) 10637L),
   OPCBinarySchema_TypeSystem((int) 93L),
@@ -1086,14 +679,6 @@ public enum OpcuaNodeIdServices {
   OpcUa_XmlSchema((int) 8252L),
   OPCUANamespaceMetadata((int) 15957L),
   OpenFileMode((int) 11939L),
-  OpenSecureChannelRequest((int) 444L),
-  OpenSecureChannelRequest_Encoding_DefaultBinary((int) 446L),
-  OpenSecureChannelRequest_Encoding_DefaultJson((int) 15132L),
-  OpenSecureChannelRequest_Encoding_DefaultXml((int) 445L),
-  OpenSecureChannelResponse((int) 447L),
-  OpenSecureChannelResponse_Encoding_DefaultBinary((int) 449L),
-  OpenSecureChannelResponse_Encoding_DefaultJson((int) 15133L),
-  OpenSecureChannelResponse_Encoding_DefaultXml((int) 448L),
   OperationLimitsType((int) 11564L),
   OptionSet((int) 12755L),
   OptionSet_Encoding_DefaultBinary((int) 12765L),
@@ -1110,10 +695,6 @@ public enum OpcuaNodeIdServices {
   OrientationType((int) 18779L),
   OutputArguments((int) 3073L),
   OverrideValueHandling((int) 15874L),
-  ParsingResult((int) 610L),
-  ParsingResult_Encoding_DefaultBinary((int) 612L),
-  ParsingResult_Encoding_DefaultJson((int) 15236L),
-  ParsingResult_Encoding_DefaultXml((int) 611L),
   PerformUpdateType((int) 11293L),
   PermissionType((int) 94L),
   ProcessConditionClassType((int) 11164L),
@@ -1155,14 +736,6 @@ public enum OpcuaNodeIdServices {
   PublishedVariableDataType_Encoding_DefaultBinary((int) 14323L),
   PublishedVariableDataType_Encoding_DefaultJson((int) 15060L),
   PublishedVariableDataType_Encoding_DefaultXml((int) 14319L),
-  PublishRequest((int) 824L),
-  PublishRequest_Encoding_DefaultBinary((int) 826L),
-  PublishRequest_Encoding_DefaultJson((int) 15352L),
-  PublishRequest_Encoding_DefaultXml((int) 825L),
-  PublishResponse((int) 827L),
-  PublishResponse_Encoding_DefaultBinary((int) 829L),
-  PublishResponse_Encoding_DefaultJson((int) 15353L),
-  PublishResponse_Encoding_DefaultXml((int) 828L),
   PublishSubscribe((int) 14443L),
   PublishSubscribeType((int) 14416L),
   PubSubCommunicationFailureEventType((int) 15563L),
@@ -1195,30 +768,6 @@ public enum OpcuaNodeIdServices {
   PubSubStatusType((int) 14643L),
   PubSubTransportLimitsExceedEventType((int) 15548L),
   QualifiedName((int) 20L),
-  QueryDataDescription((int) 570L),
-  QueryDataDescription_Encoding_DefaultBinary((int) 572L),
-  QueryDataDescription_Encoding_DefaultJson((int) 15200L),
-  QueryDataDescription_Encoding_DefaultXml((int) 571L),
-  QueryDataSet((int) 577L),
-  QueryDataSet_Encoding_DefaultBinary((int) 579L),
-  QueryDataSet_Encoding_DefaultJson((int) 15202L),
-  QueryDataSet_Encoding_DefaultXml((int) 578L),
-  QueryFirstRequest((int) 613L),
-  QueryFirstRequest_Encoding_DefaultBinary((int) 615L),
-  QueryFirstRequest_Encoding_DefaultJson((int) 15244L),
-  QueryFirstRequest_Encoding_DefaultXml((int) 614L),
-  QueryFirstResponse((int) 616L),
-  QueryFirstResponse_Encoding_DefaultBinary((int) 618L),
-  QueryFirstResponse_Encoding_DefaultJson((int) 15252L),
-  QueryFirstResponse_Encoding_DefaultXml((int) 617L),
-  QueryNextRequest((int) 619L),
-  QueryNextRequest_Encoding_DefaultBinary((int) 621L),
-  QueryNextRequest_Encoding_DefaultJson((int) 15254L),
-  QueryNextRequest_Encoding_DefaultXml((int) 620L),
-  QueryNextResponse((int) 622L),
-  QueryNextResponse_Encoding_DefaultBinary((int) 624L),
-  QueryNextResponse_Encoding_DefaultJson((int) 15255L),
-  QueryNextResponse_Encoding_DefaultXml((int) 623L),
   Range((int) 884L),
   Range_Encoding_DefaultBinary((int) 886L),
   Range_Encoding_DefaultJson((int) 15375L),
@@ -1228,14 +777,6 @@ public enum OpcuaNodeIdServices {
   RationalNumber_Encoding_DefaultJson((int) 19064L),
   RationalNumber_Encoding_DefaultXml((int) 18851L),
   RationalNumberType((int) 17709L),
-  ReadAnnotationDataDetails((int) 23497L),
-  ReadAnnotationDataDetails_Encoding_DefaultBinary((int) 23500L),
-  ReadAnnotationDataDetails_Encoding_DefaultJson((int) 23512L),
-  ReadAnnotationDataDetails_Encoding_DefaultXml((int) 23506L),
-  ReadAtTimeDetails((int) 653L),
-  ReadAtTimeDetails_Encoding_DefaultBinary((int) 655L),
-  ReadAtTimeDetails_Encoding_DefaultJson((int) 15269L),
-  ReadAtTimeDetails_Encoding_DefaultXml((int) 654L),
   ReaderGroupDataType((int) 15520L),
   ReaderGroupDataType_Encoding_DefaultBinary((int) 21153L),
   ReaderGroupDataType_Encoding_DefaultJson((int) 21201L),
@@ -1251,52 +792,12 @@ public enum OpcuaNodeIdServices {
   ReaderGroupTransportDataType_Encoding_DefaultXml((int) 15995L),
   ReaderGroupTransportType((int) 21090L),
   ReaderGroupType((int) 17999L),
-  ReadEventDetails((int) 644L),
-  ReadEventDetails_Encoding_DefaultBinary((int) 646L),
-  ReadEventDetails_Encoding_DefaultJson((int) 15262L),
-  ReadEventDetails_Encoding_DefaultXml((int) 645L),
-  ReadProcessedDetails((int) 650L),
-  ReadProcessedDetails_Encoding_DefaultBinary((int) 652L),
-  ReadProcessedDetails_Encoding_DefaultJson((int) 15264L),
-  ReadProcessedDetails_Encoding_DefaultXml((int) 651L),
-  ReadRawModifiedDetails((int) 647L),
-  ReadRawModifiedDetails_Encoding_DefaultBinary((int) 649L),
-  ReadRawModifiedDetails_Encoding_DefaultJson((int) 15263L),
-  ReadRawModifiedDetails_Encoding_DefaultXml((int) 648L),
-  ReadRequest((int) 629L),
-  ReadRequest_Encoding_DefaultBinary((int) 631L),
-  ReadRequest_Encoding_DefaultJson((int) 15257L),
-  ReadRequest_Encoding_DefaultXml((int) 630L),
-  ReadResponse((int) 632L),
-  ReadResponse_Encoding_DefaultBinary((int) 634L),
-  ReadResponse_Encoding_DefaultJson((int) 15258L),
-  ReadResponse_Encoding_DefaultXml((int) 633L),
-  ReadValueId((int) 626L),
-  ReadValueId_Encoding_DefaultBinary((int) 628L),
-  ReadValueId_Encoding_DefaultJson((int) 15256L),
-  ReadValueId_Encoding_DefaultXml((int) 627L),
   RedundancySupport((int) 851L),
   RedundantServerDataType((int) 853L),
   RedundantServerDataType_Encoding_DefaultBinary((int) 855L),
   RedundantServerDataType_Encoding_DefaultJson((int) 15362L),
   RedundantServerDataType_Encoding_DefaultXml((int) 854L),
-  ReferenceDescription((int) 518L),
-  ReferenceDescription_Encoding_DefaultBinary((int) 520L),
-  ReferenceDescription_Encoding_DefaultJson((int) 15182L),
-  ReferenceDescription_Encoding_DefaultXml((int) 519L),
-  ReferenceNode((int) 285L),
-  ReferenceNode_Encoding_DefaultBinary((int) 287L),
-  ReferenceNode_Encoding_DefaultJson((int) 15080L),
-  ReferenceNode_Encoding_DefaultXml((int) 286L),
   References((int) 31L),
-  ReferenceTypeAttributes((int) 367L),
-  ReferenceTypeAttributes_Encoding_DefaultBinary((int) 369L),
-  ReferenceTypeAttributes_Encoding_DefaultJson((int) 15160L),
-  ReferenceTypeAttributes_Encoding_DefaultXml((int) 368L),
-  ReferenceTypeNode((int) 273L),
-  ReferenceTypeNode_Encoding_DefaultBinary((int) 275L),
-  ReferenceTypeNode_Encoding_DefaultJson((int) 15076L),
-  ReferenceTypeNode_Encoding_DefaultXml((int) 274L),
   ReferenceTypesFolder((int) 91L),
   RefreshEndEventType((int) 2788L),
   RefreshRequiredEventType((int) 2789L),
@@ -1305,30 +806,6 @@ public enum OpcuaNodeIdServices {
   RegisteredServer_Encoding_DefaultBinary((int) 434L),
   RegisteredServer_Encoding_DefaultJson((int) 15102L),
   RegisteredServer_Encoding_DefaultXml((int) 433L),
-  RegisterNodesRequest((int) 558L),
-  RegisterNodesRequest_Encoding_DefaultBinary((int) 560L),
-  RegisterNodesRequest_Encoding_DefaultJson((int) 15195L),
-  RegisterNodesRequest_Encoding_DefaultXml((int) 559L),
-  RegisterNodesResponse((int) 561L),
-  RegisterNodesResponse_Encoding_DefaultBinary((int) 563L),
-  RegisterNodesResponse_Encoding_DefaultJson((int) 15196L),
-  RegisterNodesResponse_Encoding_DefaultXml((int) 562L),
-  RegisterServer2Request((int) 12193L),
-  RegisterServer2Request_Encoding_DefaultBinary((int) 12211L),
-  RegisterServer2Request_Encoding_DefaultJson((int) 15107L),
-  RegisterServer2Request_Encoding_DefaultXml((int) 12199L),
-  RegisterServer2Response((int) 12194L),
-  RegisterServer2Response_Encoding_DefaultBinary((int) 12212L),
-  RegisterServer2Response_Encoding_DefaultJson((int) 15130L),
-  RegisterServer2Response_Encoding_DefaultXml((int) 12200L),
-  RegisterServerRequest((int) 435L),
-  RegisterServerRequest_Encoding_DefaultBinary((int) 437L),
-  RegisterServerRequest_Encoding_DefaultJson((int) 15103L),
-  RegisterServerRequest_Encoding_DefaultXml((int) 436L),
-  RegisterServerResponse((int) 438L),
-  RegisterServerResponse_Encoding_DefaultBinary((int) 440L),
-  RegisterServerResponse_Encoding_DefaultJson((int) 15104L),
-  RegisterServerResponse_Encoding_DefaultXml((int) 439L),
   RelativePath((int) 540L),
   RelativePath_Encoding_DefaultBinary((int) 542L),
   RelativePath_Encoding_DefaultJson((int) 15189L),
@@ -1337,23 +814,7 @@ public enum OpcuaNodeIdServices {
   RelativePathElement_Encoding_DefaultBinary((int) 539L),
   RelativePathElement_Encoding_DefaultJson((int) 15188L),
   RelativePathElement_Encoding_DefaultXml((int) 538L),
-  RepublishRequest((int) 830L),
-  RepublishRequest_Encoding_DefaultBinary((int) 832L),
-  RepublishRequest_Encoding_DefaultJson((int) 15354L),
-  RepublishRequest_Encoding_DefaultXml((int) 831L),
-  RepublishResponse((int) 833L),
-  RepublishResponse_Encoding_DefaultBinary((int) 835L),
-  RepublishResponse_Encoding_DefaultJson((int) 15355L),
-  RepublishResponse_Encoding_DefaultXml((int) 834L),
-  RequestHeader((int) 389L),
-  RequestHeader_Encoding_DefaultBinary((int) 391L),
-  RequestHeader_Encoding_DefaultJson((int) 15088L),
-  RequestHeader_Encoding_DefaultXml((int) 390L),
   Resources((int) 24226L),
-  ResponseHeader((int) 392L),
-  ResponseHeader_Encoding_DefaultBinary((int) 394L),
-  ResponseHeader_Encoding_DefaultJson((int) 15089L),
-  ResponseHeader_Encoding_DefaultXml((int) 393L),
   RoleMappingRuleChangedAuditEventType((int) 17641L),
   RolePermissionType((int) 96L),
   RolePermissionType_Encoding_DefaultBinary((int) 128L),
@@ -1362,7 +823,6 @@ public enum OpcuaNodeIdServices {
   RoleSetType((int) 15607L),
   RoleType((int) 15620L),
   RootFolder((int) 84L),
-  RsaEncryptedSecret((int) 17545L),
   RsaMinApplicationCertificateType((int) 12559L),
   RsaSha256ApplicationCertificateType((int) 12560L),
   SafetyConditionClassType((int) 17218L),
@@ -1413,10 +873,6 @@ public enum OpcuaNodeIdServices {
   ServiceCounterDataType_Encoding_DefaultBinary((int) 873L),
   ServiceCounterDataType_Encoding_DefaultJson((int) 15370L),
   ServiceCounterDataType_Encoding_DefaultXml((int) 872L),
-  ServiceFault((int) 395L),
-  ServiceFault_Encoding_DefaultBinary((int) 397L),
-  ServiceFault_Encoding_DefaultJson((int) 15090L),
-  ServiceFault_Encoding_DefaultXml((int) 396L),
   SessionAuthenticationToken((int) 388L),
   SessionDiagnosticsArrayType((int) 2196L),
   SessionDiagnosticsDataType((int) 865L),
@@ -1425,14 +881,6 @@ public enum OpcuaNodeIdServices {
   SessionDiagnosticsDataType_Encoding_DefaultXml((int) 866L),
   SessionDiagnosticsObjectType((int) 2029L),
   SessionDiagnosticsVariableType((int) 2197L),
-  SessionlessInvokeRequestType((int) 15901L),
-  SessionlessInvokeRequestType_Encoding_DefaultBinary((int) 15903L),
-  SessionlessInvokeRequestType_Encoding_DefaultJson((int) 15091L),
-  SessionlessInvokeRequestType_Encoding_DefaultXml((int) 15902L),
-  SessionlessInvokeResponseType((int) 20999L),
-  SessionlessInvokeResponseType_Encoding_DefaultBinary((int) 21001L),
-  SessionlessInvokeResponseType_Encoding_DefaultJson((int) 15092L),
-  SessionlessInvokeResponseType_Encoding_DefaultXml((int) 21000L),
   SessionsDiagnosticsSummaryType((int) 2026L),
   SessionSecurityDiagnosticsArrayType((int) 2243L),
   SessionSecurityDiagnosticsDataType((int) 868L),
@@ -1440,35 +888,7 @@ public enum OpcuaNodeIdServices {
   SessionSecurityDiagnosticsDataType_Encoding_DefaultJson((int) 15369L),
   SessionSecurityDiagnosticsDataType_Encoding_DefaultXml((int) 869L),
   SessionSecurityDiagnosticsType((int) 2244L),
-  SetMonitoringModeRequest((int) 767L),
-  SetMonitoringModeRequest_Encoding_DefaultBinary((int) 769L),
-  SetMonitoringModeRequest_Encoding_DefaultJson((int) 15329L),
-  SetMonitoringModeRequest_Encoding_DefaultXml((int) 768L),
-  SetMonitoringModeResponse((int) 770L),
-  SetMonitoringModeResponse_Encoding_DefaultBinary((int) 772L),
-  SetMonitoringModeResponse_Encoding_DefaultJson((int) 15331L),
-  SetMonitoringModeResponse_Encoding_DefaultXml((int) 771L),
-  SetPublishingModeRequest((int) 797L),
-  SetPublishingModeRequest_Encoding_DefaultBinary((int) 799L),
-  SetPublishingModeRequest_Encoding_DefaultJson((int) 15341L),
-  SetPublishingModeRequest_Encoding_DefaultXml((int) 798L),
-  SetPublishingModeResponse((int) 800L),
-  SetPublishingModeResponse_Encoding_DefaultBinary((int) 802L),
-  SetPublishingModeResponse_Encoding_DefaultJson((int) 15342L),
-  SetPublishingModeResponse_Encoding_DefaultXml((int) 801L),
-  SetTriggeringRequest((int) 773L),
-  SetTriggeringRequest_Encoding_DefaultBinary((int) 775L),
-  SetTriggeringRequest_Encoding_DefaultJson((int) 15332L),
-  SetTriggeringRequest_Encoding_DefaultXml((int) 774L),
-  SetTriggeringResponse((int) 776L),
-  SetTriggeringResponse_Encoding_DefaultBinary((int) 778L),
-  SetTriggeringResponse_Encoding_DefaultJson((int) 15333L),
-  SetTriggeringResponse_Encoding_DefaultXml((int) 777L),
   ShelvedStateMachineType((int) 2929L),
-  SignatureData((int) 456L),
-  SignatureData_Encoding_DefaultBinary((int) 458L),
-  SignatureData_Encoding_DefaultJson((int) 15137L),
-  SignatureData_Encoding_DefaultXml((int) 457L),
   SignedSoftwareCertificate((int) 344L),
   SignedSoftwareCertificate_Encoding_DefaultBinary((int) 346L),
   SignedSoftwareCertificate_Encoding_DefaultJson((int) 15136L),
@@ -1485,10 +905,6 @@ public enum OpcuaNodeIdServices {
   StateType((int) 2307L),
   StateVariableType((int) 2755L),
   StatisticalConditionClassType((int) 18665L),
-  StatusChangeNotification((int) 818L),
-  StatusChangeNotification_Encoding_DefaultBinary((int) 820L),
-  StatusChangeNotification_Encoding_DefaultJson((int) 15350L),
-  StatusChangeNotification_Encoding_DefaultXml((int) 819L),
   StatusCode((int) 19L),
   StatusResult((int) 299L),
   StatusResult_Encoding_DefaultBinary((int) 301L),
@@ -1520,10 +936,6 @@ public enum OpcuaNodeIdServices {
   SubscribedDataSetMirrorDataType_Encoding_DefaultXml((int) 16012L),
   SubscribedDataSetMirrorType((int) 15127L),
   SubscribedDataSetType((int) 15108L),
-  SubscriptionAcknowledgement((int) 821L),
-  SubscriptionAcknowledgement_Encoding_DefaultBinary((int) 823L),
-  SubscriptionAcknowledgement_Encoding_DefaultJson((int) 15351L),
-  SubscriptionAcknowledgement_Encoding_DefaultXml((int) 822L),
   SubscriptionDiagnosticsArrayType((int) 2171L),
   SubscriptionDiagnosticsDataType((int) 874L),
   SubscriptionDiagnosticsDataType_Encoding_DefaultBinary((int) 876L),
@@ -1565,7 +977,6 @@ public enum OpcuaNodeIdServices {
   ThreeDVector_Encoding_DefaultXml((int) 18853L),
   ThreeDVectorType((int) 17716L),
   Time((int) 292L),
-  TimestampsToReturn((int) 625L),
   TimeString((int) 12880L),
   TimeZoneDataType((int) 8912L),
   TimeZoneDataType_Encoding_DefaultBinary((int) 8917L),
@@ -1574,29 +985,9 @@ public enum OpcuaNodeIdServices {
   Topics((int) 23488L),
   ToState((int) 52L),
   TrainingConditionClassType((int) 17220L),
-  TransferResult((int) 836L),
-  TransferResult_Encoding_DefaultBinary((int) 838L),
-  TransferResult_Encoding_DefaultJson((int) 15356L),
-  TransferResult_Encoding_DefaultXml((int) 837L),
-  TransferSubscriptionsRequest((int) 839L),
-  TransferSubscriptionsRequest_Encoding_DefaultBinary((int) 841L),
-  TransferSubscriptionsRequest_Encoding_DefaultJson((int) 15357L),
-  TransferSubscriptionsRequest_Encoding_DefaultXml((int) 840L),
-  TransferSubscriptionsResponse((int) 842L),
-  TransferSubscriptionsResponse_Encoding_DefaultBinary((int) 844L),
-  TransferSubscriptionsResponse_Encoding_DefaultJson((int) 15358L),
-  TransferSubscriptionsResponse_Encoding_DefaultXml((int) 843L),
   TransitionEventType((int) 2311L),
   TransitionType((int) 2310L),
   TransitionVariableType((int) 2762L),
-  TranslateBrowsePathsToNodeIdsRequest((int) 552L),
-  TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary((int) 554L),
-  TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultJson((int) 15193L),
-  TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultXml((int) 553L),
-  TranslateBrowsePathsToNodeIdsResponse((int) 555L),
-  TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary((int) 557L),
-  TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultJson((int) 15194L),
-  TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultXml((int) 556L),
   TransparentRedundancyType((int) 2036L),
   TripAlarmType((int) 10751L),
   TrustListDataType((int) 12554L),
@@ -1613,10 +1004,6 @@ public enum OpcuaNodeIdServices {
   TsnTalkerStatus((int) 24222L),
   TwoStateDiscreteType((int) 2373L),
   TwoStateVariableType((int) 8995L),
-  TypeNode((int) 11880L),
-  TypeNode_Encoding_DefaultBinary((int) 11890L),
-  TypeNode_Encoding_DefaultJson((int) 15070L),
-  TypeNode_Encoding_DefaultXml((int) 11888L),
   TypesFolder((int) 86L),
   UABinaryFileDataType((int) 15006L),
   UABinaryFileDataType_Encoding_DefaultBinary((int) 15422L),
@@ -1647,30 +1034,10 @@ public enum OpcuaNodeIdServices {
   Union_Encoding_DefaultBinary((int) 12766L),
   Union_Encoding_DefaultJson((int) 15085L),
   Union_Encoding_DefaultXml((int) 12758L),
-  UnregisterNodesRequest((int) 564L),
-  UnregisterNodesRequest_Encoding_DefaultBinary((int) 566L),
-  UnregisterNodesRequest_Encoding_DefaultJson((int) 15197L),
-  UnregisterNodesRequest_Encoding_DefaultXml((int) 565L),
-  UnregisterNodesResponse((int) 567L),
-  UnregisterNodesResponse_Encoding_DefaultBinary((int) 569L),
-  UnregisterNodesResponse_Encoding_DefaultJson((int) 15198L),
-  UnregisterNodesResponse_Encoding_DefaultXml((int) 568L),
   UnsignedRationalNumber((int) 24107L),
   UnsignedRationalNumber_Encoding_DefaultBinary((int) 24110L),
   UnsignedRationalNumber_Encoding_DefaultJson((int) 24134L),
   UnsignedRationalNumber_Encoding_DefaultXml((int) 24122L),
-  UpdateDataDetails((int) 680L),
-  UpdateDataDetails_Encoding_DefaultBinary((int) 682L),
-  UpdateDataDetails_Encoding_DefaultJson((int) 15280L),
-  UpdateDataDetails_Encoding_DefaultXml((int) 681L),
-  UpdateEventDetails((int) 683L),
-  UpdateEventDetails_Encoding_DefaultBinary((int) 685L),
-  UpdateEventDetails_Encoding_DefaultJson((int) 15282L),
-  UpdateEventDetails_Encoding_DefaultXml((int) 684L),
-  UpdateStructureDataDetails((int) 11295L),
-  UpdateStructureDataDetails_Encoding_DefaultBinary((int) 11300L),
-  UpdateStructureDataDetails_Encoding_DefaultJson((int) 15281L),
-  UpdateStructureDataDetails_Encoding_DefaultXml((int) 11296L),
   UriDictionaryEntryType((int) 17600L),
   UserCredentialCertificateType((int) 15181L),
   UserIdentityToken((int) 316L),
@@ -1688,22 +1055,6 @@ public enum OpcuaNodeIdServices {
   UserTokenType((int) 303L),
   UtcTime((int) 294L),
   ValueAsText((int) 11433L),
-  VariableAttributes((int) 355L),
-  VariableAttributes_Encoding_DefaultBinary((int) 357L),
-  VariableAttributes_Encoding_DefaultJson((int) 15153L),
-  VariableAttributes_Encoding_DefaultXml((int) 356L),
-  VariableNode((int) 267L),
-  VariableNode_Encoding_DefaultBinary((int) 269L),
-  VariableNode_Encoding_DefaultJson((int) 15074L),
-  VariableNode_Encoding_DefaultXml((int) 268L),
-  VariableTypeAttributes((int) 364L),
-  VariableTypeAttributes_Encoding_DefaultBinary((int) 366L),
-  VariableTypeAttributes_Encoding_DefaultJson((int) 15159L),
-  VariableTypeAttributes_Encoding_DefaultXml((int) 365L),
-  VariableTypeNode((int) 270L),
-  VariableTypeNode_Encoding_DefaultBinary((int) 272L),
-  VariableTypeNode_Encoding_DefaultJson((int) 15075L),
-  VariableTypeNode_Encoding_DefaultXml((int) 271L),
   VariableTypesFolder((int) 89L),
   Vector((int) 18807L),
   Vector_Encoding_DefaultBinary((int) 18816L),
@@ -1712,18 +1063,6 @@ public enum OpcuaNodeIdServices {
   VectorType((int) 17714L),
   VendorServerInfoType((int) 2033L),
   VersionTime((int) 20998L),
-  ViewAttributes((int) 373L),
-  ViewAttributes_Encoding_DefaultBinary((int) 375L),
-  ViewAttributes_Encoding_DefaultJson((int) 15162L),
-  ViewAttributes_Encoding_DefaultXml((int) 374L),
-  ViewDescription((int) 511L),
-  ViewDescription_Encoding_DefaultBinary((int) 513L),
-  ViewDescription_Encoding_DefaultJson((int) 15179L),
-  ViewDescription_Encoding_DefaultXml((int) 512L),
-  ViewNode((int) 279L),
-  ViewNode_Encoding_DefaultBinary((int) 281L),
-  ViewNode_Encoding_DefaultJson((int) 15078L),
-  ViewNode_Encoding_DefaultXml((int) 280L),
   ViewsFolder((int) 87L),
   ViewVersion((int) 12170L),
   WellKnownRole_Anonymous((int) 15644L),
@@ -1734,14 +1073,6 @@ public enum OpcuaNodeIdServices {
   WellKnownRole_Operator((int) 15680L),
   WellKnownRole_SecurityAdmin((int) 15704L),
   WellKnownRole_Supervisor((int) 15692L),
-  WriteRequest((int) 671L),
-  WriteRequest_Encoding_DefaultBinary((int) 673L),
-  WriteRequest_Encoding_DefaultJson((int) 15277L),
-  WriteRequest_Encoding_DefaultXml((int) 672L),
-  WriteResponse((int) 674L),
-  WriteResponse_Encoding_DefaultBinary((int) 676L),
-  WriteResponse_Encoding_DefaultJson((int) 15278L),
-  WriteResponse_Encoding_DefaultXml((int) 675L),
   WriterGroupDataType((int) 15480L),
   WriterGroupDataType_Encoding_DefaultBinary((int) 21150L),
   WriterGroupDataType_Encoding_DefaultJson((int) 21198L),
@@ -1757,10 +1088,6 @@ public enum OpcuaNodeIdServices {
   WriterGroupTransportDataType_Encoding_DefaultXml((int) 15990L),
   WriterGroupTransportType((int) 17997L),
   WriterGroupType((int) 17725L),
-  WriteValue((int) 668L),
-  WriteValue_Encoding_DefaultBinary((int) 670L),
-  WriteValue_Encoding_DefaultJson((int) 15276L),
-  WriteValue_Encoding_DefaultXml((int) 669L),
   X509IdentityToken((int) 325L),
   X509IdentityToken_Encoding_DefaultBinary((int) 327L),
   X509IdentityToken_Encoding_DefaultJson((int) 15143L),