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
}