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 2023/06/13 08:53:50 UTC

[plc4x] 01/02: refactor(plc4go/spi): improve code flow of read and write request

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit ee99a371eb168b897c6c1a0ee919d164207b2fcf
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jun 13 10:53:07 2023 +0200

    refactor(plc4go/spi): improve code flow of read and write request
---
 plc4go/spi/model/DefaultPlcReadRequest.go  | 11 +++++++----
 plc4go/spi/model/DefaultPlcWriteRequest.go | 10 ++++++----
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/plc4go/spi/model/DefaultPlcReadRequest.go b/plc4go/spi/model/DefaultPlcReadRequest.go
index 96aa1d0eb4..79952d9132 100644
--- a/plc4go/spi/model/DefaultPlcReadRequest.go
+++ b/plc4go/spi/model/DefaultPlcReadRequest.go
@@ -115,13 +115,17 @@ func (d *DefaultPlcReadRequest) Execute() <-chan apiModel.PlcReadRequestResult {
 }
 
 func (d *DefaultPlcReadRequest) ExecuteWithContext(ctx context.Context) <-chan apiModel.PlcReadRequestResult {
-	// Shortcut, if no interceptor is defined
-	if d.readRequestInterceptor == nil {
-		return d.reader.Read(ctx, d)
+	if d.readRequestInterceptor != nil {
+		return d.ExecuteWithContextAndInterceptor(ctx)
 	}
 
+	return d.reader.Read(ctx, d)
+}
+
+func (d *DefaultPlcReadRequest) ExecuteWithContextAndInterceptor(ctx context.Context) <-chan apiModel.PlcReadRequestResult {
 	// Split the requests up into multiple ones.
 	readRequests := d.readRequestInterceptor.InterceptReadRequest(ctx, d)
+
 	// Shortcut for single-request-requests
 	if len(readRequests) == 1 {
 		return d.reader.Read(ctx, readRequests[0])
@@ -160,6 +164,5 @@ func (d *DefaultPlcReadRequest) ExecuteWithContext(ctx context.Context) <-chan a
 		// Return the final result
 		resultChannel <- result
 	}()
-
 	return resultChannel
 }
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest.go b/plc4go/spi/model/DefaultPlcWriteRequest.go
index 54a3f979d7..c86de4cf45 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequest.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequest.go
@@ -137,11 +137,14 @@ func (d *DefaultPlcWriteRequest) Execute() <-chan apiModel.PlcWriteRequestResult
 }
 
 func (d *DefaultPlcWriteRequest) ExecuteWithContext(ctx context.Context) <-chan apiModel.PlcWriteRequestResult {
-	// Shortcut, if no interceptor is defined
-	if d.writeRequestInterceptor == nil {
-		return d.writer.Write(ctx, d)
+	if d.writeRequestInterceptor != nil {
+		return d.ExecuteWithContextAndInterceptor(ctx)
 	}
 
+	return d.writer.Write(ctx, d)
+}
+
+func (d *DefaultPlcWriteRequest) ExecuteWithContextAndInterceptor(ctx context.Context) <-chan apiModel.PlcWriteRequestResult {
 	// Split the requests up into multiple ones.
 	writeRequests := d.writeRequestInterceptor.InterceptWriteRequest(ctx, d)
 	// Shortcut for single-request-requests
@@ -182,7 +185,6 @@ func (d *DefaultPlcWriteRequest) ExecuteWithContext(ctx context.Context) <-chan
 		// Return the final result
 		resultChannel <- result
 	}()
-
 	return resultChannel
 }