From d5c1b301715c9d8fe5e3acd3e56cddd0f22f74f8 Mon Sep 17 00:00:00 2001 From: Christofer Dutz Date: Wed, 14 Aug 2024 13:09:31 +0200 Subject: [PATCH] feat: Forwarded the event listener feature to the connection wrapped by the cache. --- .../java/utils/cache/ConnectionContainer.java | 15 +++++++++++++++ .../java/utils/cache/LeasedPlcConnection.java | 14 +++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java index 2547651e402..22230e9010e 100644 --- a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java +++ b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java @@ -18,10 +18,12 @@ */ package org.apache.plc4x.java.utils.cache; +import org.apache.plc4x.java.api.EventPlcConnection; import org.apache.plc4x.java.api.PlcConnection; import org.apache.plc4x.java.api.PlcConnectionManager; import org.apache.plc4x.java.api.exceptions.PlcConnectionException; import org.apache.plc4x.java.api.exceptions.PlcRuntimeException; +import org.apache.plc4x.java.api.listener.EventListener; import org.apache.plc4x.java.utils.cache.exceptions.PlcConnectionManagerClosedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -170,4 +172,17 @@ public void run() { } } + + public void addEventListener(EventListener listener) { + if((connection != null) && (connection instanceof EventPlcConnection)) { + ((EventPlcConnection) connection).addEventListener(listener); + } + } + + public void removeEventListener(EventListener listener) { + if((connection != null) && (connection instanceof EventPlcConnection)) { + ((EventPlcConnection) connection).removeEventListener(listener); + } + } + } diff --git a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java index 563d50d8572..05dbf4e963e 100644 --- a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java +++ b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/LeasedPlcConnection.java @@ -18,9 +18,11 @@ */ package org.apache.plc4x.java.utils.cache; +import org.apache.plc4x.java.api.EventPlcConnection; 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.listener.EventListener; import org.apache.plc4x.java.api.messages.*; import org.apache.plc4x.java.api.metadata.PlcConnectionMetadata; import org.apache.plc4x.java.api.model.PlcQuery; @@ -40,7 +42,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; -public class LeasedPlcConnection implements PlcConnection { +public class LeasedPlcConnection implements EventPlcConnection { private static final Logger log = LoggerFactory.getLogger(LeasedPlcConnection.class); private final ConnectionContainer connectionContainer; @@ -484,4 +486,14 @@ public PlcBrowseRequest.Builder addQuery(String name, String query) { }; } + @Override + public void addEventListener(EventListener listener) { + connectionContainer.addEventListener(listener); + } + + @Override + public void removeEventListener(EventListener listener) { + connectionContainer.removeEventListener(listener); + } + }