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

justinchen pushed a commit to branch client-opc
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/client-opc by this push:
     new ef67611077b trilog
ef67611077b is described below

commit ef67611077b77dba33111f61a5c27d338741d829
Author: Caideyipi <[email protected]>
AuthorDate: Mon Dec 22 17:06:16 2025 +0800

    trilog
---
 .../protocol/opcua/client/IoTDBOpcUaClient.java    |  4 +---
 .../sink/protocol/opcua/server/OpcUaNameSpace.java | 25 ++++++++++++++++------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/client/IoTDBOpcUaClient.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/client/IoTDBOpcUaClient.java
index cc6651338da..d7f02d1ddd0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/client/IoTDBOpcUaClient.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/client/IoTDBOpcUaClient.java
@@ -76,9 +76,7 @@ public class IoTDBOpcUaClient {
   }
 
   // Only support tree model & client-server
-  public void transfer(final Tablet tablet, final OpcUaSink sink) throws 
UaException {
-
-  }
+  public void transfer(final Tablet tablet, final OpcUaSink sink) throws 
UaException {}
 
   /////////////////////////////// Getter ///////////////////////////////
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
index 6a4581dec46..c60680a1f1e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
@@ -98,14 +98,18 @@ public class OpcUaNameSpace extends 
ManagedNamespaceWithLifecycle {
   public void transfer(final Tablet tablet, final boolean isTableModel, final 
OpcUaSink sink)
       throws UaException {
     if (sink.isClientServerModel()) {
-      transferTabletForClientServerModel(tablet, isTableModel, sink);
+      transferTabletForClientServerModel(
+          tablet, isTableModel, sink, 
this::transferTabletRowForClientServerModel);
     } else {
       transferTabletForPubSubModel(tablet, isTableModel, sink);
     }
   }
 
-  private void transferTabletForClientServerModel(
-      final Tablet tablet, final boolean isTableModel, final OpcUaSink sink) {
+  public static void transferTabletForClientServerModel(
+      final Tablet tablet,
+      final boolean isTableModel,
+      final OpcUaSink sink,
+      final TabletRowConsumer consumer) {
     final List<IMeasurementSchema> schemas = tablet.getSchemas();
     final List<IMeasurementSchema> newSchemas = new ArrayList<>();
     if (!isTableModel) {
@@ -126,8 +130,7 @@ public class OpcUaNameSpace extends 
ManagedNamespaceWithLifecycle {
         }
       }
 
-      transferTabletRowForClientServerModel(
-          tablet.getDeviceId().split("\\."), newSchemas, timestamps, values, 
sink);
+      consumer.accept(tablet.getDeviceId().split("\\."), newSchemas, 
timestamps, values, sink);
     } else {
       new PipeTableModelTabletEventSorter(tablet).sortByTimestampIfNecessary();
 
@@ -150,7 +153,7 @@ public class OpcUaNameSpace extends 
ManagedNamespaceWithLifecycle {
         }
 
         final int finalI = i;
-        transferTabletRowForClientServerModel(
+        consumer.accept(
             folderSegments,
             newSchemas,
             Collections.singletonList(tablet.getTimestamp(i)),
@@ -167,6 +170,16 @@ public class OpcUaNameSpace extends 
ManagedNamespaceWithLifecycle {
     }
   }
 
+  @FunctionalInterface
+  public interface TabletRowConsumer {
+    void accept(
+        final String[] segments,
+        final List<IMeasurementSchema> measurementSchemas,
+        final List<Long> timestamps,
+        final List<Object> values,
+        final OpcUaSink sink);
+  }
+
   private void transferTabletRowForClientServerModel(
       final String[] segments,
       final List<IMeasurementSchema> measurementSchemas,

Reply via email to