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/08/01 16:29:53 UTC

[plc4x] branch develop updated (2c34096fe9 -> 7bb17deee2)

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

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


    from 2c34096fe9 feat(plc4go/gen): add support for []byte
     new 07130ed03a feat(plc4go/gen): add support for non string keyed maps
     new 7bb17deee2 feat(plc4go/opcua): add more stringers to structs

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4go/internal/cbus/Subscriber.go                 |  2 +-
 plc4go/internal/cbus/Subscriber_plc4xgen.go        | 27 ++++++++++++++++
 plc4go/internal/opcua/EncryptionHandler.go         |  4 +++
 plc4go/internal/opcua/SecureChannel.go             |  2 +-
 .../opcua/SecureChannelTransactionManager.go       |  3 +-
 .../SecureChannelTransactionManager_plc4xgen.go}   | 37 ++++++++++++----------
 plc4go/internal/opcua/SecureChannel_plc4xgen.go    |  7 ++--
 plc4go/internal/opcua/Subscriber.go                |  2 +-
 plc4go/internal/opcua/Subscriber_plc4xgen.go       | 27 ++++++++++++++++
 plc4go/pkg/api/plcDriverManger_plc4xgen.go         |  6 ++--
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |  6 ++--
 .../DefaultPlcBrowseRequestBuilder_plc4xgen.go     |  3 +-
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |  3 +-
 .../spi/model/DefaultPlcBrowseResponse_plc4xgen.go |  3 +-
 .../spi/model/DefaultPlcDiscoveryItem_plc4xgen.go  |  6 ++--
 .../model/DefaultPlcReadRequestBuilder_plc4xgen.go |  6 ++--
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |  3 +-
 .../model/DefaultPlcSubscriptionEvent_plc4xgen.go  |  3 +-
 plc4go/spi/model/DefaultPlcSubscriptionRequest.go  |  2 +-
 ...efaultPlcSubscriptionRequestBuilder_plc4xgen.go | 26 ++++++++++++---
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |  6 ++--
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |  3 +-
 plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go  |  3 +-
 .../DefaultPlcWriteRequestBuilder_plc4xgen.go      |  9 ++++--
 .../spi/model/DefaultPlcWriteRequest_plc4xgen.go   |  3 +-
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |  3 +-
 plc4go/tools/plc4xgenerator/gen.go                 | 15 ++++++---
 27 files changed, 163 insertions(+), 57 deletions(-)
 copy plc4go/{spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go => internal/opcua/SecureChannelTransactionManager_plc4xgen.go} (53%)


[plc4x] 01/02: feat(plc4go/gen): add support for non string keyed maps

Posted by sr...@apache.org.
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 07130ed03ac441565638f3c4c7c9b91721c8f7e8
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Aug 1 18:29:21 2023 +0200

    feat(plc4go/gen): add support for non string keyed maps
---
 plc4go/internal/cbus/Subscriber.go                 |  2 +-
 plc4go/internal/cbus/Subscriber_plc4xgen.go        | 27 ++++++++++++++++++++++
 plc4go/pkg/api/plcDriverManger_plc4xgen.go         |  6 +++--
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |  6 +++--
 .../DefaultPlcBrowseRequestBuilder_plc4xgen.go     |  3 ++-
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |  3 ++-
 .../spi/model/DefaultPlcBrowseResponse_plc4xgen.go |  3 ++-
 .../spi/model/DefaultPlcDiscoveryItem_plc4xgen.go  |  6 +++--
 .../model/DefaultPlcReadRequestBuilder_plc4xgen.go |  6 +++--
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |  3 ++-
 .../model/DefaultPlcSubscriptionEvent_plc4xgen.go  |  3 ++-
 plc4go/spi/model/DefaultPlcSubscriptionRequest.go  |  2 +-
 ...efaultPlcSubscriptionRequestBuilder_plc4xgen.go | 26 +++++++++++++++++----
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |  6 +++--
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |  3 ++-
 plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go  |  3 ++-
 .../DefaultPlcWriteRequestBuilder_plc4xgen.go      |  9 +++++---
 .../spi/model/DefaultPlcWriteRequest_plc4xgen.go   |  3 ++-
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |  3 ++-
 plc4go/tools/plc4xgenerator/gen.go                 | 15 ++++++++----
 20 files changed, 106 insertions(+), 32 deletions(-)

