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
commit be3f36523a712b83807cd4c44891bef08677f1d9 Author: Sebastian Rühl <sru...@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(); }