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;
     }
 
 }

Reply via email to