diff --git a/plc4go/internal/cbus/Subscriber.go b/plc4go/internal/cbus/Subscriber.go
index fde8f8bc05..8ca29b091b 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -39,7 +39,7 @@ import (
 
 //go:generate go run ../../tools/plc4xgenerator/gen.go -type=Subscriber
 type Subscriber struct {
-	consumers     map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
+	consumers     map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer
 	addSubscriber func(subscriber *Subscriber)
 
 	consumersMutex sync.RWMutex
diff --git a/plc4go/internal/cbus/Subscriber_plc4xgen.go b/plc4go/internal/cbus/Subscriber_plc4xgen.go
index 53bc4edefb..d76c87cf19 100644
--- a/plc4go/internal/cbus/Subscriber_plc4xgen.go
+++ b/plc4go/internal/cbus/Subscriber_plc4xgen.go
@@ -42,6 +42,33 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	if err := writeBuffer.PushContext("Subscriber"); err != nil {
 		return err
 	}
+	if err := writeBuffer.PushContext("consumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
+	for _name, elem := range d.consumers {
+		name := fmt.Sprintf("%v", _name)
+
+		var elem any = elem
+		if serializable, ok := elem.(utils.Serializable); ok {
+			if err := writeBuffer.PushContext(name); err != nil {
+				return err
+			}
+			if err := serializable.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+				return err
+			}
+			if err := writeBuffer.PopContext(name); err != nil {
+				return err
+			}
+		} else {
+			elemAsString := fmt.Sprintf("%v", elem)
+			if err := writeBuffer.WriteString(name, uint32(len(elemAsString)*8), "UTF-8", elemAsString); err != nil {
+				return err
+			}
+		}
+	}
+	if err := writeBuffer.PopContext("consumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
 
 	if err := writeBuffer.WriteBit("addSubscriber", d.addSubscriber != nil); err != nil {
 		return err
diff --git a/plc4go/pkg/api/plcDriverManger_plc4xgen.go b/plc4go/pkg/api/plcDriverManger_plc4xgen.go
index ca16ab26c9..c1042deddc 100644
--- a/plc4go/pkg/api/plcDriverManger_plc4xgen.go
+++ b/plc4go/pkg/api/plcDriverManger_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *plcDriverManger) SerializeWithWriteBuffer(ctx context.Context, writeBuf
 	if err := writeBuffer.PushContext("drivers", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.drivers {
+	for _name, elem := range d.drivers {
+		name := _name
 		_value := fmt.Sprintf("%v", elem)
 
 		if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
@@ -58,7 +59,8 @@ func (d *plcDriverManger) SerializeWithWriteBuffer(ctx context.Context, writeBuf
 	if err := writeBuffer.PushContext("transports", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.transports {
+	for _name, elem := range d.transports {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
index 65ff4663a5..695569c335 100644
--- a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
@@ -84,7 +84,8 @@ func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, wri
 	if err := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.Children {
+	for _name, elem := range d.Children {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -110,7 +111,8 @@ func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, wri
 	if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.Options {
+	for _name, elem := range d.Options {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
index a9d69dd885..fa1f0ea27b 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcBrowseRequestBuilder) SerializeWithWriteBuffer(ctx context.Co
 	if err := writeBuffer.PushContext("queryStrings", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.queryStrings {
+	for _name, elem := range d.queryStrings {
+		name := _name
 
 		if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
 			return err
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
index 6f13649df7..307d715789 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
@@ -75,7 +75,8 @@ func (d *DefaultPlcBrowseRequest) SerializeWithWriteBuffer(ctx context.Context,
 	if err := writeBuffer.PushContext("queries", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.queries {
+	for _name, elem := range d.queries {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
index e34f01597d..9d59448e32 100644
--- a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
@@ -68,7 +68,8 @@ func (d *DefaultPlcBrowseResponse) SerializeWithWriteBuffer(ctx context.Context,
 	if err := writeBuffer.PushContext("results", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.results {
+	for _name, elem := range d.results {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
index 64963d9ffd..014ec63b7f 100644
--- a/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcDiscoveryItem_plc4xgen.go
@@ -53,7 +53,8 @@ func (d *DefaultPlcDiscoveryItem) SerializeWithWriteBuffer(ctx context.Context,
 	if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.Options {
+	for _name, elem := range d.Options {
+		name := _name
 		_value := fmt.Sprintf("%v", elem)
 
 		if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
@@ -70,7 +71,8 @@ func (d *DefaultPlcDiscoveryItem) SerializeWithWriteBuffer(ctx context.Context,
 	if err := writeBuffer.PushContext("attributes", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.Attributes {
+	for _name, elem := range d.Attributes {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
index 2ae90c109d..a060e54860 100644
--- a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcReadRequestBuilder) SerializeWithWriteBuffer(ctx context.Cont
 	if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tagAddresses {
+	for _name, elem := range d.tagAddresses {
+		name := _name
 
 		if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
 			return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcReadRequestBuilder) SerializeWithWriteBuffer(ctx context.Cont
 	if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tags {
+	for _name, elem := range d.tags {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
index 7b1d127788..344b55788a 100644
--- a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcReadResponse) SerializeWithWriteBuffer(ctx context.Context, w
 	if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.values {
+	for _name, elem := range d.values {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
index 347717d86d..91f666fcd4 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *DefaultPlcSubscriptionEvent) SerializeWithWriteBuffer(ctx context.Conte
 	if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.values {
+	for _name, elem := range d.values {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
index 55f24ff65e..8e5e9a9eb5 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
@@ -38,7 +38,7 @@ type DefaultPlcSubscriptionRequestBuilder struct {
 	tags                   map[string]apiModel.PlcSubscriptionTag
 	types                  map[string]apiModel.PlcSubscriptionType
 	intervals              map[string]time.Duration
-	preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
+	preRegisteredConsumers map[string][]apiModel.PlcSubscriptionEventConsumer
 }
 
 func NewDefaultPlcSubscriptionRequestBuilder(tagHandler spi.PlcTagHandler, valueHandler spi.PlcValueHandler, subscriber spi.PlcSubscriber) apiModel.PlcSubscriptionRequestBuilder {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
index 5d94807233..629d0a8fcb 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
 	if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tagAddresses {
+	for _name, elem := range d.tagAddresses {
+		name := _name
 
 		if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
 			return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
 	if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tags {
+	for _name, elem := range d.tags {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -94,7 +96,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
 	if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.types {
+	for _name, elem := range d.types {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -120,7 +123,8 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
 	if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.intervals {
+	for _name, elem := range d.intervals {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -143,6 +147,20 @@ func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx cont
 	if err := writeBuffer.PopContext("intervals", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
+	if err := writeBuffer.PushContext("preRegisteredConsumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
+	for _name, elem := range d.preRegisteredConsumers {
+		name := _name
+		_value := fmt.Sprintf("%v", elem)
+
+		if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
+			return err
+		}
+	}
+	if err := writeBuffer.PopContext("preRegisteredConsumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
 	if err := writeBuffer.PopContext("PlcSubscriptionRequestBuilder"); err != nil {
 		return err
 	}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
index c05822e2bf..e956f3a5d0 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
@@ -48,7 +48,8 @@ func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Con
 	if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.types {
+	for _name, elem := range d.types {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -74,7 +75,8 @@ func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Con
 	if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.intervals {
+	for _name, elem := range d.intervals {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
index 29f23c1933..4568376a19 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcSubscriptionResponse) SerializeWithWriteBuffer(ctx context.Co
 	if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.values {
+	for _name, elem := range d.values {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
index c96fe5e9eb..1be3d59e12 100644
--- a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
@@ -45,7 +45,8 @@ func (d *DefaultPlcTagRequest) SerializeWithWriteBuffer(ctx context.Context, wri
 	if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tags {
+	for _name, elem := range d.tags {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
index dc5205e71b..4c49ea3c67 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
@@ -56,7 +56,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
 	if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tagAddresses {
+	for _name, elem := range d.tagAddresses {
+		name := _name
 
 		if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
 			return err
@@ -68,7 +69,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
 	if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.tags {
+	for _name, elem := range d.tags {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
@@ -94,7 +96,8 @@ func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Con
 	if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.values {
+	for _name, elem := range d.values {
+		name := _name
 		_value := fmt.Sprintf("%v", elem)
 
 		if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
index 306e898538..b1cc945790 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
@@ -48,7 +48,8 @@ func (d *DefaultPlcWriteRequest) SerializeWithWriteBuffer(ctx context.Context, w
 	if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.values {
+	for _name, elem := range d.values {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
index 4ddba20792..335c543df0 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
@@ -64,7 +64,8 @@ func (d *DefaultPlcWriteResponse) SerializeWithWriteBuffer(ctx context.Context,
 	if err := writeBuffer.PushContext("responseCodes", utils.WithRenderAsList(true)); err != nil {
 		return err
 	}
-	for name, elem := range d.responseCodes {
+	for _name, elem := range d.responseCodes {
+		name := _name
 
 		var elem any = elem
 		if serializable, ok := elem.(utils.Serializable); ok {
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index bf83a678e4..de4f403d89 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -347,12 +347,19 @@ func (g *Generator) generate(typeName string) {
 				g.Printf("if err := writeBuffer.PopContext(%s, utils.WithRenderAsList(true)); err != nil {\n\t\treturn err\n\t}\n", fieldNameUntitled)
 			}
 		case *ast.MapType:
-			if ident, ok := fieldType.Key.(*ast.Ident); !ok || ident.Name != "string" {
-				fmt.Printf("Only string types are supported for maps right now")
-			}
 			g.Printf("if err := writeBuffer.PushContext(%s, utils.WithRenderAsList(true)); err != nil {\n\t\treturn err\n\t}\n", fieldNameUntitled)
 			// TODO: we use serializable or strings as we don't want to over-complex this
-			g.Printf("for name, elem := range d.%s {\n", fieldName)
+			g.Printf("for _name, elem := range d.%s {\n", fieldName)
+			if ident, ok := fieldType.Key.(*ast.Ident); !ok || ident.Name != "string" {
+				switch ident.Name {
+				case "uint", "uint8", "uint16", "uint32", "uint64", "int", "int8", "int16", "int32", "int64": // TODO: add other types
+					g.Printf("\t\tname := fmt.Sprintf(\"%s\", _name)\n", "%v")
+				default:
+					g.Printf("\t\tname := fmt.Sprintf(\"%s\", &_name)\n", "%v")
+				}
+			} else {
+				g.Printf("\t\tname := _name\n")
+			}
 			switch eltType := fieldType.Value.(type) {
 			case *ast.StarExpr, *ast.SelectorExpr:
 				g.Printf("\n\t\tvar elem any = elem\n")


[plc4x] 02/02: feat(plc4go/opcua): add more stringers to structs

Posted by sr...@apache.org.
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 7bb17deee22e0932e962c261ca5cf4952f3641ae
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Aug 1 18:29:45 2023 +0200

    feat(plc4go/opcua): add more stringers to structs
---
 plc4go/internal/opcua/EncryptionHandler.go         |  4 +++
 plc4go/internal/opcua/SecureChannel.go             |  2 +-
 .../opcua/SecureChannelTransactionManager.go       |  3 +-
 ...=> SecureChannelTransactionManager_plc4xgen.go} | 35 +++++++++++++++-------
 plc4go/internal/opcua/SecureChannel_plc4xgen.go    |  7 ++---
 plc4go/internal/opcua/Subscriber.go                |  2 +-
 plc4go/internal/opcua/Subscriber_plc4xgen.go       | 27 +++++++++++++++++
 7 files changed, 62 insertions(+), 18 deletions(-)

diff --git a/plc4go/internal/opcua/EncryptionHandler.go b/plc4go/internal/opcua/EncryptionHandler.go
index bdad7b63d1..e209120e88 100644
--- a/plc4go/internal/opcua/EncryptionHandler.go
+++ b/plc4go/internal/opcua/EncryptionHandler.go
@@ -209,3 +209,7 @@ func (h *EncryptionHandler) encryptBlock(buf utils.WriteBufferByteBased, data []
 func (h *EncryptionHandler) sign(data []byte) ([]byte, error) {
 	return h.clientPrivateKey.Sign(rand.Reader, data, crypto.SHA256)
 }
+
+func (h *EncryptionHandler) String() string {
+	return "EncryptionHandler{" + h.securityPolicy + "}"
+}
diff --git a/plc4go/internal/opcua/SecureChannel.go b/plc4go/internal/opcua/SecureChannel.go
index 1efbcc4ab0..46278043c1 100644
--- a/plc4go/internal/opcua/SecureChannel.go
+++ b/plc4go/internal/opcua/SecureChannel.go
@@ -111,7 +111,7 @@ type SecureChannel struct {
 	certificateThumbprint     readWriteModel.PascalByteString
 	checkedEndpoints          bool
 	encryptionHandler         *EncryptionHandler
-	configuration             Configuration
+	configuration             Configuration `stringer:"true"`
 	channelId                 atomic.Int32
 	tokenId                   atomic.Int32
 	authenticationToken       readWriteModel.NodeIdTypeDefinition
diff --git a/plc4go/internal/opcua/SecureChannelTransactionManager.go b/plc4go/internal/opcua/SecureChannelTransactionManager.go
index a20a69cb21..3214d79fd1 100644
--- a/plc4go/internal/opcua/SecureChannelTransactionManager.go
+++ b/plc4go/internal/opcua/SecureChannelTransactionManager.go
@@ -27,6 +27,7 @@ import (
 	"github.com/rs/zerolog"
 )
 
+//go:generate go run ../../tools/plc4xgenerator/gen.go -type=SecureChannelTransactionManager
 type SecureChannelTransactionManager struct {
 	transactionIdentifierGenerator atomic.Int32
 	requestIdentifierGenerator     atomic.Int32
@@ -35,7 +36,7 @@ type SecureChannelTransactionManager struct {
 
 	lock sync.Mutex
 
-	log zerolog.Logger
+	log zerolog.Logger `ignore:"true"`
 }
 
 func NewSecureChannelTransactionManager(log zerolog.Logger) *SecureChannelTransactionManager {
diff --git a/plc4go/internal/opcua/Subscriber_plc4xgen.go b/plc4go/internal/opcua/SecureChannelTransactionManager_plc4xgen.go
similarity index 52%
copy from plc4go/internal/opcua/Subscriber_plc4xgen.go
copy to plc4go/internal/opcua/SecureChannelTransactionManager_plc4xgen.go
index 7e3562e832..5564b5b0ca 100644
--- a/plc4go/internal/opcua/Subscriber_plc4xgen.go
+++ b/plc4go/internal/opcua/SecureChannelTransactionManager_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=Subscriber"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=SecureChannelTransactionManager"; DO NOT EDIT.
 
 package opcua
 
@@ -30,7 +30,7 @@ import (
 
 var _ = fmt.Printf
 
-func (d *Subscriber) Serialize() ([]byte, error) {
+func (d *SecureChannelTransactionManager) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
 	if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
@@ -38,28 +38,43 @@ func (d *Subscriber) Serialize() ([]byte, error) {
 	return wb.GetBytes(), nil
 }
 
-func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
-	if err := writeBuffer.PushContext("Subscriber"); err != nil {
+func (d *SecureChannelTransactionManager) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	if err := writeBuffer.PushContext("SecureChannelTransactionManager"); err != nil {
 		return err
 	}
 
-	if err := writeBuffer.WriteBit("addSubscriber", d.addSubscriber != nil); err != nil {
+	if err := writeBuffer.WriteInt32("transactionIdentifierGenerator", 32, d.transactionIdentifierGenerator.Load()); err != nil {
 		return err
 	}
-	{
-		_value := fmt.Sprintf("%v", d.messageCodec)
 
-		if err := writeBuffer.WriteString("messageCodec", uint32(len(_value)*8), "UTF-8", _value); err != nil {
+	if err := writeBuffer.WriteInt32("requestIdentifierGenerator", 32, d.requestIdentifierGenerator.Load()); err != nil {
+		return err
+	}
+
+	if err := writeBuffer.WriteInt32("activeTransactionId", 32, d.activeTransactionId.Load()); err != nil {
+		return err
+	}
+	if err := writeBuffer.PushContext("queue", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
+	for _name, elem := range d.queue {
+		name := fmt.Sprintf("%v", _name)
+		_value := fmt.Sprintf("%v", elem)
+
+		if err := writeBuffer.WriteString(name, uint32(len(_value)*8), "UTF-8", _value); err != nil {
 			return err
 		}
 	}
-	if err := writeBuffer.PopContext("Subscriber"); err != nil {
+	if err := writeBuffer.PopContext("queue", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
+	if err := writeBuffer.PopContext("SecureChannelTransactionManager"); err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d *Subscriber) String() string {
+func (d *SecureChannelTransactionManager) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
 	if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
 		return err.Error()
diff --git a/plc4go/internal/opcua/SecureChannel_plc4xgen.go b/plc4go/internal/opcua/SecureChannel_plc4xgen.go
index 4eb57406b0..7c591f4f34 100644
--- a/plc4go/internal/opcua/SecureChannel_plc4xgen.go
+++ b/plc4go/internal/opcua/SecureChannel_plc4xgen.go
@@ -204,12 +204,9 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 			return err
 		}
 	}
-	{
-		_value := fmt.Sprintf("%v", d.configuration)
 
-		if err := writeBuffer.WriteString("configuration", uint32(len(_value)*8), "UTF-8", _value); err != nil {
-			return err
-		}
+	if err := writeBuffer.WriteString("configuration", uint32(len(d.configuration.String())*8), "UTF-8", d.configuration.String()); err != nil {
+		return err
 	}
 
 	if err := writeBuffer.WriteInt32("channelId", 32, d.channelId.Load()); err != nil {
diff --git a/plc4go/internal/opcua/Subscriber.go b/plc4go/internal/opcua/Subscriber.go
index 5b88325238..ebf3921110 100644
--- a/plc4go/internal/opcua/Subscriber.go
+++ b/plc4go/internal/opcua/Subscriber.go
@@ -39,7 +39,7 @@ import (
 
 //go:generate go run ../../tools/plc4xgenerator/gen.go -type=Subscriber
 type Subscriber struct {
-	consumers     map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer `ignore:"true"`
+	consumers     map[*spiModel.DefaultPlcConsumerRegistration]apiModel.PlcSubscriptionEventConsumer
 	addSubscriber func(subscriber *Subscriber)
 	messageCodec  *MessageCodec
 	subscriptions map[uint32]*SubscriptionHandle `ignore:"true"` // TODO: we don't have support for non string key maps yet
diff --git a/plc4go/internal/opcua/Subscriber_plc4xgen.go b/plc4go/internal/opcua/Subscriber_plc4xgen.go
index 7e3562e832..48ffad27dd 100644
--- a/plc4go/internal/opcua/Subscriber_plc4xgen.go
+++ b/plc4go/internal/opcua/Subscriber_plc4xgen.go
@@ -42,6 +42,33 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	if err := writeBuffer.PushContext("Subscriber"); err != nil {
 		return err
 	}
+	if err := writeBuffer.PushContext("consumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
+	for _name, elem := range d.consumers {
+		name := fmt.Sprintf("%v", _name)
+
+		var elem any = elem
+		if serializable, ok := elem.(utils.Serializable); ok {
+			if err := writeBuffer.PushContext(name); err != nil {
+				return err
+			}
+			if err := serializable.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+				return err
+			}
+			if err := writeBuffer.PopContext(name); err != nil {
+				return err
+			}
+		} else {
+			elemAsString := fmt.Sprintf("%v", elem)
+			if err := writeBuffer.WriteString(name, uint32(len(elemAsString)*8), "UTF-8", elemAsString); err != nil {
+				return err
+			}
+		}
+	}
+	if err := writeBuffer.PopContext("consumers", utils.WithRenderAsList(true)); err != nil {
+		return err
+	}
 
 	if err := writeBuffer.WriteBit("addSubscriber", d.addSubscriber != nil); err != nil {
 		return err