You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/02/10 08:08:24 UTC
[plc4x] branch fix/cdutz/reenable-golang-driver-testsuites updated: refactor(plc4j): Continued porting the code to using contexts ... tried to fix the EIP Integration-Tests
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch fix/cdutz/reenable-golang-driver-testsuites
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/fix/cdutz/reenable-golang-driver-testsuites by this push:
new b58312912f refactor(plc4j): Continued porting the code to using contexts ... tried to fix the EIP Integration-Tests
b58312912f is described below
commit b58312912f659565356c8fdacb1f0b503fa745c6
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Feb 10 09:08:13 2023 +0100
refactor(plc4j): Continued porting the code to using contexts ... tried to fix the EIP Integration-Tests
---
.../testing/protocols/eip/DriverTestsuite.xml | 10 +-
plc4go/internal/modbus/Tag.go | 5 +-
plc4go/internal/modbus/TagHandler.go | 2 +-
plc4go/internal/s7/Tag.go | 10 +-
plc4go/pkg/api/model/plc_response_code.go | 18 ++
plc4go/spi/model/DefaultPlcBrowseEvent.go | 80 +++++-
plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go | 105 --------
plc4go/spi/model/DefaultPlcBrowseItem.go | 123 +++++++++-
plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go | 148 -----------
plc4go/spi/model/DefaultPlcBrowseRequest.go | 89 ++++++-
plc4go/spi/model/DefaultPlcBrowseRequestResult.go | 80 +++++-
.../DefaultPlcBrowseRequestResult_plc4xgen.go | 101 --------
.../spi/model/DefaultPlcBrowseRequest_plc4xgen.go | 116 ---------
plc4go/spi/model/DefaultPlcBrowseResponse.go | 22 +-
...plc4xgen.go => DefaultPlcBrowseResponseItem.go} | 65 ++---
plc4go/spi/model/DefaultPlcConsumerRegistration.go | 86 ++++++-
plc4go/spi/model/DefaultPlcReadRequest.go | 33 ++-
.../model/DefaultPlcReadRequestBuilder_plc4xgen.go | 163 ------------
plc4go/spi/model/DefaultPlcReadRequestResult.go | 80 +++++-
.../model/DefaultPlcReadRequestResult_plc4xgen.go | 101 --------
plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go | 98 --------
plc4go/spi/model/DefaultPlcReadResponse.go | 80 +++++-
...e_plc4xgen.go => DefaultPlcReadResponseItem.go} | 64 +++--
.../spi/model/DefaultPlcReadResponse_plc4xgen.go | 105 --------
plc4go/spi/model/DefaultPlcSubscriptionEvent.go | 82 +++++--
.../spi/model/DefaultPlcSubscriptionEventItem.go | 152 ++++++++++++
.../model/DefaultPlcSubscriptionEvent_plc4xgen.go | 151 ------------
plc4go/spi/model/DefaultPlcSubscriptionHandle.go | 51 +++-
.../model/DefaultPlcSubscriptionHandle_plc4xgen.go | 76 ------
plc4go/spi/model/DefaultPlcSubscriptionRequest.go | 92 ++++++-
...efaultPlcSubscriptionRequestBuilder_plc4xgen.go | 202 ---------------
.../model/DefaultPlcSubscriptionRequestResult.go | 80 +++++-
...DefaultPlcSubscriptionRequestResult_plc4xgen.go | 101 --------
.../DefaultPlcSubscriptionRequest_plc4xgen.go | 118 ---------
plc4go/spi/model/DefaultPlcSubscriptionResponse.go | 89 ++++++-
.../model/DefaultPlcSubscriptionResponseItem.go | 101 ++++++++
.../DefaultPlcSubscriptionResponse_plc4xgen.go | 105 --------
plc4go/spi/model/DefaultPlcTagRequest.go | 51 +++-
plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go | 94 -------
.../model/DefaultPlcUnsubscriptionRequestResult.go | 80 +++++-
...faultPlcUnsubscriptionRequestResult_plc4xgen.go | 101 --------
plc4go/spi/model/DefaultPlcWriteRequest.go | 98 +++++++-
.../DefaultPlcWriteRequestBuilder_plc4xgen.go | 195 ---------------
plc4go/spi/model/DefaultPlcWriteRequestResult.go | 80 +++++-
.../model/DefaultPlcWriteRequestResult_plc4xgen.go | 101 --------
.../spi/model/DefaultPlcWriteRequest_plc4xgen.go | 124 ----------
plc4go/spi/model/DefaultPlcWriteResponse.go | 85 ++++++-
plc4go/spi/model/DefaultResponse.go | 31 ++-
plc4go/spi/model/DefaultResponse_plc4xgen.go | 83 -------
plc4go/spi/utils/WriteBufferXmlBased.go | 4 +-
plc4go/spi/values/PlcNull.go | 18 ++
plc4go/spi/values/PlcValueAdapter.go | 3 +
plc4j/drivers/eip/pom.xml | 1 +
.../plc4x/java/eip/readwrite/CIPDataTypeCode.java | 89 +++++++
.../java/eip/readwrite/CIPStructTypeCode.java} | 33 ++-
.../plc4x/java/eip/readwrite/CipExchange.java | 204 ++++++++++++++++
.../apache/plc4x/java/eip/readwrite/CipRRData.java | 192 +++++++++++++++
.../plc4x/java/eip/readwrite/CipReadRequest.java | 180 ++++++++++++++
.../plc4x/java/eip/readwrite/CipReadResponse.java | 217 ++++++++++++++++
.../plc4x/java/eip/readwrite/CipService.java | 173 +++++++++++++
.../java/eip/readwrite/CipUnconnectedRequest.java | 265 ++++++++++++++++++++
.../plc4x/java/eip/readwrite/CipWriteRequest.java | 231 +++++++++++++++++
.../plc4x/java/eip/readwrite/CipWriteResponse.java | 170 +++++++++++++
.../plc4x/java/eip/readwrite/EiPCommand.java} | 35 ++-
.../java/eip/readwrite/EipConnectionRequest.java | 172 +++++++++++++
.../java/eip/readwrite/EipDisconnectRequest.java | 126 ++++++++++
.../apache/plc4x/java/eip/readwrite/EipPacket.java | 272 +++++++++++++++++++++
.../java/eip/readwrite/MultipleServiceRequest.java | 180 ++++++++++++++
.../eip/readwrite/MultipleServiceResponse.java | 238 ++++++++++++++++++
.../apache/plc4x/java/eip/readwrite/Services.java | 190 ++++++++++++++
.../eip/readwrite/protocol/EipProtocolLogic.java | 29 ++-
.../{EIPDriverTestsuite.java => EIPDriverIT.java} | 4 +-
.../eip/src/test/resources/logback-test.xml | 2 +-
.../migration/MessageValidatorAndMigrator.java | 2 +-
.../resources/protocols/eip/DriverTestsuite.xml | 12 +-
75 files changed, 4787 insertions(+), 2562 deletions(-)
diff --git a/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml b/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
index a78fc63408..f0603c00a6 100644
--- a/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
+++ b/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
@@ -32,7 +32,7 @@
<outgoing-plc-message name="Send connection request">
<EipPacket>
<command dataType="uint" bitLength="16">101</command>
- <len dataType="uint" bitLength="16">4</len>
+ <packetLength dataType="uint" bitLength="16">4</packetLength>
<sessionHandle dataType="uint" bitLength="32">0</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -56,7 +56,7 @@
<incoming-plc-message name="Receive connection response">
<EipPacket>
<command dataType="uint" bitLength="16">101</command>
- <len dataType="uint" bitLength="16">4</len>
+ <packetLength dataType="uint" bitLength="16">4</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -75,9 +75,9 @@
<flags dataType="uint" bitLength="16">0</flags>
</EipConnectionRequest>
</EipPacket>
-
</incoming-plc-message>
</setup>
+
<testcase>
<name>Single element read request</name>
<steps>
@@ -94,7 +94,7 @@
<outgoing-plc-message name="Send CipReadRequest to PLC">
<EipPacket>
<command dataType="uint" bitLength="16">111</command>
- <len dataType="uint" bitLength="16">40</len>
+ <packetLength dataType="uint" bitLength="16">40</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -152,7 +152,7 @@
<incoming-plc-message name="Get CipReadResponse from PLC">
<EipPacket>
<command dataType="uint" bitLength="16">111</command>
- <len dataType="uint" bitLength="16">26</len>
+ <packetLength dataType="uint" bitLength="16">26</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
diff --git a/plc4go/internal/modbus/Tag.go b/plc4go/internal/modbus/Tag.go
index 8958d18c4f..64296943ed 100644
--- a/plc4go/internal/modbus/Tag.go
+++ b/plc4go/internal/modbus/Tag.go
@@ -20,6 +20,7 @@
package modbus
import (
+ "context"
"encoding/binary"
"fmt"
"strconv"
@@ -105,13 +106,13 @@ func CastToModbusTagFromPlcTag(plcTag model.PlcTag) (modbusTag, error) {
func (m modbusTag) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := m.SerializeWithWriteBuffer(wb); err != nil {
+ if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
}
return wb.GetBytes(), nil
}
-func (m modbusTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m modbusTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
if err := writeBuffer.PushContext(m.TagType.GetName()); err != nil {
return err
}
diff --git a/plc4go/internal/modbus/TagHandler.go b/plc4go/internal/modbus/TagHandler.go
index 9fa496e7e7..746fb287e5 100644
--- a/plc4go/internal/modbus/TagHandler.go
+++ b/plc4go/internal/modbus/TagHandler.go
@@ -41,7 +41,7 @@ const (
)
func (i TagType) GetName() string {
- return fmt.Sprintf("ModbusTags%s", i.String())
+ return fmt.Sprintf("ModbusTag%s", i.String())
}
type TagHandler struct {
diff --git a/plc4go/internal/s7/Tag.go b/plc4go/internal/s7/Tag.go
index 9dac023754..bcc7c923bc 100644
--- a/plc4go/internal/s7/Tag.go
+++ b/plc4go/internal/s7/Tag.go
@@ -20,6 +20,7 @@
package s7
import (
+ "context"
"encoding/binary"
"fmt"
@@ -32,6 +33,7 @@ import (
type PlcTag interface {
model.PlcTag
+ utils.Serializable
GetDataType() readWriteModel.TransportSize
GetNumElements() uint16
@@ -136,13 +138,13 @@ func (m plcTag) GetQuantity() uint16 {
}
func (m plcTag) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := m.SerializeWithWriteBuffer(wb); err != nil {
+ if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
}
return wb.GetBytes(), nil
}
-func (m plcTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m plcTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
if err := writeBuffer.PushContext(m.TagType.GetName()); err != nil {
return err
}
@@ -174,13 +176,13 @@ func (m plcTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
func (m PlcStringTag) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := m.SerializeWithWriteBuffer(wb); err != nil {
+ if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
}
return wb.GetBytes(), nil
}
-func (m PlcStringTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m PlcStringTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
if err := writeBuffer.PushContext(m.TagType.GetName()); err != nil {
return err
}
diff --git a/plc4go/pkg/api/model/plc_response_code.go b/plc4go/pkg/api/model/plc_response_code.go
index d3daa11d7b..4febb6559f 100644
--- a/plc4go/pkg/api/model/plc_response_code.go
+++ b/plc4go/pkg/api/model/plc_response_code.go
@@ -19,6 +19,12 @@
package model
+import (
+ "context"
+
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
+
type PlcResponseCode uint8
const (
@@ -70,3 +76,15 @@ func (m PlcResponseCode) GetName() string {
func (m PlcResponseCode) String() string {
return m.GetName()
}
+
+func (m PlcResponseCode) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased()
+ if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (m PlcResponseCode) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ return writeBuffer.WriteUint8("AlarmType", 8, uint8(m), utils.WithAdditionalStringRepresentation(m.GetName()))
+}
diff --git a/plc4go/spi/model/DefaultPlcBrowseEvent.go b/plc4go/spi/model/DefaultPlcBrowseEvent.go
index 51d55e1905..455f6aa5be 100644
--- a/plc4go/spi/model/DefaultPlcBrowseEvent.go
+++ b/plc4go/spi/model/DefaultPlcBrowseEvent.go
@@ -20,10 +20,14 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcBrowseEvent
type DefaultPlcBrowseEvent struct {
Request model.PlcBrowseRequest
QueryName string
@@ -50,3 +54,77 @@ func (d *DefaultPlcBrowseEvent) GetResult() model.PlcBrowseItem {
func (d *DefaultPlcBrowseEvent) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcBrowseEvent) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcBrowseEvent) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcBrowseEvent"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if err := writeBuffer.WriteString("queryName", uint32(len(d.QueryName)*8), "UTF-8", d.QueryName); err != nil {
+ return err
+ }
+
+ if d.Result != nil {
+ if serializableField, ok := d.Result.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("result"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("result"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Result)
+ if err := writeBuffer.WriteString("result", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcBrowseEvent"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcBrowseEvent) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go
deleted file mode 100644
index ae810d288b..0000000000
--- a/plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcBrowseEvent"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcBrowseEvent) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcBrowseEvent) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcBrowseEvent"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if err := writeBuffer.WriteString("queryName", uint32(len(d.QueryName)*8), "UTF-8", d.QueryName); err != nil {
- return err
- }
-
- if d.Result != nil {
- if serializableField, ok := d.Result.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("result"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("result"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Result)
- if err := writeBuffer.WriteString("result", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcBrowseEvent"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcBrowseEvent) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcBrowseItem.go b/plc4go/spi/model/DefaultPlcBrowseItem.go
index efd089ffd4..740a88fabb 100644
--- a/plc4go/spi/model/DefaultPlcBrowseItem.go
+++ b/plc4go/spi/model/DefaultPlcBrowseItem.go
@@ -20,11 +20,15 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/pkg/api/values"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcBrowseItem
type DefaultPlcBrowseItem struct {
Tag model.PlcTag
Name string
@@ -67,3 +71,120 @@ func (d *DefaultPlcBrowseItem) GetChildren() map[string]model.PlcBrowseItem {
func (d *DefaultPlcBrowseItem) GetOptions() map[string]values.PlcValue {
return d.Options
}
+
+func (d *DefaultPlcBrowseItem) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcBrowseItem"); err != nil {
+ return err
+ }
+
+ if d.Tag != nil {
+ if serializableField, ok := d.Tag.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("tag"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("tag"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Tag)
+ if err := writeBuffer.WriteString("tag", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if err := writeBuffer.WriteString("name", uint32(len(d.Name)*8), "UTF-8", d.Name); err != nil {
+ return err
+ }
+
+ if err := writeBuffer.WriteString("dataTypeName", uint32(len(d.DataTypeName)*8), "UTF-8", d.DataTypeName); err != nil {
+ return err
+ }
+
+ if err := writeBuffer.WriteBit("readable", d.Readable); err != nil {
+ return err
+ }
+
+ if err := writeBuffer.WriteBit("writable", d.Writable); err != nil {
+ return err
+ }
+
+ if err := writeBuffer.WriteBit("subscribable", d.Subscribable); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.Children {
+
+ var elem interface{} = 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("children", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.Options {
+
+ var elem interface{} = 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("options", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcBrowseItem"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcBrowseItem) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
deleted file mode 100644
index c747c8e16a..0000000000
--- a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcBrowseItem"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcBrowseItem) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcBrowseItem"); err != nil {
- return err
- }
-
- if d.Tag != nil {
- if serializableField, ok := d.Tag.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("tag"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("tag"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Tag)
- if err := writeBuffer.WriteString("tag", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if err := writeBuffer.WriteString("name", uint32(len(d.Name)*8), "UTF-8", d.Name); err != nil {
- return err
- }
-
- if err := writeBuffer.WriteString("dataTypeName", uint32(len(d.DataTypeName)*8), "UTF-8", d.DataTypeName); err != nil {
- return err
- }
-
- if err := writeBuffer.WriteBit("readable", d.Readable); err != nil {
- return err
- }
-
- if err := writeBuffer.WriteBit("writable", d.Writable); err != nil {
- return err
- }
-
- if err := writeBuffer.WriteBit("subscribable", d.Subscribable); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.Children {
-
- var elem interface{} = 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("children", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("options", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.Options {
-
- var elem interface{} = 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("options", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcBrowseItem"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcBrowseItem) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequest.go b/plc4go/spi/model/DefaultPlcBrowseRequest.go
index b39853f8e9..37424cdfa4 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequest.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequest.go
@@ -21,9 +21,12 @@ package model
import (
"context"
+ "encoding/binary"
+ "fmt"
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi"
+ "github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
)
@@ -61,7 +64,6 @@ func (d *DefaultPlcBrowseRequestBuilder) Build() (model.PlcBrowseRequest, error)
return NewDefaultPlcBrowseRequest(queries, d.queryNames, d.browser), nil
}
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcBrowseRequest
type DefaultPlcBrowseRequest struct {
DefaultPlcRequest
browser spi.PlcBrowser
@@ -101,3 +103,88 @@ func (d *DefaultPlcBrowseRequest) GetQueryNames() []string {
func (d *DefaultPlcBrowseRequest) GetQuery(queryName string) model.PlcQuery {
return d.queries[queryName]
}
+
+func (d *DefaultPlcBrowseRequest) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcBrowseRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcBrowseRequest"); err != nil {
+ return err
+ }
+ if err := d.DefaultPlcRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+
+ if d.browser != nil {
+ if serializableField, ok := d.browser.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("browser"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("browser"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.browser)
+ if err := writeBuffer.WriteString("browser", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PushContext("queryNames", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for _, elem := range d.queryNames {
+ if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("queryNames", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("queries", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.queries {
+
+ var elem interface{} = 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("queries", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcBrowseRequest"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcBrowseRequest) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequestResult.go b/plc4go/spi/model/DefaultPlcBrowseRequestResult.go
index 09c49155ea..2a4b6b34d1 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequestResult.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequestResult.go
@@ -19,9 +19,15 @@
package model
-import "github.com/apache/plc4x/plc4go/pkg/api/model"
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcBrowseRequestResult
type DefaultPlcBrowseRequestResult struct {
Request model.PlcBrowseRequest
Response model.PlcBrowseResponse
@@ -39,3 +45,73 @@ func (d *DefaultPlcBrowseRequestResult) GetResponse() model.PlcBrowseResponse {
func (d *DefaultPlcBrowseRequestResult) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcBrowseRequestResult) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcBrowseRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcBrowseRequestResult"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Response != nil {
+ if serializableField, ok := d.Response.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("response"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("response"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Response)
+ if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcBrowseRequestResult"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcBrowseRequestResult) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go
deleted file mode 100644
index 8f6b1f3154..0000000000
--- a/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcBrowseRequestResult"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcBrowseRequestResult) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcBrowseRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcBrowseRequestResult"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Response != nil {
- if serializableField, ok := d.Response.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("response"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("response"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Response)
- if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcBrowseRequestResult"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcBrowseRequestResult) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
deleted file mode 100644
index 8d578da51d..0000000000
--- a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcBrowseRequest"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcBrowseRequest) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcBrowseRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcBrowseRequest"); err != nil {
- return err
- }
- if err := d.DefaultPlcRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
-
- if d.browser != nil {
- if serializableField, ok := d.browser.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("browser"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("browser"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.browser)
- if err := writeBuffer.WriteString("browser", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("queryNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for _, elem := range d.queryNames {
- if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("queryNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("queries", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.queries {
-
- var elem interface{} = 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("queries", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcBrowseRequest"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcBrowseRequest) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcBrowseResponse.go b/plc4go/spi/model/DefaultPlcBrowseResponse.go
index f4d7f2e97b..864512adc0 100644
--- a/plc4go/spi/model/DefaultPlcBrowseResponse.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponse.go
@@ -33,14 +33,18 @@ type DefaultPlcBrowseResponse struct {
DefaultResponse
request model.PlcBrowseRequest
responseCode model.PlcResponseCode
- results map[string][]model.PlcBrowseItem
+ results map[string]*DefaultPlcBrowseResponseItem
}
func NewDefaultPlcBrowseResponse(request model.PlcBrowseRequest, results map[string][]model.PlcBrowseItem, responseCodes map[string]model.PlcResponseCode) DefaultPlcBrowseResponse {
+ res := map[string]*DefaultPlcBrowseResponseItem{}
+ for name, code := range responseCodes {
+ value := results[name]
+ res[name] = NewBrowseResponseItem(code, value)
+ }
return DefaultPlcBrowseResponse{
- DefaultResponse: DefaultResponse{responseCodes: responseCodes},
- request: request,
- results: results,
+ request: request,
+ results: res,
}
}
@@ -56,8 +60,12 @@ func (d DefaultPlcBrowseResponse) GetQueryNames() []string {
return queryNames
}
+func (d DefaultPlcBrowseResponse) GetResponseCode(name string) model.PlcResponseCode {
+ return d.results[name].GetCode()
+}
+
func (d DefaultPlcBrowseResponse) GetQueryResults(queryName string) []model.PlcBrowseItem {
- return d.results[queryName]
+ return d.results[queryName].GetResults()
}
func (d DefaultPlcBrowseResponse) Serialize() ([]byte, error) {
@@ -84,11 +92,11 @@ func (d DefaultPlcBrowseResponse) SerializeWithWriteBuffer(ctx context.Context,
if err := writeBuffer.PushContext("results"); err != nil {
return err
}
- for tagName, foundTags := range d.results {
+ for tagName, browseResponseItem := range d.results {
if err := writeBuffer.PushContext(tagName); err != nil {
return err
}
- for _, tag := range foundTags {
+ for _, tag := range browseResponseItem.GetResults() {
if serializableTag, ok := tag.(utils.Serializable); ok {
if err := serializableTag.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
return err
diff --git a/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseResponseItem.go
similarity index 59%
rename from plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go
rename to plc4go/spi/model/DefaultPlcBrowseResponseItem.go
index c4c2f002c4..d5439ca898 100644
--- a/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponseItem.go
@@ -17,20 +17,38 @@
* under the License.
*/
-// Code generated by "plc4xgenerator -type=DefaultPlcConsumerRegistration"; DO NOT EDIT.
-
package model
import (
"context"
"encoding/binary"
"fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi/utils"
)
-var _ = fmt.Printf
+type DefaultPlcBrowseResponseItem struct {
+ code model.PlcResponseCode
+ results []model.PlcBrowseItem
+}
-func (d *DefaultPlcConsumerRegistration) Serialize() ([]byte, error) {
+func NewBrowseResponseItem(code model.PlcResponseCode, results []model.PlcBrowseItem) *DefaultPlcBrowseResponseItem {
+ return &DefaultPlcBrowseResponseItem{
+ code: code,
+ results: results,
+ }
+}
+
+func (r *DefaultPlcBrowseResponseItem) GetCode() model.PlcResponseCode {
+ return r.code
+}
+
+func (r *DefaultPlcBrowseResponseItem) GetResults() []model.PlcBrowseItem {
+ return r.results
+}
+
+func (d *DefaultPlcBrowseResponseItem) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
@@ -38,38 +56,21 @@ func (d *DefaultPlcConsumerRegistration) Serialize() ([]byte, error) {
return wb.GetBytes(), nil
}
-func (d *DefaultPlcConsumerRegistration) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcConsumerRegistration"); err != nil {
- return err
- }
- _value := fmt.Sprintf("%v", d.consumerId)
-
- if err := writeBuffer.WriteString("consumerId", uint32(len(_value)*8), "UTF-8", _value); err != nil {
+func (d *DefaultPlcBrowseResponseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcBrowseResponseItem"); err != nil {
return err
}
- if d.plcSubscriber != nil {
- if serializableField, ok := d.plcSubscriber.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("plcSubscriber"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("plcSubscriber"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.plcSubscriber)
- if err := writeBuffer.WriteString("plcSubscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
+ {
+ stringValue := fmt.Sprintf("%v", d.code)
+ if err := writeBuffer.WriteString("code", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
}
}
- if err := writeBuffer.PushContext("handles", utils.WithRenderAsList(true)); err != nil {
+ if err := writeBuffer.PushContext("results", utils.WithRenderAsList(true)); err != nil {
return err
}
- for _, elem := range d.handles {
+ for _, elem := range d.results {
var elem interface{} = elem
if elem != nil {
@@ -91,16 +92,16 @@ func (d *DefaultPlcConsumerRegistration) SerializeWithWriteBuffer(ctx context.Co
}
}
}
- if err := writeBuffer.PopContext("handles", utils.WithRenderAsList(true)); err != nil {
+ if err := writeBuffer.PopContext("results", utils.WithRenderAsList(true)); err != nil {
return err
}
- if err := writeBuffer.PopContext("PlcConsumerRegistration"); err != nil {
+ if err := writeBuffer.PopContext("PlcBrowseResponseItem"); err != nil {
return err
}
return nil
}
-func (d *DefaultPlcConsumerRegistration) String() string {
+func (d *DefaultPlcBrowseResponseItem) String() string {
writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
return err.Error()
diff --git a/plc4go/spi/model/DefaultPlcConsumerRegistration.go b/plc4go/spi/model/DefaultPlcConsumerRegistration.go
index b35fca8c4a..12c09dfe59 100644
--- a/plc4go/spi/model/DefaultPlcConsumerRegistration.go
+++ b/plc4go/spi/model/DefaultPlcConsumerRegistration.go
@@ -20,12 +20,16 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+ "math/rand"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi"
- "math/rand"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcConsumerRegistration
type DefaultPlcConsumerRegistration struct {
consumerId int
consumer model.PlcSubscriptionEventConsumer `ignore:"true"` // Function not renderable
@@ -54,3 +58,81 @@ func (d *DefaultPlcConsumerRegistration) GetSubscriptionHandles() []model.PlcSub
func (d *DefaultPlcConsumerRegistration) Unregister() {
d.plcSubscriber.Unregister(d)
}
+
+func (d *DefaultPlcConsumerRegistration) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcConsumerRegistration) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcConsumerRegistration"); err != nil {
+ return err
+ }
+ _value := fmt.Sprintf("%v", d.consumerId)
+
+ if err := writeBuffer.WriteString("consumerId", uint32(len(_value)*8), "UTF-8", _value); err != nil {
+ return err
+ }
+
+ if d.plcSubscriber != nil {
+ if serializableField, ok := d.plcSubscriber.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("plcSubscriber"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("plcSubscriber"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.plcSubscriber)
+ if err := writeBuffer.WriteString("plcSubscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PushContext("handles", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for _, elem := range d.handles {
+ var elem interface{} = elem
+
+ if elem != nil {
+ if serializableField, ok := elem.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("value"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("value"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", elem)
+ if err := writeBuffer.WriteString("value", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("handles", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcConsumerRegistration"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcConsumerRegistration) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcReadRequest.go b/plc4go/spi/model/DefaultPlcReadRequest.go
index b62345f9fd..4a651b5f2a 100644
--- a/plc4go/spi/model/DefaultPlcReadRequest.go
+++ b/plc4go/spi/model/DefaultPlcReadRequest.go
@@ -21,15 +21,16 @@ package model
import (
"context"
+ "encoding/binary"
"time"
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi"
"github.com/apache/plc4x/plc4go/spi/interceptors"
+ "github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcReadRequestBuilder
type DefaultPlcReadRequestBuilder struct {
reader spi.PlcReader
tagHandler spi.PlcTagHandler
@@ -82,7 +83,6 @@ func (d *DefaultPlcReadRequestBuilder) Build() (model.PlcReadRequest, error) {
return NewDefaultPlcReadRequest(d.tags, d.tagNames, d.reader, d.readRequestInterceptor), nil
}
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcReadRequest
type DefaultPlcReadRequest struct {
DefaultPlcTagRequest
reader spi.PlcReader
@@ -152,3 +152,32 @@ func (d *DefaultPlcReadRequest) ExecuteWithContext(ctx context.Context) <-chan m
return resultChannel
}
+
+func (d *DefaultPlcReadRequest) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcReadRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcReadRequest"); err != nil {
+ return err
+ }
+ if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcReadRequest"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcReadRequest) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
deleted file mode 100644
index 0d5a6a1817..0000000000
--- a/plc4go/spi/model/DefaultPlcReadRequestBuilder_plc4xgen.go
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcReadRequestBuilder"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcReadRequestBuilder) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcReadRequestBuilder) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcReadRequestBuilder"); err != nil {
- return err
- }
-
- if d.reader != nil {
- if serializableField, ok := d.reader.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("reader"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("reader"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.reader)
- if err := writeBuffer.WriteString("reader", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.tagHandler != nil {
- if serializableField, ok := d.tagHandler.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("tagHandler"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("tagHandler"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.tagHandler)
- if err := writeBuffer.WriteString("tagHandler", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for _, elem := range d.tagNames {
- if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tagAddresses {
-
- if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tags {
-
- var elem interface{} = 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("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
-
- if d.readRequestInterceptor != nil {
- if serializableField, ok := d.readRequestInterceptor.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("readRequestInterceptor"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("readRequestInterceptor"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.readRequestInterceptor)
- if err := writeBuffer.WriteString("readRequestInterceptor", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcReadRequestBuilder"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcReadRequestBuilder) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcReadRequestResult.go b/plc4go/spi/model/DefaultPlcReadRequestResult.go
index 578014c7db..0eb3f8d199 100644
--- a/plc4go/spi/model/DefaultPlcReadRequestResult.go
+++ b/plc4go/spi/model/DefaultPlcReadRequestResult.go
@@ -19,9 +19,15 @@
package model
-import "github.com/apache/plc4x/plc4go/pkg/api/model"
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcReadRequestResult
type DefaultPlcReadRequestResult struct {
Request model.PlcReadRequest
Response model.PlcReadResponse
@@ -39,3 +45,73 @@ func (d *DefaultPlcReadRequestResult) GetResponse() model.PlcReadResponse {
func (d *DefaultPlcReadRequestResult) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcReadRequestResult) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcReadRequestResult"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Response != nil {
+ if serializableField, ok := d.Response.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("response"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("response"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Response)
+ if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcReadRequestResult"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcReadRequestResult) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go
deleted file mode 100644
index 7169484d20..0000000000
--- a/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcReadRequestResult"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcReadRequestResult) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcReadRequestResult"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Response != nil {
- if serializableField, ok := d.Response.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("response"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("response"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Response)
- if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcReadRequestResult"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcReadRequestResult) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go
deleted file mode 100644
index 548c3fd55f..0000000000
--- a/plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcReadRequest"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcReadRequest) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcReadRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcReadRequest"); err != nil {
- return err
- }
- if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
-
- if d.reader != nil {
- if serializableField, ok := d.reader.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("reader"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("reader"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.reader)
- if err := writeBuffer.WriteString("reader", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.readRequestInterceptor != nil {
- if serializableField, ok := d.readRequestInterceptor.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("readRequestInterceptor"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("readRequestInterceptor"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.readRequestInterceptor)
- if err := writeBuffer.WriteString("readRequestInterceptor", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcReadRequest"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcReadRequest) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcReadResponse.go b/plc4go/spi/model/DefaultPlcReadResponse.go
index 7da74fb0b4..50fd7094b0 100644
--- a/plc4go/spi/model/DefaultPlcReadResponse.go
+++ b/plc4go/spi/model/DefaultPlcReadResponse.go
@@ -20,22 +20,30 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/pkg/api/values"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcReadResponse
type DefaultPlcReadResponse struct {
DefaultResponse
request model.PlcReadRequest
- values map[string]values.PlcValue
+ values map[string]*DefaultPlcReadResponseItem
}
func NewDefaultPlcReadResponse(request model.PlcReadRequest, responseCodes map[string]model.PlcResponseCode, values map[string]values.PlcValue) model.PlcReadResponse {
+ valueMap := map[string]*DefaultPlcReadResponseItem{}
+ for name, code := range responseCodes {
+ value := values[name]
+ valueMap[name] = NewReadResponseItem(code, value)
+ }
return &DefaultPlcReadResponse{
- DefaultResponse: NewDefaultResponse(responseCodes),
- request: request,
- values: values,
+ request: request,
+ values: valueMap,
}
}
@@ -54,6 +62,66 @@ func (d *DefaultPlcReadResponse) GetRequest() model.PlcReadRequest {
return d.request
}
+func (d *DefaultPlcReadResponse) GetResponseCode(name string) model.PlcResponseCode {
+ return d.values[name].GetCode()
+}
+
func (d *DefaultPlcReadResponse) GetValue(name string) values.PlcValue {
- return d.values[name]
+ return d.values[name].GetValue()
+}
+
+func (d *DefaultPlcReadResponse) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcReadResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcReadResponse"); err != nil {
+ return err
+ }
+
+ if d.request != nil {
+ if serializableField, ok := d.request.(utils.Serializable); ok {
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PushContext("values"); err != nil {
+ return err
+ }
+ for name, elem := range d.values {
+ if err := writeBuffer.PushContext(name); err != nil {
+ return err
+ }
+ if err := elem.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext(name); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcReadResponse"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcReadResponse) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
}
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadResponseItem.go
similarity index 53%
rename from plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
rename to plc4go/spi/model/DefaultPlcReadResponseItem.go
index 74bcecb9b7..23659fc0a6 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadResponseItem.go
@@ -17,20 +17,39 @@
* under the License.
*/
-// Code generated by "plc4xgenerator -type=DefaultPlcWriteResponse"; DO NOT EDIT.
-
package model
import (
"context"
"encoding/binary"
"fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/pkg/api/values"
"github.com/apache/plc4x/plc4go/spi/utils"
)
-var _ = fmt.Printf
+type DefaultPlcReadResponseItem struct {
+ code model.PlcResponseCode
+ value values.PlcValue
+}
+
+func NewReadResponseItem(code model.PlcResponseCode, value values.PlcValue) *DefaultPlcReadResponseItem {
+ return &DefaultPlcReadResponseItem{
+ code: code,
+ value: value,
+ }
+}
+
+func (r *DefaultPlcReadResponseItem) GetCode() model.PlcResponseCode {
+ return r.code
+}
+
+func (r *DefaultPlcReadResponseItem) GetValue() values.PlcValue {
+ return r.value
+}
-func (d *DefaultPlcWriteResponse) Serialize() ([]byte, error) {
+func (d *DefaultPlcReadResponseItem) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
@@ -38,39 +57,32 @@ func (d *DefaultPlcWriteResponse) Serialize() ([]byte, error) {
return wb.GetBytes(), nil
}
-func (d *DefaultPlcWriteResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcWriteResponse"); err != nil {
+func (d *DefaultPlcReadResponseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("ResponseItem"); err != nil {
return err
}
- if err := d.DefaultResponse.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
+
+ {
+ stringValue := fmt.Sprintf("%v", d.code)
+ if err := writeBuffer.WriteString("result", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
}
- if d.request != nil {
- if serializableField, ok := d.request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
+ if d.value != nil {
+ var elem interface{} = d.value
+ if err := elem.(utils.Serializable).SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
}
}
- if err := writeBuffer.PopContext("PlcWriteResponse"); err != nil {
+
+ if err := writeBuffer.PopContext("ResponseItem"); err != nil {
return err
}
return nil
}
-func (d *DefaultPlcWriteResponse) String() string {
+func (d *DefaultPlcReadResponseItem) String() string {
writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
return err.Error()
diff --git a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
deleted file mode 100644
index 8a264848a9..0000000000
--- a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcReadResponse"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcReadResponse) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcReadResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcReadResponse"); err != nil {
- return err
- }
- if err := d.DefaultResponse.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
-
- if d.request != nil {
- if serializableField, ok := d.request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.values {
-
- var elem interface{} = 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("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcReadResponse"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcReadResponse) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
index 89b2a5623d..e91d042ebc 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEvent.go
@@ -20,6 +20,9 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
"time"
"github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -27,14 +30,10 @@ import (
"github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionEvent
type DefaultPlcSubscriptionEvent struct {
DefaultResponse
DefaultPlcSubscriptionEventRequirements `ignore:"true"` // Avoid recursion
- tags map[string]model.PlcTag
- types map[string]SubscriptionType
- intervals map[string]time.Duration
- values map[string]values.PlcValue
+ values map[string]*DefaultPlcSubscriptionEventItem
}
type DefaultPlcSubscriptionEventRequirements interface {
@@ -45,34 +44,48 @@ type DefaultPlcSubscriptionEventRequirements interface {
func NewDefaultPlcSubscriptionEvent(defaultPlcSubscriptionEventRequirements DefaultPlcSubscriptionEventRequirements, tags map[string]model.PlcTag, types map[string]SubscriptionType,
intervals map[string]time.Duration, responseCodes map[string]model.PlcResponseCode,
values map[string]values.PlcValue) DefaultPlcSubscriptionEvent {
+
+ valueMap := map[string]*DefaultPlcSubscriptionEventItem{}
+ for name, code := range responseCodes {
+ tag := tags[name]
+ subscriptionType := types[name]
+ interval := intervals[name]
+ value := values[name]
+ valueMap[name] = NewSubscriptionEventItem(code, tag, subscriptionType, interval, value)
+ }
+
return DefaultPlcSubscriptionEvent{
- DefaultResponse: NewDefaultResponse(responseCodes),
DefaultPlcSubscriptionEventRequirements: defaultPlcSubscriptionEventRequirements,
- tags: tags,
- types: types,
- intervals: intervals,
- values: values,
+ values: valueMap,
}
}
func (d *DefaultPlcSubscriptionEvent) GetTagNames() []string {
var tagNames []string
- for tagName := range d.tags {
- tagNames = append(tagNames, tagName)
+ for valueName := range d.values {
+ tagNames = append(tagNames, valueName)
}
return tagNames
}
+func (d *DefaultPlcSubscriptionEvent) GetResponseCode(name string) model.PlcResponseCode {
+ return d.values[name].GetCode()
+}
+
func (d *DefaultPlcSubscriptionEvent) GetTag(name string) model.PlcTag {
- return d.tags[name]
+ return d.values[name].GetTag()
}
func (d *DefaultPlcSubscriptionEvent) GetType(name string) SubscriptionType {
- return d.types[name]
+ return d.values[name].GetSubscriptionType()
}
func (d *DefaultPlcSubscriptionEvent) GetInterval(name string) time.Duration {
- return d.intervals[name]
+ return d.values[name].GetInterval()
+}
+
+func (d *DefaultPlcSubscriptionEvent) GetValue(name string) values.PlcValue {
+ return d.values[name].GetValue()
}
func (d *DefaultPlcSubscriptionEvent) GetAddress(name string) string {
@@ -83,6 +96,41 @@ func (d *DefaultPlcSubscriptionEvent) GetSource(name string) string {
return d.GetAddress(name)
}
-func (d *DefaultPlcSubscriptionEvent) GetValue(name string) values.PlcValue {
- return d.values[name]
+func (d *DefaultPlcSubscriptionEvent) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionEvent) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionEvent"); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.values {
+ _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("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionEvent"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionEvent) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEventItem.go b/plc4go/spi/model/DefaultPlcSubscriptionEventItem.go
new file mode 100644
index 0000000000..64d8cbfb3d
--- /dev/null
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEventItem.go
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+ "time"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/pkg/api/values"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
+
+type DefaultPlcSubscriptionEventItem struct {
+ code model.PlcResponseCode
+ tag model.PlcTag
+ subscriptionType SubscriptionType
+ interval time.Duration
+ value values.PlcValue
+}
+
+func NewSubscriptionEventItem(code model.PlcResponseCode, tag model.PlcTag, subscriptionType SubscriptionType, interval time.Duration, value values.PlcValue) *DefaultPlcSubscriptionEventItem {
+ return &DefaultPlcSubscriptionEventItem{
+ code: code,
+ tag: tag,
+ subscriptionType: subscriptionType,
+ interval: interval,
+ value: value,
+ }
+}
+
+func (r *DefaultPlcSubscriptionEventItem) GetCode() model.PlcResponseCode {
+ return r.code
+}
+
+func (r *DefaultPlcSubscriptionEventItem) GetTag() model.PlcTag {
+ return r.tag
+}
+
+func (r *DefaultPlcSubscriptionEventItem) GetSubscriptionType() SubscriptionType {
+ return r.subscriptionType
+}
+
+func (r *DefaultPlcSubscriptionEventItem) GetInterval() time.Duration {
+ return r.interval
+}
+
+func (r *DefaultPlcSubscriptionEventItem) GetValue() values.PlcValue {
+ return r.value
+}
+
+func (d *DefaultPlcSubscriptionEventItem) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionEventItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionEventItem"); err != nil {
+ return err
+ }
+
+ {
+ stringValue := fmt.Sprintf("%v", d.code)
+ if err := writeBuffer.WriteString("code", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+
+ if d.tag != nil {
+ if serializableField, ok := d.tag.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("tag"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("tag"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.tag)
+ if err := writeBuffer.WriteString("tag", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ _value := fmt.Sprintf("%v", d.subscriptionType)
+
+ if err := writeBuffer.WriteString("subscriptionType", uint32(len(_value)*8), "UTF-8", _value); err != nil {
+ return err
+ }
+
+ {
+ stringValue := fmt.Sprintf("%v", d.interval)
+ if err := writeBuffer.WriteString("interval", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+
+ if d.value != nil {
+ if serializableField, ok := d.value.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("value"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("value"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.value)
+ if err := writeBuffer.WriteString("value", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionEventItem"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionEventItem) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
deleted file mode 100644
index 220a2dd257..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionEvent_plc4xgen.go
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionEvent"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionEvent) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionEvent) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionEvent"); err != nil {
- return err
- }
- if err := d.DefaultResponse.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tags {
-
- var elem interface{} = 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("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.types {
- _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("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.intervals {
-
- var elem interface{} = 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("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.values {
-
- var elem interface{} = 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("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcSubscriptionEvent"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionEvent) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionHandle.go b/plc4go/spi/model/DefaultPlcSubscriptionHandle.go
index 5e745bac1d..1567514a99 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionHandle.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionHandle.go
@@ -20,11 +20,15 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionHandle
type DefaultPlcSubscriptionHandle struct {
handleToRegister model.PlcSubscriptionHandle `ignore:"true"`
plcSubscriber spi.PlcSubscriber
@@ -51,3 +55,48 @@ func NewDefaultPlcSubscriptionHandleWithHandleToRegister(plcSubscriber spi.PlcSu
func (d *DefaultPlcSubscriptionHandle) Register(consumer model.PlcSubscriptionEventConsumer) model.PlcConsumerRegistration {
return d.plcSubscriber.Register(consumer, []model.PlcSubscriptionHandle{d.handleToRegister})
}
+
+func (d *DefaultPlcSubscriptionHandle) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionHandle) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionHandle"); err != nil {
+ return err
+ }
+
+ if d.plcSubscriber != nil {
+ if serializableField, ok := d.plcSubscriber.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("plcSubscriber"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("plcSubscriber"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.plcSubscriber)
+ if err := writeBuffer.WriteString("plcSubscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionHandle"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionHandle) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionHandle_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionHandle_plc4xgen.go
deleted file mode 100644
index 4b38ca429e..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionHandle_plc4xgen.go
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionHandle"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionHandle) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionHandle) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionHandle"); err != nil {
- return err
- }
-
- if d.plcSubscriber != nil {
- if serializableField, ok := d.plcSubscriber.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("plcSubscriber"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("plcSubscriber"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.plcSubscriber)
- if err := writeBuffer.WriteString("plcSubscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcSubscriptionHandle"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionHandle) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
index 03feba8c09..fcc9275c7b 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest.go
@@ -21,10 +21,13 @@ package model
import (
"context"
+ "encoding/binary"
+ "fmt"
"time"
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/spi"
+ "github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
)
@@ -49,7 +52,6 @@ func (s SubscriptionType) String() string {
}
}
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionRequestBuilder
type DefaultPlcSubscriptionRequestBuilder struct {
subscriber spi.PlcSubscriber
tagHandler spi.PlcTagHandler
@@ -141,7 +143,6 @@ func (d *DefaultPlcSubscriptionRequestBuilder) Build() (model.PlcSubscriptionReq
return NewDefaultPlcSubscriptionRequest(d.subscriber, d.tagNames, d.tags, d.types, d.intervals, d.preRegisteredConsumers), nil
}
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionRequest
type DefaultPlcSubscriptionRequest struct {
DefaultPlcTagRequest
types map[string]SubscriptionType
@@ -173,3 +174,90 @@ func (d *DefaultPlcSubscriptionRequest) GetInterval(name string) time.Duration {
func (d *DefaultPlcSubscriptionRequest) GetPreRegisteredConsumers(name string) []model.PlcSubscriptionEventConsumer {
return d.preRegisteredConsumers[name]
}
+
+func (d *DefaultPlcSubscriptionRequest) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionRequest"); err != nil {
+ return err
+ }
+ if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.types {
+ _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("types", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.intervals {
+
+ var elem interface{} = 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("intervals", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+
+ if d.subscriber != nil {
+ if serializableField, ok := d.subscriber.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("subscriber"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("subscriber"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.subscriber)
+ if err := writeBuffer.WriteString("subscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionRequest"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionRequest) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
deleted file mode 100644
index abdac565f7..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestBuilder_plc4xgen.go
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionRequestBuilder"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionRequestBuilder) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionRequestBuilder"); err != nil {
- return err
- }
-
- if d.subscriber != nil {
- if serializableField, ok := d.subscriber.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("subscriber"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("subscriber"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.subscriber)
- if err := writeBuffer.WriteString("subscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.tagHandler != nil {
- if serializableField, ok := d.tagHandler.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("tagHandler"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("tagHandler"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.tagHandler)
- if err := writeBuffer.WriteString("tagHandler", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.valueHandler != nil {
- if serializableField, ok := d.valueHandler.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("valueHandler"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("valueHandler"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.valueHandler)
- if err := writeBuffer.WriteString("valueHandler", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for _, elem := range d.tagNames {
- if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tagAddresses {
-
- if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tags {
-
- var elem interface{} = 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("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.types {
- _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("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.intervals {
-
- var elem interface{} = 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("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcSubscriptionRequestBuilder"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionRequestBuilder) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestResult.go
index cb806caa01..aaac3b618b 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequestResult.go
@@ -19,9 +19,15 @@
package model
-import "github.com/apache/plc4x/plc4go/pkg/api/model"
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionRequestResult
type DefaultPlcSubscriptionRequestResult struct {
Request model.PlcSubscriptionRequest
Response model.PlcSubscriptionResponse
@@ -39,3 +45,73 @@ func (d *DefaultPlcSubscriptionRequestResult) GetResponse() model.PlcSubscriptio
func (d *DefaultPlcSubscriptionRequestResult) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcSubscriptionRequestResult) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionRequestResult"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Response != nil {
+ if serializableField, ok := d.Response.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("response"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("response"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Response)
+ if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionRequestResult"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionRequestResult) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go
deleted file mode 100644
index dd04d7bb9f..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionRequestResult"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionRequestResult) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionRequestResult"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Response != nil {
- if serializableField, ok := d.Response.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("response"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("response"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Response)
- if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcSubscriptionRequestResult"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionRequestResult) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
deleted file mode 100644
index ac0e53efeb..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionRequest"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionRequest) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionRequest"); err != nil {
- return err
- }
- if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.types {
- _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("types", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.intervals {
-
- var elem interface{} = 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("intervals", utils.WithRenderAsList(true)); err != nil {
- return err
- }
-
- if d.subscriber != nil {
- if serializableField, ok := d.subscriber.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("subscriber"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("subscriber"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.subscriber)
- if err := writeBuffer.WriteString("subscriber", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcSubscriptionRequest"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionRequest) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
index bea5b331b3..1305eb7c91 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponse.go
@@ -20,22 +20,30 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcSubscriptionResponse
type DefaultPlcSubscriptionResponse struct {
DefaultResponse
request model.PlcSubscriptionRequest
- values map[string]model.PlcSubscriptionHandle
+ values map[string]*DefaultPlcSubscriptionResponseItem
}
func NewDefaultPlcSubscriptionResponse(request model.PlcSubscriptionRequest, responseCodes map[string]model.PlcResponseCode, values map[string]model.PlcSubscriptionHandle) *DefaultPlcSubscriptionResponse {
+ valueMap := map[string]*DefaultPlcSubscriptionResponseItem{}
+ for name, code := range responseCodes {
+ value := values[name]
+ valueMap[name] = NewSubscriptionResponseItem(code, value)
+ }
plcSubscriptionResponse := DefaultPlcSubscriptionResponse{
- DefaultResponse: NewDefaultResponse(responseCodes),
- request: request,
- values: values,
+ request: request,
+ values: valueMap,
}
for subscriptionTagName, consumers := range request.(*DefaultPlcSubscriptionRequest).preRegisteredConsumers {
subscriptionHandle, err := plcSubscriptionResponse.GetSubscriptionHandle(subscriptionTagName)
@@ -57,25 +65,86 @@ func (d *DefaultPlcSubscriptionResponse) GetTagNames() []string {
var tagNames []string
// We take the tag names from the request to keep order as map is not ordered
for _, name := range d.request.(*DefaultPlcSubscriptionRequest).GetTagNames() {
- if _, ok := d.responseCodes[name]; ok {
+ if _, ok := d.values[name]; ok {
tagNames = append(tagNames, name)
}
}
return tagNames
}
+func (d *DefaultPlcSubscriptionResponse) GetResponseCode(name string) model.PlcResponseCode {
+ return d.values[name].GetCode()
+}
+
func (d *DefaultPlcSubscriptionResponse) GetSubscriptionHandle(name string) (model.PlcSubscriptionHandle, error) {
- if d.responseCodes[name] != model.PlcResponseCode_OK {
+ if d.values[name].GetCode() != model.PlcResponseCode_OK {
return nil, errors.Errorf("%s failed to subscribe", name)
}
- return d.values[name], nil
+ return d.values[name].GetSubscriptionHandle(), nil
}
func (d *DefaultPlcSubscriptionResponse) GetSubscriptionHandles() []model.PlcSubscriptionHandle {
result := make([]model.PlcSubscriptionHandle, 0, len(d.values))
-
for _, value := range d.values {
- result = append(result, value)
+ result = append(result, value.GetSubscriptionHandle())
}
return result
}
+
+func (d *DefaultPlcSubscriptionResponse) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionResponse"); err != nil {
+ return err
+ }
+
+ if d.request != nil {
+ if serializableField, ok := d.request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.values {
+ _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("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionResponse"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionResponse) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponseItem.go b/plc4go/spi/model/DefaultPlcSubscriptionResponseItem.go
new file mode 100644
index 0000000000..3c41f1dd8c
--- /dev/null
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponseItem.go
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
+
+type DefaultPlcSubscriptionResponseItem struct {
+ code model.PlcResponseCode
+ subscriptionHandle model.PlcSubscriptionHandle
+}
+
+func NewSubscriptionResponseItem(code model.PlcResponseCode, subscriptionHandle model.PlcSubscriptionHandle) *DefaultPlcSubscriptionResponseItem {
+ return &DefaultPlcSubscriptionResponseItem{
+ code: code,
+ subscriptionHandle: subscriptionHandle,
+ }
+}
+
+func (r *DefaultPlcSubscriptionResponseItem) GetCode() model.PlcResponseCode {
+ return r.code
+}
+
+func (r *DefaultPlcSubscriptionResponseItem) GetSubscriptionHandle() model.PlcSubscriptionHandle {
+ return r.subscriptionHandle
+}
+
+func (d *DefaultPlcSubscriptionResponseItem) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcSubscriptionResponseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcSubscriptionResponseItem"); err != nil {
+ return err
+ }
+
+ {
+ stringValue := fmt.Sprintf("%v", d.code)
+ if err := writeBuffer.WriteString("code", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+
+ if d.subscriptionHandle != nil {
+ if serializableField, ok := d.subscriptionHandle.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("subscriptionHandle"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("subscriptionHandle"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.subscriptionHandle)
+ if err := writeBuffer.WriteString("subscriptionHandle", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("PlcSubscriptionResponseItem"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcSubscriptionResponseItem) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
deleted file mode 100644
index 2f60f76d61..0000000000
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcSubscriptionResponse"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcSubscriptionResponse) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcSubscriptionResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcSubscriptionResponse"); err != nil {
- return err
- }
- if err := d.DefaultResponse.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
-
- if d.request != nil {
- if serializableField, ok := d.request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.values {
-
- var elem interface{} = 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("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcSubscriptionResponse"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcSubscriptionResponse) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcTagRequest.go b/plc4go/spi/model/DefaultPlcTagRequest.go
index d91e065fe6..3a7a4b713c 100644
--- a/plc4go/spi/model/DefaultPlcTagRequest.go
+++ b/plc4go/spi/model/DefaultPlcTagRequest.go
@@ -20,10 +20,14 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcTagRequest
type DefaultPlcTagRequest struct {
tags map[string]model.PlcTag
tagNames []string
@@ -47,3 +51,48 @@ func (d *DefaultPlcTagRequest) GetTag(name string) model.PlcTag {
}
return nil
}
+
+func (d *DefaultPlcTagRequest) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcTagRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("tags"); err != nil {
+ return err
+ }
+ for name, elem := range d.tags {
+ var elem interface{} = 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("tags"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcTagRequest) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
deleted file mode 100644
index 0bce50167e..0000000000
--- a/plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcTagRequest"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcTagRequest) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcTagRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcTagRequest"); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tags {
-
- var elem interface{} = 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("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for _, elem := range d.tagNames {
- if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("PlcTagRequest"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcTagRequest) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult.go b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult.go
index 41d6c7df0f..9dd5b91377 100644
--- a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult.go
+++ b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult.go
@@ -19,9 +19,15 @@
package model
-import "github.com/apache/plc4x/plc4go/pkg/api/model"
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcUnsubscriptionRequestResult
type DefaultPlcUnsubscriptionRequestResult struct {
Request model.PlcUnsubscriptionRequest
Response model.PlcUnsubscriptionResponse
@@ -39,3 +45,73 @@ func (d *DefaultPlcUnsubscriptionRequestResult) GetResponse() model.PlcUnsubscri
func (d *DefaultPlcUnsubscriptionRequestResult) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcUnsubscriptionRequestResult) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcUnsubscriptionRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcUnsubscriptionRequestResult"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Response != nil {
+ if serializableField, ok := d.Response.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("response"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("response"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Response)
+ if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcUnsubscriptionRequestResult"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcUnsubscriptionRequestResult) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go
deleted file mode 100644
index 2b5237bae3..0000000000
--- a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcUnsubscriptionRequestResult"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcUnsubscriptionRequestResult) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcUnsubscriptionRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcUnsubscriptionRequestResult"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Response != nil {
- if serializableField, ok := d.Response.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("response"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("response"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Response)
- if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcUnsubscriptionRequestResult"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcUnsubscriptionRequestResult) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest.go b/plc4go/spi/model/DefaultPlcWriteRequest.go
index af5a2108d9..3547da5e97 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequest.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequest.go
@@ -21,16 +21,18 @@ package model
import (
"context"
+ "encoding/binary"
+ "fmt"
"time"
"github.com/apache/plc4x/plc4go/pkg/api/model"
"github.com/apache/plc4x/plc4go/pkg/api/values"
"github.com/apache/plc4x/plc4go/spi"
"github.com/apache/plc4x/plc4go/spi/interceptors"
+ "github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcWriteRequestBuilder
type DefaultPlcWriteRequestBuilder struct {
writer spi.PlcWriter
tagHandler spi.PlcTagHandler
@@ -115,7 +117,6 @@ func (m *DefaultPlcWriteRequestBuilder) Build() (model.PlcWriteRequest, error) {
return NewDefaultPlcWriteRequest(m.tags, m.tagNames, plcValues, m.writer, m.writeRequestInterceptor), nil
}
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcWriteRequest
type DefaultPlcWriteRequest struct {
DefaultPlcTagRequest
values map[string]values.PlcValue
@@ -187,3 +188,96 @@ func (d *DefaultPlcWriteRequest) GetWriteRequestInterceptor() interceptors.Write
func (d *DefaultPlcWriteRequest) GetValue(name string) values.PlcValue {
return d.values[name]
}
+
+func (d *DefaultPlcWriteRequest) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcWriteRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcWriteRequest"); err != nil {
+ return err
+ }
+ if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.values {
+
+ var elem interface{} = 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("values", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+
+ if d.writer != nil {
+ if serializableField, ok := d.writer.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("writer"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("writer"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.writer)
+ if err := writeBuffer.WriteString("writer", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.writeRequestInterceptor != nil {
+ if serializableField, ok := d.writeRequestInterceptor.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("writeRequestInterceptor"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("writeRequestInterceptor"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.writeRequestInterceptor)
+ if err := writeBuffer.WriteString("writeRequestInterceptor", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PopContext("PlcWriteRequest"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcWriteRequest) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
deleted file mode 100644
index 841afc30a3..0000000000
--- a/plc4go/spi/model/DefaultPlcWriteRequestBuilder_plc4xgen.go
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcWriteRequestBuilder"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcWriteRequestBuilder) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcWriteRequestBuilder) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcWriteRequestBuilder"); err != nil {
- return err
- }
-
- if d.writer != nil {
- if serializableField, ok := d.writer.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("writer"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("writer"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.writer)
- if err := writeBuffer.WriteString("writer", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.tagHandler != nil {
- if serializableField, ok := d.tagHandler.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("tagHandler"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("tagHandler"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.tagHandler)
- if err := writeBuffer.WriteString("tagHandler", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.valueHandler != nil {
- if serializableField, ok := d.valueHandler.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("valueHandler"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("valueHandler"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.valueHandler)
- if err := writeBuffer.WriteString("valueHandler", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PushContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for _, elem := range d.tagNames {
- if err := writeBuffer.WriteString("", uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagNames", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tagAddresses {
-
- if err := writeBuffer.WriteString(name, uint32(len(elem)*8), "UTF-8", elem); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("tagAddresses", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.tags {
-
- var elem interface{} = 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("tags", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.values {
- _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("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
-
- if d.writeRequestInterceptor != nil {
- if serializableField, ok := d.writeRequestInterceptor.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("writeRequestInterceptor"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("writeRequestInterceptor"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.writeRequestInterceptor)
- if err := writeBuffer.WriteString("writeRequestInterceptor", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcWriteRequestBuilder"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcWriteRequestBuilder) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestResult.go b/plc4go/spi/model/DefaultPlcWriteRequestResult.go
index 442d6b6513..6e4f17e2a6 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequestResult.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequestResult.go
@@ -19,9 +19,15 @@
package model
-import "github.com/apache/plc4x/plc4go/pkg/api/model"
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
+ "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcWriteRequestResult
type DefaultPlcWriteRequestResult struct {
Request model.PlcWriteRequest
Response model.PlcWriteResponse
@@ -39,3 +45,73 @@ func (d *DefaultPlcWriteRequestResult) GetResponse() model.PlcWriteResponse {
func (d *DefaultPlcWriteRequestResult) GetErr() error {
return d.Err
}
+
+func (d *DefaultPlcWriteRequestResult) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcWriteRequestResult"); err != nil {
+ return err
+ }
+
+ if d.Request != nil {
+ if serializableField, ok := d.Request.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("request"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("request"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Response != nil {
+ if serializableField, ok := d.Response.(utils.Serializable); ok {
+ if err := writeBuffer.PushContext("response"); err != nil {
+ return err
+ }
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("response"); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.Response)
+ if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+
+ if d.Err != nil {
+ if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
+ return err
+ }
+ }
+ if err := writeBuffer.PopContext("PlcWriteRequestResult"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcWriteRequestResult) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go
deleted file mode 100644
index 66cc2337c7..0000000000
--- a/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcWriteRequestResult"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcWriteRequestResult) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcWriteRequestResult"); err != nil {
- return err
- }
-
- if d.Request != nil {
- if serializableField, ok := d.Request.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("request"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("request"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Request)
- if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Response != nil {
- if serializableField, ok := d.Response.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("response"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("response"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.Response)
- if err := writeBuffer.WriteString("response", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.Err != nil {
- if err := writeBuffer.WriteString("err", uint32(len(d.Err.Error())*8), "UTF-8", d.Err.Error()); err != nil {
- return err
- }
- }
- if err := writeBuffer.PopContext("PlcWriteRequestResult"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcWriteRequestResult) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
deleted file mode 100644
index 36c8ef1a7f..0000000000
--- a/plc4go/spi/model/DefaultPlcWriteRequest_plc4xgen.go
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultPlcWriteRequest"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultPlcWriteRequest) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultPlcWriteRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("PlcWriteRequest"); err != nil {
- return err
- }
- if err := d.DefaultPlcTagRequest.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.values {
-
- var elem interface{} = 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("values", utils.WithRenderAsList(true)); err != nil {
- return err
- }
-
- if d.writer != nil {
- if serializableField, ok := d.writer.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("writer"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("writer"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.writer)
- if err := writeBuffer.WriteString("writer", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
-
- if d.writeRequestInterceptor != nil {
- if serializableField, ok := d.writeRequestInterceptor.(utils.Serializable); ok {
- if err := writeBuffer.PushContext("writeRequestInterceptor"); err != nil {
- return err
- }
- if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("writeRequestInterceptor"); err != nil {
- return err
- }
- } else {
- stringValue := fmt.Sprintf("%v", d.writeRequestInterceptor)
- if err := writeBuffer.WriteString("writeRequestInterceptor", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
- return err
- }
- }
- }
- if err := writeBuffer.PopContext("PlcWriteRequest"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultPlcWriteRequest) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse.go b/plc4go/spi/model/DefaultPlcWriteResponse.go
index af331339a6..2c53cabe2f 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse.go
@@ -20,19 +20,24 @@
package model
import (
+ "context"
+ "encoding/binary"
+ "fmt"
+
"github.com/apache/plc4x/plc4go/pkg/api/model"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultPlcWriteResponse
type DefaultPlcWriteResponse struct {
DefaultResponse
- request model.PlcWriteRequest
+ request model.PlcWriteRequest
+ responseCodes map[string]model.PlcResponseCode
}
func NewDefaultPlcWriteResponse(request model.PlcWriteRequest, responseCodes map[string]model.PlcResponseCode) model.PlcWriteResponse {
return &DefaultPlcWriteResponse{
- DefaultResponse: NewDefaultResponse(responseCodes),
- request: request,
+ request: request,
+ responseCodes: responseCodes,
}
}
@@ -50,3 +55,75 @@ func (m *DefaultPlcWriteResponse) GetTagNames() []string {
func (m *DefaultPlcWriteResponse) GetRequest() model.PlcWriteRequest {
return m.request
}
+
+func (m *DefaultPlcWriteResponse) GetResponseCode(name string) model.PlcResponseCode {
+ return m.responseCodes[name]
+}
+
+func (d *DefaultPlcWriteResponse) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultPlcWriteResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcWriteResponse"); err != nil {
+ return err
+ }
+ if err := d.DefaultResponse.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+
+ if d.request != nil {
+ if serializableField, ok := d.request.(utils.Serializable); ok {
+ if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+ return err
+ }
+ } else {
+ stringValue := fmt.Sprintf("%v", d.request)
+ if err := writeBuffer.WriteString("request", uint32(len(stringValue)*8), "UTF-8", stringValue); err != nil {
+ return err
+ }
+ }
+ }
+ if err := writeBuffer.PushContext("responseCodes", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ for name, elem := range d.responseCodes {
+
+ var elem interface{} = 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("responseCodes", utils.WithRenderAsList(true)); err != nil {
+ return err
+ }
+ if err := writeBuffer.PopContext("PlcWriteResponse"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (d *DefaultPlcWriteResponse) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/spi/model/DefaultResponse.go b/plc4go/spi/model/DefaultResponse.go
index aee5984d94..3ecdf43745 100644
--- a/plc4go/spi/model/DefaultResponse.go
+++ b/plc4go/spi/model/DefaultResponse.go
@@ -20,22 +20,39 @@
package model
import (
- "github.com/apache/plc4x/plc4go/pkg/api/model"
+ "context"
+ "encoding/binary"
+
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DefaultResponse
type DefaultResponse struct {
- responseCodes map[string]model.PlcResponseCode
}
func (d *DefaultResponse) IsAPlcMessage() bool {
return true
}
-func (d *DefaultResponse) GetResponseCode(name string) model.PlcResponseCode {
- return d.responseCodes[name]
+func NewDefaultResponse() DefaultResponse {
+ return DefaultResponse{}
+}
+
+func (d *DefaultResponse) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (d *DefaultResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ return nil
}
-func NewDefaultResponse(responseCodes map[string]model.PlcResponseCode) DefaultResponse {
- return DefaultResponse{responseCodes}
+func (d *DefaultResponse) String() string {
+ writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+ if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+ return err.Error()
+ }
+ return writeBuffer.GetBox().String()
}
diff --git a/plc4go/spi/model/DefaultResponse_plc4xgen.go b/plc4go/spi/model/DefaultResponse_plc4xgen.go
deleted file mode 100644
index 5d05563492..0000000000
--- a/plc4go/spi/model/DefaultResponse_plc4xgen.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Code generated by "plc4xgenerator -type=DefaultResponse"; DO NOT EDIT.
-
-package model
-
-import (
- "context"
- "encoding/binary"
- "fmt"
- "github.com/apache/plc4x/plc4go/spi/utils"
-)
-
-var _ = fmt.Printf
-
-func (d *DefaultResponse) Serialize() ([]byte, error) {
- wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
- if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
- return nil, err
- }
- return wb.GetBytes(), nil
-}
-
-func (d *DefaultResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
- if err := writeBuffer.PushContext("Response"); err != nil {
- return err
- }
- if err := writeBuffer.PushContext("responseCodes", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- for name, elem := range d.responseCodes {
-
- var elem interface{} = 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("responseCodes", utils.WithRenderAsList(true)); err != nil {
- return err
- }
- if err := writeBuffer.PopContext("Response"); err != nil {
- return err
- }
- return nil
-}
-
-func (d *DefaultResponse) String() string {
- writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
- if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
- return err.Error()
- }
- return writeBuffer.GetBox().String()
-}
diff --git a/plc4go/spi/utils/WriteBufferXmlBased.go b/plc4go/spi/utils/WriteBufferXmlBased.go
index a56d0f6ad9..887f8ef031 100644
--- a/plc4go/spi/utils/WriteBufferXmlBased.go
+++ b/plc4go/spi/utils/WriteBufferXmlBased.go
@@ -161,12 +161,12 @@ func (x *xmlWriteBuffer) WriteBigInt(logicalName string, bitLength uint8, value
func (x *xmlWriteBuffer) WriteFloat32(logicalName string, bitLength uint8, value float32, writerArgs ...WithWriterArgs) error {
x.move(uint(bitLength))
- return x.encodeElement(logicalName, value, x.generateAttr(rwFloatKey, uint(bitLength), writerArgs...), writerArgs...)
+ return x.encodeElement(logicalName, fmt.Sprintf("%16.16f", value), x.generateAttr(rwFloatKey, uint(bitLength), writerArgs...), writerArgs...)
}
func (x *xmlWriteBuffer) WriteFloat64(logicalName string, bitLength uint8, value float64, writerArgs ...WithWriterArgs) error {
x.move(uint(bitLength))
- return x.encodeElement(logicalName, value, x.generateAttr(rwFloatKey, uint(bitLength), writerArgs...), writerArgs...)
+ return x.encodeElement(logicalName, fmt.Sprintf("%32.32f", value), x.generateAttr(rwFloatKey, uint(bitLength), writerArgs...), writerArgs...)
}
func (x *xmlWriteBuffer) WriteBigFloat(logicalName string, bitLength uint8, value *big.Float, writerArgs ...WithWriterArgs) error {
diff --git a/plc4go/spi/values/PlcNull.go b/plc4go/spi/values/PlcNull.go
index b5d5abe2ea..cb74a3896f 100644
--- a/plc4go/spi/values/PlcNull.go
+++ b/plc4go/spi/values/PlcNull.go
@@ -20,9 +20,12 @@
package values
import (
+ "context"
+ "encoding/binary"
"fmt"
apiValues "github.com/apache/plc4x/plc4go/pkg/api/values"
+ "github.com/apache/plc4x/plc4go/spi/utils"
)
type PlcNull struct {
@@ -41,6 +44,21 @@ func (m PlcNull) GetPlcValueType() apiValues.PlcValueType {
return apiValues.NULL
}
+func (m PlcNull) Serialize() ([]byte, error) {
+ wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+ if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+ return nil, err
+ }
+ return wb.GetBytes(), nil
+}
+
+func (m PlcNull) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+ if err := writeBuffer.PushContext("PlcNULL"); err != nil {
+ return err
+ }
+ return writeBuffer.PopContext("PlcNULL")
+}
+
func (m PlcNull) String() string {
return fmt.Sprintf("%s", m.GetPlcValueType())
}
diff --git a/plc4go/spi/values/PlcValueAdapter.go b/plc4go/spi/values/PlcValueAdapter.go
index 828e9f79fa..bfce0e8995 100644
--- a/plc4go/spi/values/PlcValueAdapter.go
+++ b/plc4go/spi/values/PlcValueAdapter.go
@@ -21,11 +21,14 @@ package values
import (
apiValues "github.com/apache/plc4x/plc4go/pkg/api/values"
+ "github.com/apache/plc4x/plc4go/spi/utils"
+
"time"
)
// PlcValueAdapter Dummy structure
type PlcValueAdapter struct {
+ utils.Serializable
}
////////
diff --git a/plc4j/drivers/eip/pom.xml b/plc4j/drivers/eip/pom.xml
index 1e13a17dde..e0ce0db0d2 100644
--- a/plc4j/drivers/eip/pom.xml
+++ b/plc4j/drivers/eip/pom.xml
@@ -47,6 +47,7 @@
<protocolName>eip</protocolName>
<languageName>java</languageName>
<outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
</configuration>
</execution>
</executions>
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java
new file mode 100644
index 0000000000..ca5b95d13b
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public enum CIPDataTypeCode {
+ BOOL((int) 0X00C1, (short) 1),
+ SINT((int) 0X00C2, (short) 1),
+ INT((int) 0X00C3, (short) 2),
+ DINT((int) 0X00C4, (short) 4),
+ LINT((int) 0X00C5, (short) 8),
+ REAL((int) 0X00CA, (short) 4),
+ DWORD((int) 0X00D3, (short) 4),
+ Struct((int) 0X02A0, (short) 88),
+ STRING((int) 0X02A0, (short) 88);
+ private static final Map<Integer, CIPDataTypeCode> map;
+
+ static {
+ map = new HashMap<>();
+ for (CIPDataTypeCode value : CIPDataTypeCode.values()) {
+ map.put((int) value.getValue(), value);
+ }
+ }
+
+ private int value;
+ private short size;
+
+ CIPDataTypeCode(int value, short size) {
+ this.value = value;
+ this.size = size;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public short getSize() {
+ return size;
+ }
+
+ public static CIPDataTypeCode firstEnumForFieldSize(short fieldValue) {
+ for (CIPDataTypeCode _val : CIPDataTypeCode.values()) {
+ if (_val.getSize() == fieldValue) {
+ return _val;
+ }
+ }
+ return null;
+ }
+
+ public static List<CIPDataTypeCode> enumsForFieldSize(short fieldValue) {
+ List<CIPDataTypeCode> _values = new ArrayList();
+ for (CIPDataTypeCode _val : CIPDataTypeCode.values()) {
+ if (_val.getSize() == fieldValue) {
+ _values.add(_val);
+ }
+ }
+ return _values;
+ }
+
+ public static CIPDataTypeCode enumForValue(int value) {
+ return map.get(value);
+ }
+
+ public static Boolean isDefined(int value) {
+ return map.containsKey(value);
+ }
+}
diff --git a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStructTypeCode.java
similarity index 56%
copy from plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
copy to plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStructTypeCode.java
index 143b3cca35..2b0d234e90 100644
--- a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStructTypeCode.java
@@ -18,12 +18,37 @@
*/
package org.apache.plc4x.java.eip.readwrite;
-import org.apache.plc4x.test.driver.DriverTestsuiteRunner;
+import java.util.HashMap;
+import java.util.Map;
-public class EIPDriverTestsuite extends DriverTestsuiteRunner {
+// Code generated by code-generation. DO NOT EDIT.
- public EIPDriverTestsuite() {
- super("/protocols/eip/DriverTestsuite.xml");
+public enum CIPStructTypeCode {
+ STRING((int) 0x0FCE);
+ private static final Map<Integer, CIPStructTypeCode> map;
+
+ static {
+ map = new HashMap<>();
+ for (CIPStructTypeCode value : CIPStructTypeCode.values()) {
+ map.put((int) value.getValue(), value);
}
+ }
+
+ private int value;
+
+ CIPStructTypeCode(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public static CIPStructTypeCode enumForValue(int value) {
+ return map.get(value);
+ }
+ public static Boolean isDefined(int value) {
+ return map.containsKey(value);
+ }
}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipExchange.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipExchange.java
new file mode 100644
index 0000000000..f8a2480ee5
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipExchange.java
@@ -0,0 +1,204 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipExchange implements Message {
+
+ // Constant values.
+ public static final Integer ITEMCOUNT = 0x02;
+ public static final Long NULLPTR = 0x0L;
+ public static final Integer UNCONNECTEDDATA = 0x00B2;
+
+ // Properties.
+ protected final CipService service;
+
+ public CipExchange(CipService service) {
+ super();
+ this.service = service;
+ }
+
+ public CipService getService() {
+ return service;
+ }
+
+ public int getItemCount() {
+ return ITEMCOUNT;
+ }
+
+ public long getNullPtr() {
+ return NULLPTR;
+ }
+
+ public int getUnconnectedData() {
+ return UNCONNECTEDDATA;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipExchange");
+
+ // Const Field (itemCount)
+ writeConstField("itemCount", ITEMCOUNT, writeUnsignedInt(writeBuffer, 16));
+
+ // Const Field (nullPtr)
+ writeConstField("nullPtr", NULLPTR, writeUnsignedLong(writeBuffer, 32));
+
+ // Const Field (unconnectedData)
+ writeConstField("unconnectedData", UNCONNECTEDDATA, writeUnsignedInt(writeBuffer, 16));
+
+ // Implicit Field (size) (Used for parsing, but its value is not stored as it's implicitly given
+ // by the objects content)
+ int size = (int) (((getLengthInBytes()) - (8)) - (2));
+ writeImplicitField("size", size, writeUnsignedInt(writeBuffer, 16));
+
+ // Simple Field (service)
+ writeSimpleField("service", service, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("CipExchange");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ CipExchange _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Const Field (itemCount)
+ lengthInBits += 16;
+
+ // Const Field (nullPtr)
+ lengthInBits += 32;
+
+ // Const Field (unconnectedData)
+ lengthInBits += 16;
+
+ // Implicit Field (size)
+ lengthInBits += 16;
+
+ // Simple field (service)
+ lengthInBits += service.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static CipExchange staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 1)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 1, but got " + args.length);
+ }
+ Integer exchangeLen;
+ if (args[0] instanceof Integer) {
+ exchangeLen = (Integer) args[0];
+ } else if (args[0] instanceof String) {
+ exchangeLen = Integer.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type Integer or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ return staticParse(readBuffer, exchangeLen);
+ }
+
+ public static CipExchange staticParse(ReadBuffer readBuffer, Integer exchangeLen)
+ throws ParseException {
+ readBuffer.pullContext("CipExchange");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ int itemCount =
+ readConstField("itemCount", readUnsignedInt(readBuffer, 16), CipExchange.ITEMCOUNT);
+
+ long nullPtr = readConstField("nullPtr", readUnsignedLong(readBuffer, 32), CipExchange.NULLPTR);
+
+ int unconnectedData =
+ readConstField(
+ "unconnectedData", readUnsignedInt(readBuffer, 16), CipExchange.UNCONNECTEDDATA);
+
+ int size = readImplicitField("size", readUnsignedInt(readBuffer, 16));
+
+ CipService service =
+ readSimpleField(
+ "service",
+ new DataReaderComplexDefault<>(
+ () -> CipService.staticParse(readBuffer, (int) ((exchangeLen) - (10))),
+ readBuffer));
+
+ readBuffer.closeContext("CipExchange");
+ // Create the instance
+ CipExchange _cipExchange;
+ _cipExchange = new CipExchange(service);
+ return _cipExchange;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipExchange)) {
+ return false;
+ }
+ CipExchange that = (CipExchange) o;
+ return (getService() == that.getService()) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getService());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipRRData.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipRRData.java
new file mode 100644
index 0000000000..4e99f6cbdc
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipRRData.java
@@ -0,0 +1,192 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipRRData extends EipPacket implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getCommand() {
+ return (int) 0x006F;
+ }
+
+ // Properties.
+ protected final CipExchange exchange;
+
+ public CipRRData(
+ long sessionHandle,
+ long status,
+ List<Short> senderContext,
+ long options,
+ CipExchange exchange) {
+ super(sessionHandle, status, senderContext, options);
+ this.exchange = exchange;
+ }
+
+ public CipExchange getExchange() {
+ return exchange;
+ }
+
+ @Override
+ protected void serializeEipPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipRRData");
+
+ // Reserved Field (reserved)
+ writeReservedField(
+ "reserved",
+ (long) 0x00000000,
+ writeUnsignedLong(writeBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Reserved Field (reserved)
+ writeReservedField(
+ "reserved",
+ (int) 0x0000,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Simple Field (exchange)
+ writeSimpleField(
+ "exchange",
+ exchange,
+ new DataWriterComplexDefault<>(writeBuffer),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ writeBuffer.popContext("CipRRData");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipRRData _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 32;
+
+ // Reserved Field (reserved)
+ lengthInBits += 16;
+
+ // Simple field (exchange)
+ lengthInBits += exchange.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static EipPacketBuilder staticParseEipPacketBuilder(
+ ReadBuffer readBuffer, Integer packetLength) throws ParseException {
+ readBuffer.pullContext("CipRRData");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Long reservedField0 =
+ readReservedField(
+ "reserved",
+ readUnsignedLong(readBuffer, 32),
+ (long) 0x00000000,
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ Integer reservedField1 =
+ readReservedField(
+ "reserved",
+ readUnsignedInt(readBuffer, 16),
+ (int) 0x0000,
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ CipExchange exchange =
+ readSimpleField(
+ "exchange",
+ new DataReaderComplexDefault<>(
+ () -> CipExchange.staticParse(readBuffer, (int) ((packetLength) - (6))),
+ readBuffer),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ readBuffer.closeContext("CipRRData");
+ // Create the instance
+ return new CipRRDataBuilderImpl(exchange);
+ }
+
+ public static class CipRRDataBuilderImpl implements EipPacket.EipPacketBuilder {
+ private final CipExchange exchange;
+
+ public CipRRDataBuilderImpl(CipExchange exchange) {
+ this.exchange = exchange;
+ }
+
+ public CipRRData build(
+ long sessionHandle, long status, List<Short> senderContext, long options) {
+ CipRRData cipRRData = new CipRRData(sessionHandle, status, senderContext, options, exchange);
+ return cipRRData;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipRRData)) {
+ return false;
+ }
+ CipRRData that = (CipRRData) o;
+ return (getExchange() == that.getExchange()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getExchange());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadRequest.java
new file mode 100644
index 0000000000..3d5c349aec
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadRequest.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipReadRequest extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0x4C;
+ }
+
+ // Properties.
+ protected final byte requestPathSize;
+ protected final byte[] tag;
+ protected final int elementNb;
+
+ public CipReadRequest(byte requestPathSize, byte[] tag, int elementNb) {
+ super();
+ this.requestPathSize = requestPathSize;
+ this.tag = tag;
+ this.elementNb = elementNb;
+ }
+
+ public byte getRequestPathSize() {
+ return requestPathSize;
+ }
+
+ public byte[] getTag() {
+ return tag;
+ }
+
+ public int getElementNb() {
+ return elementNb;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipReadRequest");
+
+ // Simple Field (requestPathSize)
+ writeSimpleField("requestPathSize", requestPathSize, writeSignedByte(writeBuffer, 8));
+
+ // Array Field (tag)
+ writeByteArrayField("tag", tag, writeByteArray(writeBuffer, 8));
+
+ // Simple Field (elementNb)
+ writeSimpleField("elementNb", elementNb, writeUnsignedInt(writeBuffer, 16));
+
+ writeBuffer.popContext("CipReadRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipReadRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (requestPathSize)
+ lengthInBits += 8;
+
+ // Array field
+ if (tag != null) {
+ lengthInBits += 8 * tag.length;
+ }
+
+ // Simple field (elementNb)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("CipReadRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte requestPathSize = readSimpleField("requestPathSize", readSignedByte(readBuffer, 8));
+
+ byte[] tag = readBuffer.readByteArray("tag", Math.toIntExact(((requestPathSize) * (2))));
+
+ int elementNb = readSimpleField("elementNb", readUnsignedInt(readBuffer, 16));
+
+ readBuffer.closeContext("CipReadRequest");
+ // Create the instance
+ return new CipReadRequestBuilderImpl(requestPathSize, tag, elementNb);
+ }
+
+ public static class CipReadRequestBuilderImpl implements CipService.CipServiceBuilder {
+ private final byte requestPathSize;
+ private final byte[] tag;
+ private final int elementNb;
+
+ public CipReadRequestBuilderImpl(byte requestPathSize, byte[] tag, int elementNb) {
+ this.requestPathSize = requestPathSize;
+ this.tag = tag;
+ this.elementNb = elementNb;
+ }
+
+ public CipReadRequest build() {
+ CipReadRequest cipReadRequest = new CipReadRequest(requestPathSize, tag, elementNb);
+ return cipReadRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipReadRequest)) {
+ return false;
+ }
+ CipReadRequest that = (CipReadRequest) o;
+ return (getRequestPathSize() == that.getRequestPathSize())
+ && (getTag() == that.getTag())
+ && (getElementNb() == that.getElementNb())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getRequestPathSize(), getTag(), getElementNb());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadResponse.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadResponse.java
new file mode 100644
index 0000000000..c3e2821dc7
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipReadResponse.java
@@ -0,0 +1,217 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipReadResponse extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0xCC;
+ }
+
+ // Properties.
+ protected final short status;
+ protected final short extStatus;
+ protected final CIPDataTypeCode dataType;
+ protected final byte[] data;
+
+ public CipReadResponse(short status, short extStatus, CIPDataTypeCode dataType, byte[] data) {
+ super();
+ this.status = status;
+ this.extStatus = extStatus;
+ this.dataType = dataType;
+ this.data = data;
+ }
+
+ public short getStatus() {
+ return status;
+ }
+
+ public short getExtStatus() {
+ return extStatus;
+ }
+
+ public CIPDataTypeCode getDataType() {
+ return dataType;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipReadResponse");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (status)
+ writeSimpleField("status", status, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (extStatus)
+ writeSimpleField("extStatus", extStatus, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (dataType)
+ writeSimpleEnumField(
+ "dataType",
+ "CIPDataTypeCode",
+ dataType,
+ new DataWriterEnumDefault<>(
+ CIPDataTypeCode::getValue, CIPDataTypeCode::name, writeUnsignedInt(writeBuffer, 16)));
+
+ // Array Field (data)
+ writeByteArrayField("data", data, writeByteArray(writeBuffer, 8));
+
+ writeBuffer.popContext("CipReadResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipReadResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Simple field (status)
+ lengthInBits += 8;
+
+ // Simple field (extStatus)
+ lengthInBits += 8;
+
+ // Simple field (dataType)
+ lengthInBits += 16;
+
+ // Array field
+ if (data != null) {
+ lengthInBits += 8 * data.length;
+ }
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("CipReadResponse");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ short status = readSimpleField("status", readUnsignedShort(readBuffer, 8));
+
+ short extStatus = readSimpleField("extStatus", readUnsignedShort(readBuffer, 8));
+
+ CIPDataTypeCode dataType =
+ readEnumField(
+ "dataType",
+ "CIPDataTypeCode",
+ new DataReaderEnumDefault<>(
+ CIPDataTypeCode::enumForValue, readUnsignedInt(readBuffer, 16)));
+
+ byte[] data = readBuffer.readByteArray("data", Math.toIntExact((serviceLen) - (6)));
+
+ readBuffer.closeContext("CipReadResponse");
+ // Create the instance
+ return new CipReadResponseBuilderImpl(status, extStatus, dataType, data);
+ }
+
+ public static class CipReadResponseBuilderImpl implements CipService.CipServiceBuilder {
+ private final short status;
+ private final short extStatus;
+ private final CIPDataTypeCode dataType;
+ private final byte[] data;
+
+ public CipReadResponseBuilderImpl(
+ short status, short extStatus, CIPDataTypeCode dataType, byte[] data) {
+ this.status = status;
+ this.extStatus = extStatus;
+ this.dataType = dataType;
+ this.data = data;
+ }
+
+ public CipReadResponse build() {
+ CipReadResponse cipReadResponse = new CipReadResponse(status, extStatus, dataType, data);
+ return cipReadResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipReadResponse)) {
+ return false;
+ }
+ CipReadResponse that = (CipReadResponse) o;
+ return (getStatus() == that.getStatus())
+ && (getExtStatus() == that.getExtStatus())
+ && (getDataType() == that.getDataType())
+ && (getData() == that.getData())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getStatus(), getExtStatus(), getDataType(), getData());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java
new file mode 100644
index 0000000000..e2cb697b53
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class CipService implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Short getService();
+
+ public CipService() {
+ super();
+ }
+
+ protected abstract void serializeCipServiceChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipService");
+
+ // Discriminator Field (service) (Used as input to a switch field)
+ writeDiscriminatorField("service", getService(), writeUnsignedShort(writeBuffer, 8));
+
+ // Switch field (Serialize the sub-type)
+ serializeCipServiceChild(writeBuffer);
+
+ writeBuffer.popContext("CipService");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ CipService _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (service)
+ lengthInBits += 8;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static CipService staticParse(ReadBuffer readBuffer, Object... args)
+ throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 1)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 1, but got " + args.length);
+ }
+ Integer serviceLen;
+ if (args[0] instanceof Integer) {
+ serviceLen = (Integer) args[0];
+ } else if (args[0] instanceof String) {
+ serviceLen = Integer.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type Integer or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ return staticParse(readBuffer, serviceLen);
+ }
+
+ public static CipService staticParse(ReadBuffer readBuffer, Integer serviceLen)
+ throws ParseException {
+ readBuffer.pullContext("CipService");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ short service = readDiscriminatorField("service", readUnsignedShort(readBuffer, 8));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ CipServiceBuilder builder = null;
+ if (EvaluationHelper.equals(service, (short) 0x4C)) {
+ builder = CipReadRequest.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0xCC)) {
+ builder = CipReadResponse.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0x4D)) {
+ builder = CipWriteRequest.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0xCD)) {
+ builder = CipWriteResponse.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0x0A)) {
+ builder = MultipleServiceRequest.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0x8A)) {
+ builder = MultipleServiceResponse.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ } else if (EvaluationHelper.equals(service, (short) 0x52)) {
+ builder = CipUnconnectedRequest.staticParseCipServiceBuilder(readBuffer, serviceLen);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "service=" + service + "]");
+ }
+
+ readBuffer.closeContext("CipService");
+ // Create the instance
+ CipService _cipService = builder.build();
+ return _cipService;
+ }
+
+ public interface CipServiceBuilder {
+ CipService build();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipService)) {
+ return false;
+ }
+ CipService that = (CipService) o;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash();
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipUnconnectedRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipUnconnectedRequest.java
new file mode 100644
index 0000000000..cfeaf41e3c
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipUnconnectedRequest.java
@@ -0,0 +1,265 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipUnconnectedRequest extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0x52;
+ }
+
+ // Constant values.
+ public static final Integer ROUTE = 0x0001;
+
+ // Properties.
+ protected final CipService unconnectedService;
+ protected final byte backPlane;
+ protected final byte slot;
+
+ public CipUnconnectedRequest(CipService unconnectedService, byte backPlane, byte slot) {
+ super();
+ this.unconnectedService = unconnectedService;
+ this.backPlane = backPlane;
+ this.slot = slot;
+ }
+
+ public CipService getUnconnectedService() {
+ return unconnectedService;
+ }
+
+ public byte getBackPlane() {
+ return backPlane;
+ }
+
+ public byte getSlot() {
+ return slot;
+ }
+
+ public int getRoute() {
+ return ROUTE;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipUnconnectedRequest");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x02, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x20, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x06, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x24, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x01, writeUnsignedShort(writeBuffer, 8));
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (int) 0x9D05, writeUnsignedInt(writeBuffer, 16));
+
+ // Implicit Field (messageSize) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ int messageSize = (int) (((getLengthInBytes()) - (10)) - (4));
+ writeImplicitField("messageSize", messageSize, writeUnsignedInt(writeBuffer, 16));
+
+ // Simple Field (unconnectedService)
+ writeSimpleField(
+ "unconnectedService", unconnectedService, new DataWriterComplexDefault<>(writeBuffer));
+
+ // Const Field (route)
+ writeConstField("route", ROUTE, writeUnsignedInt(writeBuffer, 16));
+
+ // Simple Field (backPlane)
+ writeSimpleField("backPlane", backPlane, writeSignedByte(writeBuffer, 8));
+
+ // Simple Field (slot)
+ writeSimpleField("slot", slot, writeSignedByte(writeBuffer, 8));
+
+ writeBuffer.popContext("CipUnconnectedRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipUnconnectedRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Reserved Field (reserved)
+ lengthInBits += 16;
+
+ // Implicit Field (messageSize)
+ lengthInBits += 16;
+
+ // Simple field (unconnectedService)
+ lengthInBits += unconnectedService.getLengthInBits();
+
+ // Const Field (route)
+ lengthInBits += 16;
+
+ // Simple field (backPlane)
+ lengthInBits += 8;
+
+ // Simple field (slot)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("CipUnconnectedRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x02);
+
+ Short reservedField1 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x20);
+
+ Short reservedField2 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x06);
+
+ Short reservedField3 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x24);
+
+ Short reservedField4 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x01);
+
+ Integer reservedField5 =
+ readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x9D05);
+
+ int messageSize = readImplicitField("messageSize", readUnsignedInt(readBuffer, 16));
+
+ CipService unconnectedService =
+ readSimpleField(
+ "unconnectedService",
+ new DataReaderComplexDefault<>(
+ () -> CipService.staticParse(readBuffer, (int) (messageSize)), readBuffer));
+
+ int route =
+ readConstField("route", readUnsignedInt(readBuffer, 16), CipUnconnectedRequest.ROUTE);
+
+ byte backPlane = readSimpleField("backPlane", readSignedByte(readBuffer, 8));
+
+ byte slot = readSimpleField("slot", readSignedByte(readBuffer, 8));
+
+ readBuffer.closeContext("CipUnconnectedRequest");
+ // Create the instance
+ return new CipUnconnectedRequestBuilderImpl(unconnectedService, backPlane, slot);
+ }
+
+ public static class CipUnconnectedRequestBuilderImpl implements CipService.CipServiceBuilder {
+ private final CipService unconnectedService;
+ private final byte backPlane;
+ private final byte slot;
+
+ public CipUnconnectedRequestBuilderImpl(
+ CipService unconnectedService, byte backPlane, byte slot) {
+ this.unconnectedService = unconnectedService;
+ this.backPlane = backPlane;
+ this.slot = slot;
+ }
+
+ public CipUnconnectedRequest build() {
+ CipUnconnectedRequest cipUnconnectedRequest =
+ new CipUnconnectedRequest(unconnectedService, backPlane, slot);
+ return cipUnconnectedRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipUnconnectedRequest)) {
+ return false;
+ }
+ CipUnconnectedRequest that = (CipUnconnectedRequest) o;
+ return (getUnconnectedService() == that.getUnconnectedService())
+ && (getBackPlane() == that.getBackPlane())
+ && (getSlot() == that.getSlot())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getUnconnectedService(), getBackPlane(), getSlot());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteRequest.java
new file mode 100644
index 0000000000..0726a38ec1
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteRequest.java
@@ -0,0 +1,231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipWriteRequest extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0x4D;
+ }
+
+ // Properties.
+ protected final byte requestPathSize;
+ protected final byte[] tag;
+ protected final CIPDataTypeCode dataType;
+ protected final int elementNb;
+ protected final byte[] data;
+
+ public CipWriteRequest(
+ byte requestPathSize, byte[] tag, CIPDataTypeCode dataType, int elementNb, byte[] data) {
+ super();
+ this.requestPathSize = requestPathSize;
+ this.tag = tag;
+ this.dataType = dataType;
+ this.elementNb = elementNb;
+ this.data = data;
+ }
+
+ public byte getRequestPathSize() {
+ return requestPathSize;
+ }
+
+ public byte[] getTag() {
+ return tag;
+ }
+
+ public CIPDataTypeCode getDataType() {
+ return dataType;
+ }
+
+ public int getElementNb() {
+ return elementNb;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipWriteRequest");
+
+ // Simple Field (requestPathSize)
+ writeSimpleField("requestPathSize", requestPathSize, writeSignedByte(writeBuffer, 8));
+
+ // Array Field (tag)
+ writeByteArrayField("tag", tag, writeByteArray(writeBuffer, 8));
+
+ // Simple Field (dataType)
+ writeSimpleEnumField(
+ "dataType",
+ "CIPDataTypeCode",
+ dataType,
+ new DataWriterEnumDefault<>(
+ CIPDataTypeCode::getValue, CIPDataTypeCode::name, writeUnsignedInt(writeBuffer, 16)));
+
+ // Simple Field (elementNb)
+ writeSimpleField("elementNb", elementNb, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (data)
+ writeByteArrayField("data", data, writeByteArray(writeBuffer, 8));
+
+ writeBuffer.popContext("CipWriteRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipWriteRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (requestPathSize)
+ lengthInBits += 8;
+
+ // Array field
+ if (tag != null) {
+ lengthInBits += 8 * tag.length;
+ }
+
+ // Simple field (dataType)
+ lengthInBits += 16;
+
+ // Simple field (elementNb)
+ lengthInBits += 16;
+
+ // Array field
+ if (data != null) {
+ lengthInBits += 8 * data.length;
+ }
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("CipWriteRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte requestPathSize = readSimpleField("requestPathSize", readSignedByte(readBuffer, 8));
+
+ byte[] tag = readBuffer.readByteArray("tag", Math.toIntExact((requestPathSize) * (2)));
+
+ CIPDataTypeCode dataType =
+ readEnumField(
+ "dataType",
+ "CIPDataTypeCode",
+ new DataReaderEnumDefault<>(
+ CIPDataTypeCode::enumForValue, readUnsignedInt(readBuffer, 16)));
+
+ int elementNb = readSimpleField("elementNb", readUnsignedInt(readBuffer, 16));
+
+ byte[] data =
+ readBuffer.readByteArray("data", Math.toIntExact((dataType.getSize()) * (elementNb)));
+
+ readBuffer.closeContext("CipWriteRequest");
+ // Create the instance
+ return new CipWriteRequestBuilderImpl(requestPathSize, tag, dataType, elementNb, data);
+ }
+
+ public static class CipWriteRequestBuilderImpl implements CipService.CipServiceBuilder {
+ private final byte requestPathSize;
+ private final byte[] tag;
+ private final CIPDataTypeCode dataType;
+ private final int elementNb;
+ private final byte[] data;
+
+ public CipWriteRequestBuilderImpl(
+ byte requestPathSize, byte[] tag, CIPDataTypeCode dataType, int elementNb, byte[] data) {
+ this.requestPathSize = requestPathSize;
+ this.tag = tag;
+ this.dataType = dataType;
+ this.elementNb = elementNb;
+ this.data = data;
+ }
+
+ public CipWriteRequest build() {
+ CipWriteRequest cipWriteRequest =
+ new CipWriteRequest(requestPathSize, tag, dataType, elementNb, data);
+ return cipWriteRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipWriteRequest)) {
+ return false;
+ }
+ CipWriteRequest that = (CipWriteRequest) o;
+ return (getRequestPathSize() == that.getRequestPathSize())
+ && (getTag() == that.getTag())
+ && (getDataType() == that.getDataType())
+ && (getElementNb() == that.getElementNb())
+ && (getData() == that.getData())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ super.hashCode(), getRequestPathSize(), getTag(), getDataType(), getElementNb(), getData());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteResponse.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteResponse.java
new file mode 100644
index 0000000000..ceeb18ed40
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipWriteResponse.java
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class CipWriteResponse extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0xCD;
+ }
+
+ // Properties.
+ protected final short status;
+ protected final short extStatus;
+
+ public CipWriteResponse(short status, short extStatus) {
+ super();
+ this.status = status;
+ this.extStatus = extStatus;
+ }
+
+ public short getStatus() {
+ return status;
+ }
+
+ public short getExtStatus() {
+ return extStatus;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("CipWriteResponse");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (status)
+ writeSimpleField("status", status, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (extStatus)
+ writeSimpleField("extStatus", extStatus, writeUnsignedShort(writeBuffer, 8));
+
+ writeBuffer.popContext("CipWriteResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ CipWriteResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Simple field (status)
+ lengthInBits += 8;
+
+ // Simple field (extStatus)
+ lengthInBits += 8;
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("CipWriteResponse");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
+
+ short status = readSimpleField("status", readUnsignedShort(readBuffer, 8));
+
+ short extStatus = readSimpleField("extStatus", readUnsignedShort(readBuffer, 8));
+
+ readBuffer.closeContext("CipWriteResponse");
+ // Create the instance
+ return new CipWriteResponseBuilderImpl(status, extStatus);
+ }
+
+ public static class CipWriteResponseBuilderImpl implements CipService.CipServiceBuilder {
+ private final short status;
+ private final short extStatus;
+
+ public CipWriteResponseBuilderImpl(short status, short extStatus) {
+ this.status = status;
+ this.extStatus = extStatus;
+ }
+
+ public CipWriteResponse build() {
+ CipWriteResponse cipWriteResponse = new CipWriteResponse(status, extStatus);
+ return cipWriteResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CipWriteResponse)) {
+ return false;
+ }
+ CipWriteResponse that = (CipWriteResponse) o;
+ return (getStatus() == that.getStatus())
+ && (getExtStatus() == that.getExtStatus())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getStatus(), getExtStatus());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EiPCommand.java
similarity index 54%
copy from plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
copy to plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EiPCommand.java
index 143b3cca35..54504c1d85 100644
--- a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EiPCommand.java
@@ -18,12 +18,39 @@
*/
package org.apache.plc4x.java.eip.readwrite;
-import org.apache.plc4x.test.driver.DriverTestsuiteRunner;
+import java.util.HashMap;
+import java.util.Map;
-public class EIPDriverTestsuite extends DriverTestsuiteRunner {
+// Code generated by code-generation. DO NOT EDIT.
- public EIPDriverTestsuite() {
- super("/protocols/eip/DriverTestsuite.xml");
+public enum EiPCommand {
+ RegisterSession((int) 0x0065),
+ UnregisterSession((int) 0x0066),
+ SendRRData((int) 0x006F);
+ private static final Map<Integer, EiPCommand> map;
+
+ static {
+ map = new HashMap<>();
+ for (EiPCommand value : EiPCommand.values()) {
+ map.put((int) value.getValue(), value);
}
+ }
+
+ private int value;
+
+ EiPCommand(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public static EiPCommand enumForValue(int value) {
+ return map.get(value);
+ }
+ public static Boolean isDefined(int value) {
+ return map.containsKey(value);
+ }
}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipConnectionRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipConnectionRequest.java
new file mode 100644
index 0000000000..dde1c17ef3
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipConnectionRequest.java
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EipConnectionRequest extends EipPacket implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getCommand() {
+ return (int) 0x0065;
+ }
+
+ // Constant values.
+ public static final Integer PROTOCOLVERSION = 0x01;
+ public static final Integer FLAGS = 0x00;
+
+ public EipConnectionRequest(
+ long sessionHandle, long status, List<Short> senderContext, long options) {
+ super(sessionHandle, status, senderContext, options);
+ }
+
+ public int getProtocolVersion() {
+ return PROTOCOLVERSION;
+ }
+
+ public int getFlags() {
+ return FLAGS;
+ }
+
+ @Override
+ protected void serializeEipPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("EipConnectionRequest");
+
+ // Const Field (protocolVersion)
+ writeConstField(
+ "protocolVersion",
+ PROTOCOLVERSION,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Const Field (flags)
+ writeConstField(
+ "flags",
+ FLAGS,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ writeBuffer.popContext("EipConnectionRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EipConnectionRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Const Field (protocolVersion)
+ lengthInBits += 16;
+
+ // Const Field (flags)
+ lengthInBits += 16;
+
+ return lengthInBits;
+ }
+
+ public static EipPacketBuilder staticParseEipPacketBuilder(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("EipConnectionRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ int protocolVersion =
+ readConstField(
+ "protocolVersion",
+ readUnsignedInt(readBuffer, 16),
+ EipConnectionRequest.PROTOCOLVERSION,
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ int flags =
+ readConstField(
+ "flags",
+ readUnsignedInt(readBuffer, 16),
+ EipConnectionRequest.FLAGS,
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ readBuffer.closeContext("EipConnectionRequest");
+ // Create the instance
+ return new EipConnectionRequestBuilderImpl();
+ }
+
+ public static class EipConnectionRequestBuilderImpl implements EipPacket.EipPacketBuilder {
+
+ public EipConnectionRequestBuilderImpl() {}
+
+ public EipConnectionRequest build(
+ long sessionHandle, long status, List<Short> senderContext, long options) {
+ EipConnectionRequest eipConnectionRequest =
+ new EipConnectionRequest(sessionHandle, status, senderContext, options);
+ return eipConnectionRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EipConnectionRequest)) {
+ return false;
+ }
+ EipConnectionRequest that = (EipConnectionRequest) o;
+ return super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipDisconnectRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipDisconnectRequest.java
new file mode 100644
index 0000000000..e06e803443
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipDisconnectRequest.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class EipDisconnectRequest extends EipPacket implements Message {
+
+ // Accessors for discriminator values.
+ public Integer getCommand() {
+ return (int) 0x0066;
+ }
+
+ public EipDisconnectRequest(
+ long sessionHandle, long status, List<Short> senderContext, long options) {
+ super(sessionHandle, status, senderContext, options);
+ }
+
+ @Override
+ protected void serializeEipPacketChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("EipDisconnectRequest");
+
+ writeBuffer.popContext("EipDisconnectRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ EipDisconnectRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ return lengthInBits;
+ }
+
+ public static EipPacketBuilder staticParseEipPacketBuilder(ReadBuffer readBuffer)
+ throws ParseException {
+ readBuffer.pullContext("EipDisconnectRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ readBuffer.closeContext("EipDisconnectRequest");
+ // Create the instance
+ return new EipDisconnectRequestBuilderImpl();
+ }
+
+ public static class EipDisconnectRequestBuilderImpl implements EipPacket.EipPacketBuilder {
+
+ public EipDisconnectRequestBuilderImpl() {}
+
+ public EipDisconnectRequest build(
+ long sessionHandle, long status, List<Short> senderContext, long options) {
+ EipDisconnectRequest eipDisconnectRequest =
+ new EipDisconnectRequest(sessionHandle, status, senderContext, options);
+ return eipDisconnectRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EipDisconnectRequest)) {
+ return false;
+ }
+ EipDisconnectRequest that = (EipDisconnectRequest) o;
+ return super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipPacket.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipPacket.java
new file mode 100644
index 0000000000..4f946e428b
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/EipPacket.java
@@ -0,0 +1,272 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public abstract class EipPacket implements Message {
+
+ // Abstract accessors for discriminator values.
+ public abstract Integer getCommand();
+
+ // Properties.
+ protected final long sessionHandle;
+ protected final long status;
+ protected final List<Short> senderContext;
+ protected final long options;
+
+ public EipPacket(long sessionHandle, long status, List<Short> senderContext, long options) {
+ super();
+ this.sessionHandle = sessionHandle;
+ this.status = status;
+ this.senderContext = senderContext;
+ this.options = options;
+ }
+
+ public long getSessionHandle() {
+ return sessionHandle;
+ }
+
+ public long getStatus() {
+ return status;
+ }
+
+ public List<Short> getSenderContext() {
+ return senderContext;
+ }
+
+ public long getOptions() {
+ return options;
+ }
+
+ protected abstract void serializeEipPacketChild(WriteBuffer writeBuffer)
+ throws SerializationException;
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("EipPacket");
+
+ // Discriminator Field (command) (Used as input to a switch field)
+ writeDiscriminatorField(
+ "command",
+ getCommand(),
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Implicit Field (packetLength) (Used for parsing, but its value is not stored as it's
+ // implicitly given by the objects content)
+ int packetLength = (int) ((getLengthInBytes()) - (24));
+ writeImplicitField(
+ "packetLength",
+ packetLength,
+ writeUnsignedInt(writeBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Simple Field (sessionHandle)
+ writeSimpleField(
+ "sessionHandle",
+ sessionHandle,
+ writeUnsignedLong(writeBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Simple Field (status)
+ writeSimpleField(
+ "status",
+ status,
+ writeUnsignedLong(writeBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Array Field (senderContext)
+ writeSimpleTypeArrayField(
+ "senderContext",
+ senderContext,
+ writeUnsignedShort(writeBuffer, 8),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Simple Field (options)
+ writeSimpleField(
+ "options",
+ options,
+ writeUnsignedLong(writeBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Switch field (Serialize the sub-type)
+ serializeEipPacketChild(writeBuffer);
+
+ writeBuffer.popContext("EipPacket");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ EipPacket _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Discriminator Field (command)
+ lengthInBits += 16;
+
+ // Implicit Field (packetLength)
+ lengthInBits += 16;
+
+ // Simple field (sessionHandle)
+ lengthInBits += 32;
+
+ // Simple field (status)
+ lengthInBits += 32;
+
+ // Array field
+ if (senderContext != null) {
+ lengthInBits += 8 * senderContext.size();
+ }
+
+ // Simple field (options)
+ lengthInBits += 32;
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits;
+ }
+
+ public static EipPacket staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
+ PositionAware positionAware = readBuffer;
+ return staticParse(readBuffer);
+ }
+
+ public static EipPacket staticParse(ReadBuffer readBuffer) throws ParseException {
+ readBuffer.pullContext("EipPacket");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ int command =
+ readDiscriminatorField(
+ "command",
+ readUnsignedInt(readBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ int packetLength =
+ readImplicitField(
+ "packetLength",
+ readUnsignedInt(readBuffer, 16),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ long sessionHandle =
+ readSimpleField(
+ "sessionHandle",
+ readUnsignedLong(readBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ long status =
+ readSimpleField(
+ "status",
+ readUnsignedLong(readBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ List<Short> senderContext =
+ readCountArrayField(
+ "senderContext",
+ readUnsignedShort(readBuffer, 8),
+ 8,
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ long options =
+ readSimpleField(
+ "options",
+ readUnsignedLong(readBuffer, 32),
+ WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ EipPacketBuilder builder = null;
+ if (EvaluationHelper.equals(command, (int) 0x0065)) {
+ builder = EipConnectionRequest.staticParseEipPacketBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(command, (int) 0x0066)) {
+ builder = EipDisconnectRequest.staticParseEipPacketBuilder(readBuffer);
+ } else if (EvaluationHelper.equals(command, (int) 0x006F)) {
+ builder = CipRRData.staticParseEipPacketBuilder(readBuffer, packetLength);
+ }
+ if (builder == null) {
+ throw new ParseException(
+ "Unsupported case for discriminated type" + " parameters [" + "command=" + command + "]");
+ }
+
+ readBuffer.closeContext("EipPacket");
+ // Create the instance
+ EipPacket _eipPacket = builder.build(sessionHandle, status, senderContext, options);
+ return _eipPacket;
+ }
+
+ public interface EipPacketBuilder {
+ EipPacket build(long sessionHandle, long status, List<Short> senderContext, long options);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof EipPacket)) {
+ return false;
+ }
+ EipPacket that = (EipPacket) o;
+ return (getSessionHandle() == that.getSessionHandle())
+ && (getStatus() == that.getStatus())
+ && (getSenderContext() == that.getSenderContext())
+ && (getOptions() == that.getOptions())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getSessionHandle(), getStatus(), getSenderContext(), getOptions());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceRequest.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceRequest.java
new file mode 100644
index 0000000000..e687185beb
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceRequest.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class MultipleServiceRequest extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0x0A;
+ }
+
+ // Constant values.
+ public static final Byte REQUESTPATHSIZE = 0x02;
+ public static final Long REQUESTPATH = 0x01240220L;
+
+ // Properties.
+ protected final Services data;
+
+ public MultipleServiceRequest(Services data) {
+ super();
+ this.data = data;
+ }
+
+ public Services getData() {
+ return data;
+ }
+
+ public byte getRequestPathSize() {
+ return REQUESTPATHSIZE;
+ }
+
+ public long getRequestPath() {
+ return REQUESTPATH;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("MultipleServiceRequest");
+
+ // Const Field (requestPathSize)
+ writeConstField("requestPathSize", REQUESTPATHSIZE, writeSignedByte(writeBuffer, 8));
+
+ // Const Field (requestPath)
+ writeConstField("requestPath", REQUESTPATH, writeUnsignedLong(writeBuffer, 32));
+
+ // Simple Field (data)
+ writeSimpleField("data", data, new DataWriterComplexDefault<>(writeBuffer));
+
+ writeBuffer.popContext("MultipleServiceRequest");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ MultipleServiceRequest _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Const Field (requestPathSize)
+ lengthInBits += 8;
+
+ // Const Field (requestPath)
+ lengthInBits += 32;
+
+ // Simple field (data)
+ lengthInBits += data.getLengthInBits();
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("MultipleServiceRequest");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ byte requestPathSize =
+ readConstField(
+ "requestPathSize",
+ readSignedByte(readBuffer, 8),
+ MultipleServiceRequest.REQUESTPATHSIZE);
+
+ long requestPath =
+ readConstField(
+ "requestPath", readUnsignedLong(readBuffer, 32), MultipleServiceRequest.REQUESTPATH);
+
+ Services data =
+ readSimpleField(
+ "data",
+ new DataReaderComplexDefault<>(
+ () -> Services.staticParse(readBuffer, (int) ((serviceLen) - (6))), readBuffer));
+
+ readBuffer.closeContext("MultipleServiceRequest");
+ // Create the instance
+ return new MultipleServiceRequestBuilderImpl(data);
+ }
+
+ public static class MultipleServiceRequestBuilderImpl implements CipService.CipServiceBuilder {
+ private final Services data;
+
+ public MultipleServiceRequestBuilderImpl(Services data) {
+ this.data = data;
+ }
+
+ public MultipleServiceRequest build() {
+ MultipleServiceRequest multipleServiceRequest = new MultipleServiceRequest(data);
+ return multipleServiceRequest;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof MultipleServiceRequest)) {
+ return false;
+ }
+ MultipleServiceRequest that = (MultipleServiceRequest) o;
+ return (getData() == that.getData()) && super.equals(that) && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), getData());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceResponse.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceResponse.java
new file mode 100644
index 0000000000..d0ed6918cd
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/MultipleServiceResponse.java
@@ -0,0 +1,238 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class MultipleServiceResponse extends CipService implements Message {
+
+ // Accessors for discriminator values.
+ public Short getService() {
+ return (short) 0x8A;
+ }
+
+ // Properties.
+ protected final short status;
+ protected final short extStatus;
+ protected final int serviceNb;
+ protected final List<Integer> offsets;
+ protected final byte[] servicesData;
+
+ public MultipleServiceResponse(
+ short status, short extStatus, int serviceNb, List<Integer> offsets, byte[] servicesData) {
+ super();
+ this.status = status;
+ this.extStatus = extStatus;
+ this.serviceNb = serviceNb;
+ this.offsets = offsets;
+ this.servicesData = servicesData;
+ }
+
+ public short getStatus() {
+ return status;
+ }
+
+ public short getExtStatus() {
+ return extStatus;
+ }
+
+ public int getServiceNb() {
+ return serviceNb;
+ }
+
+ public List<Integer> getOffsets() {
+ return offsets;
+ }
+
+ public byte[] getServicesData() {
+ return servicesData;
+ }
+
+ @Override
+ protected void serializeCipServiceChild(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("MultipleServiceResponse");
+
+ // Reserved Field (reserved)
+ writeReservedField("reserved", (short) 0x0, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (status)
+ writeSimpleField("status", status, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (extStatus)
+ writeSimpleField("extStatus", extStatus, writeUnsignedShort(writeBuffer, 8));
+
+ // Simple Field (serviceNb)
+ writeSimpleField("serviceNb", serviceNb, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (offsets)
+ writeSimpleTypeArrayField("offsets", offsets, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (servicesData)
+ writeByteArrayField("servicesData", servicesData, writeByteArray(writeBuffer, 8));
+
+ writeBuffer.popContext("MultipleServiceResponse");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = super.getLengthInBits();
+ MultipleServiceResponse _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Reserved Field (reserved)
+ lengthInBits += 8;
+
+ // Simple field (status)
+ lengthInBits += 8;
+
+ // Simple field (extStatus)
+ lengthInBits += 8;
+
+ // Simple field (serviceNb)
+ lengthInBits += 16;
+
+ // Array field
+ if (offsets != null) {
+ lengthInBits += 16 * offsets.size();
+ }
+
+ // Array field
+ if (servicesData != null) {
+ lengthInBits += 8 * servicesData.length;
+ }
+
+ return lengthInBits;
+ }
+
+ public static CipServiceBuilder staticParseCipServiceBuilder(
+ ReadBuffer readBuffer, Integer serviceLen) throws ParseException {
+ readBuffer.pullContext("MultipleServiceResponse");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ Short reservedField0 =
+ readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x0);
+
+ short status = readSimpleField("status", readUnsignedShort(readBuffer, 8));
+
+ short extStatus = readSimpleField("extStatus", readUnsignedShort(readBuffer, 8));
+
+ int serviceNb = readSimpleField("serviceNb", readUnsignedInt(readBuffer, 16));
+
+ List<Integer> offsets =
+ readCountArrayField("offsets", readUnsignedInt(readBuffer, 16), serviceNb);
+
+ byte[] servicesData =
+ readBuffer.readByteArray(
+ "servicesData", Math.toIntExact(((serviceLen) - (6)) - (((2) * (serviceNb)))));
+
+ readBuffer.closeContext("MultipleServiceResponse");
+ // Create the instance
+ return new MultipleServiceResponseBuilderImpl(
+ status, extStatus, serviceNb, offsets, servicesData);
+ }
+
+ public static class MultipleServiceResponseBuilderImpl implements CipService.CipServiceBuilder {
+ private final short status;
+ private final short extStatus;
+ private final int serviceNb;
+ private final List<Integer> offsets;
+ private final byte[] servicesData;
+
+ public MultipleServiceResponseBuilderImpl(
+ short status, short extStatus, int serviceNb, List<Integer> offsets, byte[] servicesData) {
+ this.status = status;
+ this.extStatus = extStatus;
+ this.serviceNb = serviceNb;
+ this.offsets = offsets;
+ this.servicesData = servicesData;
+ }
+
+ public MultipleServiceResponse build() {
+ MultipleServiceResponse multipleServiceResponse =
+ new MultipleServiceResponse(status, extStatus, serviceNb, offsets, servicesData);
+ return multipleServiceResponse;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof MultipleServiceResponse)) {
+ return false;
+ }
+ MultipleServiceResponse that = (MultipleServiceResponse) o;
+ return (getStatus() == that.getStatus())
+ && (getExtStatus() == that.getExtStatus())
+ && (getServiceNb() == that.getServiceNb())
+ && (getOffsets() == that.getOffsets())
+ && (getServicesData() == that.getServicesData())
+ && super.equals(that)
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ super.hashCode(),
+ getStatus(),
+ getExtStatus(),
+ getServiceNb(),
+ getOffsets(),
+ getServicesData());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/Services.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/Services.java
new file mode 100644
index 0000000000..d0c03e6eab
--- /dev/null
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/Services.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.eip.readwrite;
+
+import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
+import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
+import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
+
+import java.time.*;
+import java.util.*;
+import org.apache.plc4x.java.api.exceptions.*;
+import org.apache.plc4x.java.api.value.*;
+import org.apache.plc4x.java.spi.codegen.*;
+import org.apache.plc4x.java.spi.codegen.fields.*;
+import org.apache.plc4x.java.spi.codegen.io.*;
+import org.apache.plc4x.java.spi.generation.*;
+
+// Code generated by code-generation. DO NOT EDIT.
+
+public class Services implements Message {
+
+ // Properties.
+ protected final int serviceNb;
+ protected final List<Integer> offsets;
+ protected final List<CipService> services;
+
+ public Services(int serviceNb, List<Integer> offsets, List<CipService> services) {
+ super();
+ this.serviceNb = serviceNb;
+ this.offsets = offsets;
+ this.services = services;
+ }
+
+ public int getServiceNb() {
+ return serviceNb;
+ }
+
+ public List<Integer> getOffsets() {
+ return offsets;
+ }
+
+ public List<CipService> getServices() {
+ return services;
+ }
+
+ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
+ PositionAware positionAware = writeBuffer;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+ int startPos = positionAware.getPos();
+ writeBuffer.pushContext("Services");
+
+ // Simple Field (serviceNb)
+ writeSimpleField("serviceNb", serviceNb, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (offsets)
+ writeSimpleTypeArrayField("offsets", offsets, writeUnsignedInt(writeBuffer, 16));
+
+ // Array Field (services)
+ writeComplexTypeArrayField("services", services, writeBuffer);
+
+ writeBuffer.popContext("Services");
+ }
+
+ @Override
+ public int getLengthInBytes() {
+ return (int) Math.ceil((float) getLengthInBits() / 8.0);
+ }
+
+ @Override
+ public int getLengthInBits() {
+ int lengthInBits = 0;
+ Services _value = this;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ // Simple field (serviceNb)
+ lengthInBits += 16;
+
+ // Array field
+ if (offsets != null) {
+ lengthInBits += 16 * offsets.size();
+ }
+
+ // Array field
+ if (services != null) {
+ int i = 0;
+ for (CipService element : services) {
+ ThreadLocalHelper.lastItemThreadLocal.set(++i >= services.size());
+ lengthInBits += element.getLengthInBits();
+ }
+ }
+
+ return lengthInBits;
+ }
+
+ public static Services staticParse(ReadBuffer readBuffer, Object... args) throws ParseException {
+ PositionAware positionAware = readBuffer;
+ if ((args == null) || (args.length != 1)) {
+ throw new PlcRuntimeException(
+ "Wrong number of arguments, expected 1, but got " + args.length);
+ }
+ Integer servicesLen;
+ if (args[0] instanceof Integer) {
+ servicesLen = (Integer) args[0];
+ } else if (args[0] instanceof String) {
+ servicesLen = Integer.valueOf((String) args[0]);
+ } else {
+ throw new PlcRuntimeException(
+ "Argument 0 expected to be of type Integer or a string which is parseable but was "
+ + args[0].getClass().getName());
+ }
+ return staticParse(readBuffer, servicesLen);
+ }
+
+ public static Services staticParse(ReadBuffer readBuffer, Integer servicesLen)
+ throws ParseException {
+ readBuffer.pullContext("Services");
+ PositionAware positionAware = readBuffer;
+ int startPos = positionAware.getPos();
+ int curPos;
+ boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+
+ int serviceNb = readSimpleField("serviceNb", readUnsignedInt(readBuffer, 16));
+
+ List<Integer> offsets =
+ readCountArrayField("offsets", readUnsignedInt(readBuffer, 16), serviceNb);
+
+ List<CipService> services =
+ readCountArrayField(
+ "services",
+ new DataReaderComplexDefault<>(
+ () -> CipService.staticParse(readBuffer, (int) ((servicesLen) / (serviceNb))),
+ readBuffer),
+ serviceNb);
+
+ readBuffer.closeContext("Services");
+ // Create the instance
+ Services _services;
+ _services = new Services(serviceNb, offsets, services);
+ return _services;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Services)) {
+ return false;
+ }
+ Services that = (Services) o;
+ return (getServiceNb() == that.getServiceNb())
+ && (getOffsets() == that.getOffsets())
+ && (getServices() == that.getServices())
+ && true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getServiceNb(), getOffsets(), getServices());
+ }
+
+ @Override
+ public String toString() {
+ WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
+ try {
+ writeBufferBoxBased.writeSerializable(this);
+ } catch (SerializationException e) {
+ throw new RuntimeException(e);
+ }
+ return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
+ }
+}
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
index c150059cfc..d980541ab1 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
@@ -76,8 +76,9 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
EipConnectionRequest connectionRequest =
new EipConnectionRequest(0L, 0L, emptySenderContext, 0L);
context.sendRequest(connectionRequest)
- .expectResponse(EipPacket.class, REQUEST_TIMEOUT).unwrap(p -> p)
- .check(p -> p instanceof EipConnectionRequest)
+ .expectResponse(EipPacket.class, REQUEST_TIMEOUT)
+// .check(p -> p instanceof EipConnectionRequest)
+// .unwrap(p -> (EipConnectionRequest) p)
.handle(p -> {
if (p.getStatus() == 0L) {
sessionHandle = p.getSessionHandle();
@@ -248,14 +249,16 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
.expectResponse(EipPacket.class, REQUEST_TIMEOUT)
.onTimeout(future::completeExceptionally)
.onError((p, e) -> future.completeExceptionally(e))
- .check(p -> p instanceof CipRRData)
- .check(p -> p.getSessionHandle() == sessionHandle)
+ //.check(p -> p instanceof CipRRData)
+ //.check(p -> p.getSessionHandle() == sessionHandle)
//.check(p -> p.getSenderContext() == senderContext)
- .unwrap(p -> (CipRRData) p)
- .unwrap(p -> p.getExchange().getService()).check(p -> p instanceof CipReadResponse)
- .unwrap(p -> (CipReadResponse) p)
+ //.unwrap(p -> (CipRRData) p)
+ //.unwrap(p -> p.getExchange().getService())
+ //.check(p -> p instanceof CipReadResponse)
+ //.unwrap(p -> (CipReadResponse) p)
.handle(p -> {
- future.complete(p);
+ System.out.println(p);
+// future.complete(p);
// Finish the request-transaction.
transaction.endRequest();
}));
@@ -630,8 +633,14 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
@Override
public void close(ConversationContext<EipPacket> context) {
- logger.debug("Sending UnregisterSession EIP Pakcet");
+ logger.debug("Sending UnregisterSession EIP Packet");
context.sendRequest(new EipDisconnectRequest(sessionHandle, 0L, emptySenderContext, 0L)); //Unregister gets no response
- logger.debug("Unregistred Session {}", sessionHandle);
+ logger.debug("Unregistered Session {}", sessionHandle);
}
+
+ @Override
+ protected void decode(ConversationContext<EipPacket> context, EipPacket msg) throws Exception {
+ super.decode(context, msg);
+ }
+
}
diff --git a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java b/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverIT.java
similarity index 90%
rename from plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
rename to plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverIT.java
index 143b3cca35..68ca7ee0b2 100644
--- a/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverTestsuite.java
+++ b/plc4j/drivers/eip/src/test/java/org/apache/plc4x/java/eip/readwrite/EIPDriverIT.java
@@ -20,9 +20,9 @@ package org.apache.plc4x.java.eip.readwrite;
import org.apache.plc4x.test.driver.DriverTestsuiteRunner;
-public class EIPDriverTestsuite extends DriverTestsuiteRunner {
+public class EIPDriverIT extends DriverTestsuiteRunner {
- public EIPDriverTestsuite() {
+ public EIPDriverIT() {
super("/protocols/eip/DriverTestsuite.xml");
}
diff --git a/plc4j/drivers/eip/src/test/resources/logback-test.xml b/plc4j/drivers/eip/src/test/resources/logback-test.xml
index 2b9cea25dc..cc4250b212 100644
--- a/plc4j/drivers/eip/src/test/resources/logback-test.xml
+++ b/plc4j/drivers/eip/src/test/resources/logback-test.xml
@@ -29,7 +29,7 @@
</encoder>
</appender>
- <root level="error">
+ <root level="info">
<appender-ref ref="STDOUT" />
</root>
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/migration/MessageValidatorAndMigrator.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/migration/MessageValidatorAndMigrator.java
index 963fdb535e..f96c3f2543 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/migration/MessageValidatorAndMigrator.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/migration/MessageValidatorAndMigrator.java
@@ -153,7 +153,7 @@ public class MessageValidatorAndMigrator {
newXml = TestCasePatcher.indent(newXml, indent);
Pattern patternForReferenceXmlString = TestCasePatcher.getPatternForFragment(referenceXmlString);
if (!patternForReferenceXmlString.matcher(content).find()) {
- throw new RuntimeException("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nAutomigration failed: Can't match content. Patching won't work..\nTry to copy the above xml manually. \n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ throw new RuntimeException("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nAuto migration failed: Can't match content. Patching won't work..\nTry to copy the above xml manually. \n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
content = RegExUtils.replaceFirst(content, patternForReferenceXmlString, newXml + "\n");
try {
diff --git a/protocols/eip/src/test/resources/protocols/eip/DriverTestsuite.xml b/protocols/eip/src/test/resources/protocols/eip/DriverTestsuite.xml
index a78fc63408..98f44f1298 100644
--- a/protocols/eip/src/test/resources/protocols/eip/DriverTestsuite.xml
+++ b/protocols/eip/src/test/resources/protocols/eip/DriverTestsuite.xml
@@ -32,7 +32,7 @@
<outgoing-plc-message name="Send connection request">
<EipPacket>
<command dataType="uint" bitLength="16">101</command>
- <len dataType="uint" bitLength="16">4</len>
+ <packetLength dataType="uint" bitLength="16">4</packetLength>
<sessionHandle dataType="uint" bitLength="32">0</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -52,11 +52,11 @@
</EipConnectionRequest>
</EipPacket>
</outgoing-plc-message>
- <!-- The PLC will send the connection response with a sender context and session handle-->
+ <!-- The PLC will send the connection response with a sender context and session handle -->
<incoming-plc-message name="Receive connection response">
<EipPacket>
<command dataType="uint" bitLength="16">101</command>
- <len dataType="uint" bitLength="16">4</len>
+ <packetLength dataType="uint" bitLength="16">4</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -75,9 +75,9 @@
<flags dataType="uint" bitLength="16">0</flags>
</EipConnectionRequest>
</EipPacket>
-
</incoming-plc-message>
</setup>
+
<testcase>
<name>Single element read request</name>
<steps>
@@ -94,7 +94,7 @@
<outgoing-plc-message name="Send CipReadRequest to PLC">
<EipPacket>
<command dataType="uint" bitLength="16">111</command>
- <len dataType="uint" bitLength="16">40</len>
+ <packetLength dataType="uint" bitLength="16">40</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">
@@ -152,7 +152,7 @@
<incoming-plc-message name="Get CipReadResponse from PLC">
<EipPacket>
<command dataType="uint" bitLength="16">111</command>
- <len dataType="uint" bitLength="16">26</len>
+ <packetLength dataType="uint" bitLength="16">26</packetLength>
<sessionHandle dataType="uint" bitLength="32">1</sessionHandle>
<status dataType="uint" bitLength="32">0</status>
<senderContext isList="true">