This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/master by this push: new d555c3e Made the S7 driver react on channel failures. d555c3e is described below commit d555c3e96d19ed55c1a5d03066b09bd2f29ac3de Author: Christofer Dutz <christofer.d...@c-ware.de> AuthorDate: Mon Aug 27 10:39:59 2018 +0200 Made the S7 driver react on channel failures. --- .../plc4x/java/s7/connection/S7PlcConnection.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java index 72b8c53..f1474b3 100644 --- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java +++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java @@ -256,20 +256,24 @@ public class S7PlcConnection extends AbstractPlcConnection implements PlcReader, @Override public CompletableFuture<PlcReadResponse> read(PlcReadRequest readRequest) { - CompletableFuture<PlcReadResponse> readFuture = new CompletableFuture<>(); + CompletableFuture<PlcReadResponse> future = new CompletableFuture<>(); PlcRequestContainer<PlcReadRequest, PlcReadResponse> container = - new PlcRequestContainer<>(readRequest, readFuture); - channel.writeAndFlush(container); - return readFuture; + new PlcRequestContainer<>(readRequest, future); + channel.writeAndFlush(container).addListener(f -> { + if (!f.isSuccess()) future.completeExceptionally(f.cause()); + }); + return future; } @Override public CompletableFuture<PlcWriteResponse> write(PlcWriteRequest writeRequest) { - CompletableFuture<PlcWriteResponse> writeFuture = new CompletableFuture<>(); + CompletableFuture<PlcWriteResponse> future = new CompletableFuture<>(); PlcRequestContainer<PlcWriteRequest, PlcWriteResponse> container = - new PlcRequestContainer<>(writeRequest, writeFuture); - channel.writeAndFlush(container); - return writeFuture; + new PlcRequestContainer<>(writeRequest, future); + channel.writeAndFlush(container).addListener(f -> { + if (!f.isSuccess()) future.completeExceptionally(f.cause()); + }); + return future; } }