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 2020/08/11 13:59:03 UTC

[plc4x] 02/07: - Added some code to the GeneratedDriverByteToMessageCodec that captures and logs errors during serialization of messages (Mostly happening during driver development)

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

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit a672bfabf4c0d13c75c33fd97fd7778d33d1e5fe
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Aug 11 14:22:32 2020 +0200

    - Added some code to the GeneratedDriverByteToMessageCodec that captures and logs errors during serialization of messages (Mostly happening during driver development)
---
 .../spi/GeneratedDriverByteToMessageCodec.java     | 24 +++++++++++++---------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
index b326b77..27e48c0 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
@@ -33,7 +33,7 @@ import java.util.List;
 
 public abstract class GeneratedDriverByteToMessageCodec<T extends Message> extends ByteToMessageCodec<T> {
 
-    private static final Logger logger = LoggerFactory.getLogger(GeneratedDriverByteToMessageCodec.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(GeneratedDriverByteToMessageCodec.class);
 
     private final boolean bigEndian;
     private final Object[] parserArgs;
@@ -47,16 +47,20 @@ public abstract class GeneratedDriverByteToMessageCodec<T extends Message> exten
     }
 
     @Override
-    protected void encode(ChannelHandlerContext ctx, T packet, ByteBuf byteBuf) throws Exception {
+    protected void encode(ChannelHandlerContext ctx, T packet, ByteBuf byteBuf) {
         WriteBuffer buffer = new WriteBuffer(packet.getLengthInBytes(), !bigEndian);
-        io.serialize(buffer, packet);
+        try {
+            io.serialize(buffer, packet);
+        } catch (Exception e) {
+            LOGGER.warn("Error encoding package [{}]: {}", packet, e.getMessage(), e);
+        }
         byteBuf.writeBytes(buffer.getData());
-        logger.debug("Sending bytes to PLC for message {} as data {}", packet, Hex.encodeHexString(buffer.getData()));
+        LOGGER.debug("Sending bytes to PLC for message {} as data {}", packet, Hex.encodeHexString(buffer.getData()));
     }
 
     @Override
-    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> out) throws Exception {
-        logger.trace("Receiving bytes, trying to decode Message...");
+    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> out) {
+        LOGGER.trace("Receiving bytes, trying to decode Message...");
         // As long as there is data available, continue checking the content.
         while(byteBuf.readableBytes() > 0) {
             byte[] bytes = null;
@@ -85,8 +89,8 @@ public abstract class GeneratedDriverByteToMessageCodec<T extends Message> exten
                 }
             } catch (Exception e) {
                 if(bytes != null) {
-                    logger.warn("Error decoding package with content [" + Hex.encodeHexString(bytes) + "]: "
-                        + e.getMessage(), e);
+                    LOGGER.warn("Error decoding package with content [{}]: {}",
+                        Hex.encodeHexString(bytes), e.getMessage(), e);
                 }
                 // Just remove any trailing junk ... if there is any.
                 removeRestOfCorruptPackage(byteBuf);
@@ -94,8 +98,8 @@ public abstract class GeneratedDriverByteToMessageCodec<T extends Message> exten
         }
     }
 
-    abstract protected int getPacketSize(ByteBuf byteBuf);
+    protected abstract int getPacketSize(ByteBuf byteBuf);
 
-    abstract protected void removeRestOfCorruptPackage(ByteBuf byteBuf);
+    protected abstract void removeRestOfCorruptPackage(ByteBuf byteBuf);
 
 }