This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch feature/io-model in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/feature/io-model by this push: new fd6c519 - Introduced a base class for the entry level protocols fd6c519 is described below commit fd6c519e3f5908c5fb535e4037ba2c93b447defb Author: Christofer Dutz <christofer.d...@c-ware.de> AuthorDate: Tue Dec 18 08:33:02 2018 +0100 - Introduced a base class for the entry level protocols --- .../apache/plc4x/java/spi/BaseToByteProtocol.java} | 19 ++++----- .../org/apache/plc4x/java/spi/ToByteProtocol.java | 28 ------------- .../java/isoontcp/protocol/IsoOnTcpProtocol.java | 49 +++------------------- .../isoontcp/protocol/model/IsoOnTcpMessage.java | 1 - 4 files changed, 14 insertions(+), 83 deletions(-) diff --git a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/BaseToByteProtocol.java similarity index 80% copy from plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java copy to plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/BaseToByteProtocol.java index f2f1607..7cd3496 100644 --- a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java +++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/BaseToByteProtocol.java @@ -16,38 +16,35 @@ specific language governing permissions and limitations under the License. */ -package org.apache.plc4x.java.isoontcp.protocol; + +package org.apache.plc4x.java.spi; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.channel.ChannelHandlerContext; import org.apache.plc4x.java.api.exceptions.PlcProtocolException; import org.apache.plc4x.java.base.PlcByteToMessageCodec; -import org.apache.plc4x.java.isoontcp.protocol.model.IsoOnTcpMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -public class IsoOnTcpProtocol extends PlcByteToMessageCodec<IsoOnTcpMessage> { +public abstract class BaseToByteProtocol<T> extends PlcByteToMessageCodec<T> { - private static final Logger logger = LoggerFactory.getLogger(IsoOnTcpProtocol.class); + private static final Logger logger = LoggerFactory.getLogger(BaseToByteProtocol.class); - private final IsoOnTcpMessage.ModelIO rootModelIO; - public IsoOnTcpProtocol() { - rootModelIO = new IsoOnTcpMessage.ModelIO(); - } + protected abstract ModelIO<T> getRootModelIo(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Encoding //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @Override - protected void encode(ChannelHandlerContext ctx, IsoOnTcpMessage in, ByteBuf out) throws Exception { + protected void encode(ChannelHandlerContext ctx, T in, ByteBuf out) throws Exception { logger.debug("ISO on TCP Message sent"); try { - rootModelIO.encode(in, out); + getRootModelIo().encode(in, out); } catch (PlcProtocolException e) { exceptionCaught(ctx, e); } @@ -64,7 +61,7 @@ public class IsoOnTcpProtocol extends PlcByteToMessageCodec<IsoOnTcpMessage> { } logger.debug("ISO on TCP Message received"); try { - IsoOnTcpMessage decodedMessage = rootModelIO.decode(in); + T decodedMessage = getRootModelIo().decode(in); if(decodedMessage != null) { out.add(decodedMessage); } diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/ToByteProtocol.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/ToByteProtocol.java deleted file mode 100644 index 6f4ed0f..0000000 --- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/spi/ToByteProtocol.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - 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 - - http://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.spi; - -import org.apache.plc4x.java.base.PlcByteToMessageCodec; - -public abstract class ToByteProtocol<T> extends PlcByteToMessageCodec<T> { - - - -} diff --git a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java b/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java index f2f1607..98c2883 100644 --- a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java +++ b/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/IsoOnTcpProtocol.java @@ -18,20 +18,12 @@ */ package org.apache.plc4x.java.isoontcp.protocol; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.channel.ChannelHandlerContext; -import org.apache.plc4x.java.api.exceptions.PlcProtocolException; -import org.apache.plc4x.java.base.PlcByteToMessageCodec; -import org.apache.plc4x.java.isoontcp.protocol.model.IsoOnTcpMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -public class IsoOnTcpProtocol extends PlcByteToMessageCodec<IsoOnTcpMessage> { +import org.apache.plc4x.java.isoontcp.protocol.model.IsoOnTcpMessage; +import org.apache.plc4x.java.spi.BaseToByteProtocol; +import org.apache.plc4x.java.spi.ModelIO; - private static final Logger logger = LoggerFactory.getLogger(IsoOnTcpProtocol.class); +public class IsoOnTcpProtocol extends BaseToByteProtocol<IsoOnTcpMessage> { private final IsoOnTcpMessage.ModelIO rootModelIO; @@ -39,38 +31,9 @@ public class IsoOnTcpProtocol extends PlcByteToMessageCodec<IsoOnTcpMessage> { rootModelIO = new IsoOnTcpMessage.ModelIO(); } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Encoding - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - @Override - protected void encode(ChannelHandlerContext ctx, IsoOnTcpMessage in, ByteBuf out) throws Exception { - logger.debug("ISO on TCP Message sent"); - try { - rootModelIO.encode(in, out); - } catch (PlcProtocolException e) { - exceptionCaught(ctx, e); - } - } - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Decoding - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { - if(logger.isTraceEnabled()) { - logger.trace("Got Data: {}", ByteBufUtil.hexDump(in)); - } - logger.debug("ISO on TCP Message received"); - try { - IsoOnTcpMessage decodedMessage = rootModelIO.decode(in); - if(decodedMessage != null) { - out.add(decodedMessage); - } - } catch (PlcProtocolException e) { - exceptionCaught(ctx, e); - } + protected ModelIO<IsoOnTcpMessage> getRootModelIo() { + return rootModelIO; } } diff --git a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/model/IsoOnTcpMessage.java b/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/model/IsoOnTcpMessage.java index e855244..7a071e7 100644 --- a/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/model/IsoOnTcpMessage.java +++ b/plc4j/protocols/iso-on-tcp/src/main/java/org/apache/plc4x/java/isoontcp/protocol/model/IsoOnTcpMessage.java @@ -87,7 +87,6 @@ public class IsoOnTcpMessage extends PlcRawMessage { } return null; } - } }