You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/09/13 09:43:34 UTC

[incubator-plc4x] 01/05: added convenience methods for easily building of requests

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

sruehl pushed a commit to branch feature/api-redesign-chris-c
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit be3f36523a712b83807cd4c44891bef08677f1d9
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Sep 13 10:54:55 2018 +0200

    added convenience methods for easily building of requests
---
 .../plc4x/java/api/connection/PlcReader.java       | 13 +++++++++
 .../plc4x/java/api/connection/PlcSubscriber.java   | 31 +++++++++++++++++++---
 .../plc4x/java/api/connection/PlcWriter.java       | 13 +++++++++
 3 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
index 609ec6b..d326409 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
@@ -22,6 +22,7 @@ import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
 
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * Interface implemented by all PlcConnections that are able to read from remote resources.
@@ -36,6 +37,18 @@ public interface PlcReader {
      */
     CompletableFuture<PlcReadResponse<?>> read(PlcReadRequest readRequest);
 
+    /**
+     * Reads a requested value from a PLC.
+     *
+     * @param readRequestBuilderConsumer consumer which can be used to build requests.
+     * @return a {@link CompletableFuture} giving async access to the returned value.
+     */
+    default CompletableFuture<PlcReadResponse<?>> read(Consumer<PlcReadRequest.Builder> readRequestBuilderConsumer) {
+        PlcReadRequest.Builder requestBuilder = readRequestBuilder();
+        readRequestBuilderConsumer.accept(requestBuilder);
+        return read(requestBuilder.build());
+    }
+
     PlcReadRequest.Builder readRequestBuilder();
 
 }
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
index 818bc07..9cca159 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
@@ -40,6 +40,18 @@ public interface PlcSubscriber {
     CompletableFuture<PlcSubscriptionResponse> subscribe(PlcSubscriptionRequest subscriptionRequest);
 
     /**
+     * Subscribes to fields on the PLC.
+     *
+     * @param plcSubscriptionRequestBuilderConsumer consumer which can be used to build requests.
+     * @return subscription response containing a subscription response item for each subscription request item.
+     */
+    default CompletableFuture<PlcSubscriptionResponse> subscribe(Consumer<PlcSubscriptionRequest.Builder> plcSubscriptionRequestBuilderConsumer) {
+        PlcSubscriptionRequest.Builder builder = subscriptionRequestBuilder();
+        plcSubscriptionRequestBuilderConsumer.accept(builder);
+        return subscribe(builder.build());
+    }
+
+    /**
      * Unsubscribes from fields on the PLC. For unsubscribing the unsubscription request uses the subscription
      * handle returned as part of the subscription response item.
      *
@@ -49,11 +61,24 @@ public interface PlcSubscriber {
     CompletableFuture<PlcUnsubscriptionResponse> unsubscribe(PlcUnsubscriptionRequest unsubscriptionRequest);
 
     /**
+     * Unsubscribes from fields on the PLC. For unsubscribing the unsubscription request uses the subscription
+     * handle returned as part of the subscription response item.
+     *
+     * @param plcSubscriptionRequestBuilderConsumer consumer which can be used to build requests.
+     * @return unsubscription response containing a unsubscription response item for each unsubscription request item.
+     */
+    default CompletableFuture<PlcUnsubscriptionResponse> unsubscribe(Consumer<PlcUnsubscriptionRequest.Builder> plcSubscriptionRequestBuilderConsumer) {
+        PlcUnsubscriptionRequest.Builder builder = unsubscriptionRequestBuilder();
+        plcSubscriptionRequestBuilderConsumer.accept(builder);
+        return unsubscribe(builder.build());
+    }
+
+    /**
      * Convenience method to subscribe a {@link Consumer} to all fields of the subscription.
      *
      * @param subscriptionRequest subscription request
-     * @param consumer consumer for all {@link PlcSubscriptionEvent}s
-     * @throws ExecutionException something went wrong.
+     * @param consumer            consumer for all {@link PlcSubscriptionEvent}s
+     * @throws ExecutionException   something went wrong.
      * @throws InterruptedException something went wrong.
      */
     default void register(PlcSubscriptionRequest subscriptionRequest, Consumer<PlcSubscriptionEvent> consumer) throws ExecutionException, InterruptedException {
@@ -61,7 +86,7 @@ public interface PlcSubscriber {
         register(consumer, plcSubscriptionResponse.getSubscriptionHandles().toArray(new PlcSubscriptionHandle[0]));
     }
 
-    PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, PlcSubscriptionHandle... handle);
+    PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, PlcSubscriptionHandle... handles);
 
     void unregister(PlcConsumerRegistration registration);
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
index 956e249..e974939 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
@@ -22,6 +22,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * Interface implemented by all PlcConnections that are able to write to remote resources.
@@ -36,6 +37,18 @@ public interface PlcWriter {
      */
     CompletableFuture<PlcWriteResponse<?>> write(PlcWriteRequest writeRequest);
 
+    /**
+     * Writes a given value to a PLC.
+     *
+     * @param writeRequestBuilderConsumer consumer which can be used to build requests.
+     * @return a {@link CompletableFuture} giving async access to the response of the write operation.
+     */
+    default CompletableFuture<PlcWriteResponse<?>> write(Consumer<PlcWriteRequest.Builder> writeRequestBuilderConsumer) {
+        PlcWriteRequest.Builder requestBuilder = writeRequestBuilder();
+        writeRequestBuilderConsumer.accept(requestBuilder);
+        return write(requestBuilder.build());
+    }
+
     PlcWriteRequest.Builder writeRequestBuilder();
 
 }