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