This is an automated email from the ASF dual-hosted git repository. sruehl pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit d659670ea0234909f8737a1eed0eaf13368e1355 Author: Sebastian Rühl <[email protected]> AuthorDate: Mon Apr 19 17:40:58 2021 +0200 plc4go: implemented a xml reader based on the new ReadBuffer interface --- .../resources/templates/go/model-template.go.ftlh | 4 +- plc4go/go.mod | 2 +- .../model/AdsDeviceNotificationRequest.go | 1 + .../ads/readwrite/model/AdsNotificationSample.go | 1 + .../readwrite/model/AdsReadDeviceInfoResponse.go | 1 + .../plc4go/ads/readwrite/model/AdsReadResponse.go | 1 + .../ads/readwrite/model/AdsReadWriteRequest.go | 2 + .../ads/readwrite/model/AdsReadWriteResponse.go | 1 + .../plc4go/ads/readwrite/model/AdsStampHeader.go | 1 + .../ads/readwrite/model/AdsWriteControlRequest.go | 1 + .../plc4go/ads/readwrite/model/AdsWriteRequest.go | 1 + .../bacnetip/readwrite/model/BACnetAddress.go | 1 + ...firmedServiceRequestConfirmedCOVNotification.go | 2 + .../BACnetConfirmedServiceRequestReadProperty.go | 1 + .../BACnetConfirmedServiceRequestSubscribeCOV.go | 1 + .../BACnetConfirmedServiceRequestWriteProperty.go | 1 + .../readwrite/model/BACnetErrorReadProperty.go | 2 + .../model/BACnetServiceAckReadProperty.go | 1 + .../model/BACnetTagApplicationBitString.go | 1 + .../model/BACnetTagApplicationEnumerated.go | 1 + .../model/BACnetTagApplicationSignedInteger.go | 1 + .../model/BACnetTagApplicationUnsignedInteger.go | 1 + .../bacnetip/readwrite/model/BACnetTagContext.go | 1 + .../readwrite/model/BACnetTagWithContent.go | 1 + .../model/BACnetUnconfirmedServiceRequestIAm.go | 1 + ...rmedServiceRequestUnconfirmedPrivateTransfer.go | 1 + .../model/BACnetUnconfirmedServiceRequestWhoHas.go | 1 + .../model/BACnetUnconfirmedServiceRequestWhoIs.go | 2 + .../bacnetip/readwrite/model/BVLCForwardedNPDU.go | 1 + .../readwrite/model/NLMIAmRouterToNetwork.go | 1 + .../readwrite/model/NLMWhoIsRouterToNetwork.go | 1 + .../plc4go/bacnetip/readwrite/model/NPDU.go | 2 + .../model/ApduDataDeviceDescriptorResponse.go | 1 + .../readwrite/model/ApduDataExtAuthorizeRequest.go | 1 + .../model/ApduDataExtPropertyValueResponse.go | 1 + .../model/ApduDataExtPropertyValueWrite.go | 1 + .../readwrite/model/ApduDataGroupValueResponse.go | 1 + .../readwrite/model/ApduDataGroupValueWrite.go | 1 + .../readwrite/model/ApduDataMemoryResponse.go | 1 + .../model/ComObjectTableRealisationType1.go | 1 + .../model/ComObjectTableRealisationType2.go | 1 + .../knxnetip/readwrite/model/DIBDeviceInfo.go | 2 + .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go | 1 + .../plc4go/knxnetip/readwrite/model/IPAddress.go | 1 + .../plc4go/knxnetip/readwrite/model/LBusmonInd.go | 1 + .../plc4go/knxnetip/readwrite/model/LDataCon.go | 1 + .../knxnetip/readwrite/model/LDataExtended.go | 1 + .../plc4go/knxnetip/readwrite/model/LDataInd.go | 1 + .../plc4go/knxnetip/readwrite/model/LDataReq.go | 1 + .../plc4go/knxnetip/readwrite/model/LPollData.go | 1 + .../plc4go/knxnetip/readwrite/model/MACAddress.go | 1 + .../knxnetip/readwrite/model/UnknownMessage.go | 1 + .../model/ModbusPDUGetComEventLogResponse.go | 1 + .../readwrite/model/ModbusPDUReadCoilsResponse.go | 1 + .../model/ModbusPDUReadDiscreteInputsResponse.go | 1 + .../model/ModbusPDUReadFifoQueueResponse.go | 1 + .../model/ModbusPDUReadFileRecordRequest.go | 1 + .../model/ModbusPDUReadFileRecordResponse.go | 1 + .../model/ModbusPDUReadFileRecordResponseItem.go | 1 + .../model/ModbusPDUReadHoldingRegistersResponse.go | 1 + .../model/ModbusPDUReadInputRegistersResponse.go | 1 + ...sPDUReadWriteMultipleHoldingRegistersRequest.go | 1 + ...PDUReadWriteMultipleHoldingRegistersResponse.go | 1 + .../model/ModbusPDUReportServerIdResponse.go | 1 + .../model/ModbusPDUWriteFileRecordRequest.go | 1 + .../model/ModbusPDUWriteFileRecordRequestItem.go | 1 + .../model/ModbusPDUWriteFileRecordResponse.go | 1 + .../model/ModbusPDUWriteFileRecordResponseItem.go | 1 + .../model/ModbusPDUWriteMultipleCoilsRequest.go | 1 + ...odbusPDUWriteMultipleHoldingRegistersRequest.go | 1 + .../plc4go/s7/readwrite/model/COTPPacket.go | 1 + ...COTPParameterDisconnectAdditionalInformation.go | 1 + .../readwrite/model/S7ParameterReadVarRequest.go | 1 + .../s7/readwrite/model/S7ParameterUserData.go | 1 + .../readwrite/model/S7ParameterWriteVarRequest.go | 1 + .../s7/readwrite/model/S7PayloadReadVarResponse.go | 1 + .../plc4go/s7/readwrite/model/S7PayloadUserData.go | 1 + ...ayloadUserDataItemCpuFunctionReadSzlResponse.go | 1 + .../s7/readwrite/model/S7PayloadWriteVarRequest.go | 1 + .../readwrite/model/S7PayloadWriteVarResponse.go | 1 + .../s7/readwrite/model/S7VarPayloadDataItem.go | 1 + .../plc4go/s7/readwrite/model/SzlDataTreeItem.go | 1 + plc4go/internal/plc4go/s7/s7Io_test.go | 20 +- .../plc4go/spi/utils/ReadBufferByteBased.go | 50 +- .../plc4go/spi/utils/ReadBufferByteBased_test.go | 504 ++++++++++----------- .../plc4go/spi/utils/ReadBufferXmlBased.go | 346 ++++++++++++++ plc4go/internal/plc4go/spi/utils/WriteBuffer.go | 1 + .../plc4go/spi/utils/WriteBufferBoxBased.go | 6 + .../plc4go/spi/utils/WriteBufferByteBased.go | 46 +- .../plc4go/spi/utils/WriteBufferXmlBased.go | 7 + 90 files changed, 766 insertions(+), 306 deletions(-) diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh index 40f39bd..e659504 100644 --- a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh +++ b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh @@ -542,9 +542,9 @@ func ${type.name}Parse(io utils.ReadBuffer<#if type.parserArguments?has_content> <#switch field.typeName> <#case "array"> <#assign arrayField = field> - io.PullContext("${arrayField.name}") // Array field (${arrayField.name}) + io.PullContext("${arrayField.name}") <#-- Only update curPos if the length expression uses it --> <#if arrayField.loopExpression.contains("curPos")> curPos = io.GetPos() - startPos<@emitImport import="io" /> @@ -596,9 +596,9 @@ func ${type.name}Parse(io utils.ReadBuffer<#if type.parserArguments?has_content> <#if arrayField.loopExpression.contains("curPos")> curPos = io.GetPos() - startPos<@emitImport import="io" /> </#if> - io.CloseContext("${arrayField.name}") } </#if> + io.CloseContext("${arrayField.name}") <#break> <#case "checksum"> <#assign checksumField = field> diff --git a/plc4go/go.mod b/plc4go/go.mod index d1c879b..9f93746 100644 --- a/plc4go/go.mod +++ b/plc4go/go.mod @@ -28,6 +28,6 @@ require ( github.com/rs/zerolog v1.20.0 github.com/subchen/go-xmldom v1.1.2 github.com/tebeka/go2xunit v1.4.10 // indirect - golang.org/x/tools v0.1.0 // indirect + golang.org/x/tools v0.1.0 gotest.tools/gotestsum v1.6.4 // indirect ) diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go index 9bc6387..3344364 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go @@ -147,6 +147,7 @@ func AdsDeviceNotificationRequestParse(io utils.ReadBuffer) (*AdsData, error) { } adsStampHeaders[curItem] = _item } + io.CloseContext("adsStampHeaders") io.CloseContext("AdsDeviceNotificationRequest") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go index 3d7d351..9664b13 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go @@ -118,6 +118,7 @@ func AdsNotificationSampleParse(io utils.ReadBuffer) (*AdsNotificationSample, er } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsNotificationSample") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go index d5a8db7..e279ae8 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go @@ -168,6 +168,7 @@ func AdsReadDeviceInfoResponseParse(io utils.ReadBuffer) (*AdsData, error) { } device[curItem] = _item } + io.CloseContext("device") io.CloseContext("AdsReadDeviceInfoResponse") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go index ba102bc..a89d200 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go @@ -145,6 +145,7 @@ func AdsReadResponseParse(io utils.ReadBuffer) (*AdsData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsReadResponse") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go index 6a78dd3..322a1e7 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go @@ -177,6 +177,7 @@ func AdsReadWriteRequestParse(io utils.ReadBuffer) (*AdsData, error) { } items[curItem] = _item } + io.CloseContext("items") io.PullContext("data") // Array field (data) @@ -189,6 +190,7 @@ func AdsReadWriteRequestParse(io utils.ReadBuffer) (*AdsData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsReadWriteRequest") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go index 1c78f7c..d72edda 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go @@ -145,6 +145,7 @@ func AdsReadWriteResponseParse(io utils.ReadBuffer) (*AdsData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsReadWriteResponse") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go index e583b34..b479c27 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go @@ -119,6 +119,7 @@ func AdsStampHeaderParse(io utils.ReadBuffer) (*AdsStampHeader, error) { } adsNotificationSamples[curItem] = _item } + io.CloseContext("adsNotificationSamples") io.CloseContext("AdsStampHeader") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go index 5f6285d..18990fa 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go @@ -156,6 +156,7 @@ func AdsWriteControlRequestParse(io utils.ReadBuffer) (*AdsData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsWriteControlRequest") diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go index 96dfecb..eb721af 100644 --- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go +++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go @@ -156,6 +156,7 @@ func AdsWriteRequestParse(io utils.ReadBuffer) (*AdsData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("AdsWriteRequest") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go index 40b40fd..01c9e16 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go @@ -100,6 +100,7 @@ func BACnetAddressParse(io utils.ReadBuffer) (*BACnetAddress, error) { } address[curItem] = _item } + io.CloseContext("address") // Simple Field (port) port, _portErr := io.ReadUint16("port", 16) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go index 041adca..fbdbfab 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go @@ -258,6 +258,7 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io utils.ReadBuf } lifetimeSeconds[curItem] = _item } + io.CloseContext("lifetimeSeconds") // Const Field (listOfValuesOpeningTag) listOfValuesOpeningTag, _listOfValuesOpeningTagErr := io.ReadUint8("listOfValuesOpeningTag", 8) @@ -281,6 +282,7 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io utils.ReadBuf } notifications = append(notifications, _item) } + io.CloseContext("notifications") // Const Field (listOfValuesClosingTag) listOfValuesClosingTag, _listOfValuesClosingTagErr := io.ReadUint8("listOfValuesClosingTag", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go index 1269b19..2d1cb4f 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go @@ -182,6 +182,7 @@ func BACnetConfirmedServiceRequestReadPropertyParse(io utils.ReadBuffer) (*BACne } propertyIdentifier[curItem] = _item } + io.CloseContext("propertyIdentifier") io.CloseContext("BACnetConfirmedServiceRequestReadProperty") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go index b34e82a..3eeefcb 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go @@ -243,6 +243,7 @@ func BACnetConfirmedServiceRequestSubscribeCOVParse(io utils.ReadBuffer) (*BACne } lifetimeSeconds[curItem] = _item } + io.CloseContext("lifetimeSeconds") io.CloseContext("BACnetConfirmedServiceRequestSubscribeCOV") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go index 0a7ee68..fd72cc2 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go @@ -204,6 +204,7 @@ func BACnetConfirmedServiceRequestWritePropertyParse(io utils.ReadBuffer, len ui } propertyIdentifier[curItem] = _item } + io.CloseContext("propertyIdentifier") // Const Field (openingTag) openingTag, _openingTagErr := io.ReadUint8("openingTag", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go index c6ca28f..92e6674 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go @@ -163,6 +163,7 @@ func BACnetErrorReadPropertyParse(io utils.ReadBuffer) (*BACnetError, error) { } errorClass[curItem] = _item } + io.CloseContext("errorClass") // Const Field (errorCodeHeader) errorCodeHeader, _errorCodeHeaderErr := io.ReadUint8("errorCodeHeader", 5) @@ -190,6 +191,7 @@ func BACnetErrorReadPropertyParse(io utils.ReadBuffer) (*BACnetError, error) { } errorCode[curItem] = _item } + io.CloseContext("errorCode") io.CloseContext("BACnetErrorReadProperty") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go index c3bce18..52c33ec 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go @@ -195,6 +195,7 @@ func BACnetServiceAckReadPropertyParse(io utils.ReadBuffer) (*BACnetServiceAck, } propertyIdentifier[curItem] = _item } + io.CloseContext("propertyIdentifier") // Const Field (openingTag) openingTag, _openingTagErr := io.ReadUint8("openingTag", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go index 2316075..b109cbb 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go @@ -137,6 +137,7 @@ func BACnetTagApplicationBitStringParse(io utils.ReadBuffer, lengthValueType uin } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("BACnetTagApplicationBitString") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go index 9b469b4..eb09871 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go @@ -126,6 +126,7 @@ func BACnetTagApplicationEnumeratedParse(io utils.ReadBuffer, lengthValueType ui } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("BACnetTagApplicationEnumerated") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go index bb55169..be60a2d 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go @@ -126,6 +126,7 @@ func BACnetTagApplicationSignedIntegerParse(io utils.ReadBuffer, lengthValueType } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("BACnetTagApplicationSignedInteger") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go index ade1353..712ca43 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go @@ -126,6 +126,7 @@ func BACnetTagApplicationUnsignedIntegerParse(io utils.ReadBuffer, lengthValueTy } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("BACnetTagApplicationUnsignedInteger") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go index cca4dd3..f709ac0 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go @@ -126,6 +126,7 @@ func BACnetTagContextParse(io utils.ReadBuffer, typeOrTagNumber uint8, extTagNum } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("BACnetTagContext") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go index 76c33cb..a3820e2 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go @@ -176,6 +176,7 @@ func BACnetTagWithContentParse(io utils.ReadBuffer) (*BACnetTagWithContent, erro } propertyIdentifier = append(propertyIdentifier, _item) } + io.CloseContext("propertyIdentifier") // Const Field (openTag) openTag, _openTagErr := io.ReadUint8("openTag", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go index 8051c33..63c12c8 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go @@ -200,6 +200,7 @@ func BACnetUnconfirmedServiceRequestIAmParse(io utils.ReadBuffer) (*BACnetUnconf } maximumApduLengthAccepted[curItem] = _item } + io.CloseContext("maximumApduLengthAccepted") // Const Field (segmentationSupportedHeader) segmentationSupportedHeader, _segmentationSupportedHeaderErr := io.ReadUint8("segmentationSupportedHeader", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go index e3ed9c4..8bf080c 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go @@ -190,6 +190,7 @@ func BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(io utils.Rea } values = append(values, _item) } + io.CloseContext("values") // Const Field (listOfValuesClosingTag) listOfValuesClosingTag, _listOfValuesClosingTagErr := io.ReadUint8("listOfValuesClosingTag", 8) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go index 3ed7062..994a652 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go @@ -207,6 +207,7 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(io utils.ReadBuffer) (*BACnetUnc } objectName = append(objectName, _item) } + io.CloseContext("objectName") io.CloseContext("BACnetUnconfirmedServiceRequestWhoHas") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go index 017ccbe..c7b8a13 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go @@ -163,6 +163,7 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(io utils.ReadBuffer) (*BACnetUnco } deviceInstanceRangeLowLimit[curItem] = _item } + io.CloseContext("deviceInstanceRangeLowLimit") // Const Field (deviceInstanceRangeHighLimitHeader) deviceInstanceRangeHighLimitHeader, _deviceInstanceRangeHighLimitHeaderErr := io.ReadUint8("deviceInstanceRangeHighLimitHeader", 5) @@ -190,6 +191,7 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(io utils.ReadBuffer) (*BACnetUnco } deviceInstanceRangeHighLimit[curItem] = _item } + io.CloseContext("deviceInstanceRangeHighLimit") io.CloseContext("BACnetUnconfirmedServiceRequestWhoIs") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go index a07b9f3..01d4496 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go @@ -128,6 +128,7 @@ func BVLCForwardedNPDUParse(io utils.ReadBuffer, bvlcLength uint16) (*BVLC, erro } ip[curItem] = _item } + io.CloseContext("ip") // Simple Field (port) port, _portErr := io.ReadUint16("port", 16) diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go index c344692..a6ca2cb 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go @@ -121,6 +121,7 @@ func NLMIAmRouterToNetworkParse(io utils.ReadBuffer, apduLength uint16, messageT } destinationNetworkAddress = append(destinationNetworkAddress, _item) } + io.CloseContext("destinationNetworkAddress") io.CloseContext("NLMIAmRouterToNetwork") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go index e5b3750..25bae66 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go @@ -121,6 +121,7 @@ func NLMWhoIsRouterToNetworkParse(io utils.ReadBuffer, apduLength uint16, messag } destinationNetworkAddress = append(destinationNetworkAddress, _item) } + io.CloseContext("destinationNetworkAddress") io.CloseContext("NLMWhoIsRouterToNetwork") diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go index 0eb0439..ddd21a7 100644 --- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go +++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go @@ -260,6 +260,7 @@ func NPDUParse(io utils.ReadBuffer, npduLength uint16) (*NPDU, error) { } destinationAddress[curItem] = _item } + io.CloseContext("destinationAddress") // Optional Field (sourceNetworkAddress) (Can be skipped, if a given expression evaluates to false) var sourceNetworkAddress *uint16 = nil @@ -292,6 +293,7 @@ func NPDUParse(io utils.ReadBuffer, npduLength uint16) (*NPDU, error) { } sourceAddress[curItem] = _item } + io.CloseContext("sourceAddress") // Optional Field (hopCount) (Can be skipped, if a given expression evaluates to false) var hopCount *uint8 = nil diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go index 56aa4a3..30949eb 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go @@ -131,6 +131,7 @@ func ApduDataDeviceDescriptorResponseParse(io utils.ReadBuffer, dataLength uint8 } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataDeviceDescriptorResponse") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go index 4ef4716..50a5ed9 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go @@ -129,6 +129,7 @@ func ApduDataExtAuthorizeRequestParse(io utils.ReadBuffer) (*ApduDataExt, error) } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataExtAuthorizeRequest") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go index 29a65c6..3fa5f4a 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go @@ -162,6 +162,7 @@ func ApduDataExtPropertyValueResponseParse(io utils.ReadBuffer, length uint8) (* } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataExtPropertyValueResponse") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go index b867a14..cb7c832 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go @@ -162,6 +162,7 @@ func ApduDataExtPropertyValueWriteParse(io utils.ReadBuffer, length uint8) (*Apd } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataExtPropertyValueWrite") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go index 5b73e13..32c92e7 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go @@ -131,6 +131,7 @@ func ApduDataGroupValueResponseParse(io utils.ReadBuffer, dataLength uint8) (*Ap } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataGroupValueResponse") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go index 8dba516..746007d 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go @@ -131,6 +131,7 @@ func ApduDataGroupValueWriteParse(io utils.ReadBuffer, dataLength uint8) (*ApduD } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataGroupValueWrite") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go index 537a278..423837d 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go @@ -139,6 +139,7 @@ func ApduDataMemoryResponseParse(io utils.ReadBuffer) (*ApduData, error) { } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("ApduDataMemoryResponse") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go index 0203f7c..2010728 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go @@ -143,6 +143,7 @@ func ComObjectTableRealisationType1Parse(io utils.ReadBuffer) (*ComObjectTable, } comObjectDescriptors[curItem] = _item } + io.CloseContext("comObjectDescriptors") io.CloseContext("ComObjectTableRealisationType1") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go index eb38257..5db34a8 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go @@ -143,6 +143,7 @@ func ComObjectTableRealisationType2Parse(io utils.ReadBuffer) (*ComObjectTable, } comObjectDescriptors[curItem] = _item } + io.CloseContext("comObjectDescriptors") io.CloseContext("ComObjectTableRealisationType2") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go index 08ae060..97ba43f 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go @@ -172,6 +172,7 @@ func DIBDeviceInfoParse(io utils.ReadBuffer) (*DIBDeviceInfo, error) { } knxNetIpDeviceSerialNumber[curItem] = _item } + io.CloseContext("knxNetIpDeviceSerialNumber") // Simple Field (knxNetIpDeviceMulticastAddress) knxNetIpDeviceMulticastAddress, _knxNetIpDeviceMulticastAddressErr := IPAddressParse(io) @@ -196,6 +197,7 @@ func DIBDeviceInfoParse(io utils.ReadBuffer) (*DIBDeviceInfo, error) { } deviceFriendlyName[curItem] = _item } + io.CloseContext("deviceFriendlyName") io.CloseContext("DIBDeviceInfo") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go index f849f0d..2c4c72d 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go @@ -120,6 +120,7 @@ func DIBSuppSvcFamiliesParse(io utils.ReadBuffer) (*DIBSuppSvcFamilies, error) { } serviceIds = append(serviceIds, _item) } + io.CloseContext("serviceIds") io.CloseContext("DIBSuppSvcFamilies") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go index 039b0cc..815f811 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go @@ -98,6 +98,7 @@ func IPAddressParse(io utils.ReadBuffer) (*IPAddress, error) { } addr[curItem] = _item } + io.CloseContext("addr") io.CloseContext("IPAddress") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go index 64b15b7..cc9c65f 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go @@ -146,6 +146,7 @@ func LBusmonIndParse(io utils.ReadBuffer) (*CEMI, error) { } additionalInformation = append(additionalInformation, _item) } + io.CloseContext("additionalInformation") // Simple Field (dataFrame) dataFrame, _dataFrameErr := LDataFrameParse(io) diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go index 6391d07..0985cef 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go @@ -138,6 +138,7 @@ func LDataConParse(io utils.ReadBuffer) (*CEMI, error) { } additionalInformation = append(additionalInformation, _item) } + io.CloseContext("additionalInformation") // Simple Field (dataFrame) dataFrame, _dataFrameErr := LDataFrameParse(io) diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go index 882ade3..b82c2a7 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go @@ -181,6 +181,7 @@ func LDataExtendedParse(io utils.ReadBuffer) (*LDataFrame, error) { } destinationAddress[curItem] = _item } + io.CloseContext("destinationAddress") // Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content) dataLength, _dataLengthErr := io.ReadUint8("dataLength", 8) diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go index 0717368..0227623 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go @@ -138,6 +138,7 @@ func LDataIndParse(io utils.ReadBuffer) (*CEMI, error) { } additionalInformation = append(additionalInformation, _item) } + io.CloseContext("additionalInformation") // Simple Field (dataFrame) dataFrame, _dataFrameErr := LDataFrameParse(io) diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go index 44e0fec..06dfcde 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go @@ -138,6 +138,7 @@ func LDataReqParse(io utils.ReadBuffer) (*CEMI, error) { } additionalInformation = append(additionalInformation, _item) } + io.CloseContext("additionalInformation") // Simple Field (dataFrame) dataFrame, _dataFrameErr := LDataFrameParse(io) diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go index bda240e..e289b0d 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go @@ -149,6 +149,7 @@ func LPollDataParse(io utils.ReadBuffer) (*LDataFrame, error) { } targetAddress[curItem] = _item } + io.CloseContext("targetAddress") // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go index aa3070e..284f828 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go @@ -98,6 +98,7 @@ func MACAddressParse(io utils.ReadBuffer) (*MACAddress, error) { } addr[curItem] = _item } + io.CloseContext("addr") io.CloseContext("MACAddress") diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go index e6488d1..91d7d37 100644 --- a/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go +++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go @@ -120,6 +120,7 @@ func UnknownMessageParse(io utils.ReadBuffer, totalLength uint16) (*KnxNetIpMess } unknownData[curItem] = _item } + io.CloseContext("unknownData") io.CloseContext("UnknownMessage") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go index 97073a3..4ed8845 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go @@ -171,6 +171,7 @@ func ModbusPDUGetComEventLogResponseParse(io utils.ReadBuffer) (*ModbusPDU, erro } events[curItem] = _item } + io.CloseContext("events") io.CloseContext("ModbusPDUGetComEventLogResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go index 0b5ae78..a3690b3 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReadCoilsResponseParse(io utils.ReadBuffer) (*ModbusPDU, error) { } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadCoilsResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go index cb2721e..71b0d49 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReadDiscreteInputsResponseParse(io utils.ReadBuffer) (*ModbusPDU, } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadDiscreteInputsResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go index 5c51275..d6db4cf 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go @@ -146,6 +146,7 @@ func ModbusPDUReadFifoQueueResponseParse(io utils.ReadBuffer) (*ModbusPDU, error } fifoValue[curItem] = _item } + io.CloseContext("fifoValue") io.CloseContext("ModbusPDUReadFifoQueueResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go index 52b1c7d..fc70138 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go @@ -140,6 +140,7 @@ func ModbusPDUReadFileRecordRequestParse(io utils.ReadBuffer) (*ModbusPDU, error } items = append(items, _item) } + io.CloseContext("items") io.CloseContext("ModbusPDUReadFileRecordRequest") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go index 2e5f7d6..1a8495d 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go @@ -140,6 +140,7 @@ func ModbusPDUReadFileRecordResponseParse(io utils.ReadBuffer) (*ModbusPDU, erro } items = append(items, _item) } + io.CloseContext("items") io.CloseContext("ModbusPDUReadFileRecordResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go index ffdcc47..d076978 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go @@ -120,6 +120,7 @@ func ModbusPDUReadFileRecordResponseItemParse(io utils.ReadBuffer) (*ModbusPDURe } data = append(data, _item) } + io.CloseContext("data") io.CloseContext("ModbusPDUReadFileRecordResponseItem") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go index 3ea4d7e..0a822ac 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReadHoldingRegistersResponseParse(io utils.ReadBuffer) (*ModbusPDU } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadHoldingRegistersResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go index c8b937d..3cd1e54 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReadInputRegistersResponseParse(io utils.ReadBuffer) (*ModbusPDU, } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadInputRegistersResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go index 0f9ce8e..8d89511 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go @@ -182,6 +182,7 @@ func ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io utils.ReadBuffer) } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadWriteMultipleHoldingRegistersRequest") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go index 9631a12..8c12b8b 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io utils.ReadBuffer } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReadWriteMultipleHoldingRegistersResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go index 95e0aa3..708f74f 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go @@ -138,6 +138,7 @@ func ModbusPDUReportServerIdResponseParse(io utils.ReadBuffer) (*ModbusPDU, erro } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUReportServerIdResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go index 0afe1af..499cbc1 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go @@ -140,6 +140,7 @@ func ModbusPDUWriteFileRecordRequestParse(io utils.ReadBuffer) (*ModbusPDU, erro } items = append(items, _item) } + io.CloseContext("items") io.CloseContext("ModbusPDUWriteFileRecordRequest") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go index d3a6330..1d29387 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go @@ -140,6 +140,7 @@ func ModbusPDUWriteFileRecordRequestItemParse(io utils.ReadBuffer) (*ModbusPDUWr } recordData = append(recordData, _item) } + io.CloseContext("recordData") io.CloseContext("ModbusPDUWriteFileRecordRequestItem") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go index 2cd013a..da19783 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go @@ -140,6 +140,7 @@ func ModbusPDUWriteFileRecordResponseParse(io utils.ReadBuffer) (*ModbusPDU, err } items = append(items, _item) } + io.CloseContext("items") io.CloseContext("ModbusPDUWriteFileRecordResponse") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go index 2dfe301..f22ec7f 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go @@ -140,6 +140,7 @@ func ModbusPDUWriteFileRecordResponseItemParse(io utils.ReadBuffer) (*ModbusPDUW } recordData = append(recordData, _item) } + io.CloseContext("recordData") io.CloseContext("ModbusPDUWriteFileRecordResponseItem") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go index c8360e5..34a6aad 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go @@ -160,6 +160,7 @@ func ModbusPDUWriteMultipleCoilsRequestParse(io utils.ReadBuffer) (*ModbusPDU, e } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUWriteMultipleCoilsRequest") diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go index c96391c..bd345fd 100644 --- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go +++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go @@ -160,6 +160,7 @@ func ModbusPDUWriteMultipleHoldingRegistersRequestParse(io utils.ReadBuffer) (*M } value[curItem] = _item } + io.CloseContext("value") io.CloseContext("ModbusPDUWriteMultipleHoldingRegistersRequest") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go index 54cc561..b2c612a 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go @@ -173,6 +173,7 @@ func COTPPacketParse(io utils.ReadBuffer, cotpLen uint16) (*COTPPacket, error) { parameters = append(parameters, _item) curPos = io.GetPos() - startPos } + io.CloseContext("parameters") // Optional Field (payload) (Can be skipped, if a given expression evaluates to false) curPos = io.GetPos() - startPos diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go index 1f8ef5c..0cd6881 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go @@ -118,6 +118,7 @@ func COTPParameterDisconnectAdditionalInformationParse(io utils.ReadBuffer, rest } data[curItem] = _item } + io.CloseContext("data") io.CloseContext("COTPParameterDisconnectAdditionalInformation") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go index 246dcc5..7858c26 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go @@ -135,6 +135,7 @@ func S7ParameterReadVarRequestParse(io utils.ReadBuffer) (*S7Parameter, error) { } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7ParameterReadVarRequest") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go index 6de78ce..1cf297e 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go @@ -135,6 +135,7 @@ func S7ParameterUserDataParse(io utils.ReadBuffer) (*S7Parameter, error) { } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7ParameterUserData") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go index 1d42746..7ea4e5c 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go @@ -135,6 +135,7 @@ func S7ParameterWriteVarRequestParse(io utils.ReadBuffer) (*S7Parameter, error) } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7ParameterWriteVarRequest") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go index a649b25..aef21d1 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go @@ -126,6 +126,7 @@ func S7PayloadReadVarResponseParse(io utils.ReadBuffer, parameter *S7Parameter) } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7PayloadReadVarResponse") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go index 12e060f..bcc7e6d 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go @@ -125,6 +125,7 @@ func S7PayloadUserDataParse(io utils.ReadBuffer, parameter *S7Parameter) (*S7Pay } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7PayloadUserData") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go index b510456..5fcf90e 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go @@ -151,6 +151,7 @@ func S7PayloadUserDataItemCpuFunctionReadSzlResponseParse(io utils.ReadBuffer) ( } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7PayloadUserDataItemCpuFunctionReadSzlResponse") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go index 7c969a6..d9f14ef 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go @@ -126,6 +126,7 @@ func S7PayloadWriteVarRequestParse(io utils.ReadBuffer, parameter *S7Parameter) } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7PayloadWriteVarRequest") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go index 33c0e48..5662097 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go @@ -125,6 +125,7 @@ func S7PayloadWriteVarResponseParse(io utils.ReadBuffer, parameter *S7Parameter) } items[curItem] = _item } + io.CloseContext("items") io.CloseContext("S7PayloadWriteVarResponse") diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go index 463be68..25abbcc 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go @@ -135,6 +135,7 @@ func S7VarPayloadDataItemParse(io utils.ReadBuffer, lastItem bool) (*S7VarPayloa } data[curItem] = _item } + io.CloseContext("data") // Padding Field (padding) { diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go index dcd0e8b..beb073b 100644 --- a/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go +++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go @@ -120,6 +120,7 @@ func SzlDataTreeItemParse(io utils.ReadBuffer) (*SzlDataTreeItem, error) { } mlfb[curItem] = _item } + io.CloseContext("mlfb") // Simple Field (moduleTypeId) moduleTypeId, _moduleTypeIdErr := io.ReadUint16("moduleTypeId", 16) diff --git a/plc4go/internal/plc4go/s7/s7Io_test.go b/plc4go/internal/plc4go/s7/s7Io_test.go index 6577994..124fd66 100644 --- a/plc4go/internal/plc4go/s7/s7Io_test.go +++ b/plc4go/internal/plc4go/s7/s7Io_test.go @@ -57,7 +57,7 @@ func TestS7MessageBytes(t *testing.T) { 0, 0, 11, - model.NewS7ParameterReadVarResponse(4), + model.NewS7ParameterReadVarResponse(1), model.NewS7PayloadReadVarResponse( []*model.S7VarPayloadDataItem{ model.NewS7VarPayloadDataItem( @@ -90,7 +90,7 @@ func TestS7MessageBytes(t *testing.T) { ║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝╚═══════════╝╚══════════╝║║║ ║║║╔═S7Parameter/S7ParameterReadVarResponse/parameter╗ ║║║ ║║║║ ╔═ParameterType╗╔═NumItems╗ ║ ║║║ -║║║║ ║ 0x04 4 ║║ 0x04 4 ║ ║ ║║║ +║║║║ ║ 0x04 4 ║║ 0x01 1 ║ ║ ║║║ ║║║║ ╚══════════════╝╚═════════╝ ║ ║║║ ║║║╚═════════════════════════════════════════════════╝ ║║║ ║║║╔═S7Payload/S7PayloadReadVarResponse/payload════════════════════════════════════════════════════════════════╗ ║║║ @@ -130,7 +130,7 @@ func TestS7MessageBytes(t *testing.T) { ║║║╔═S7MessageResponseData═══╗╔═S7Parameter═════════════════════════════════╗ ║ ║║ ║║║║╔═errorClass╗╔═errorCode╗║║╔═parameterType╗╔═S7ParameterReadVarResponse╗║ ║ ║║ ║║║║║ 0x00 0 ║║ 0x00 0 ║║║║ 0x04 4 ║║ ╔═numItems╗ ║║ ║ ║║ -║║║║╚═══════════╝╚══════════╝║║╚══════════════╝║ ║ 0x04 4 ║ ║║ ║ ║║ +║║║║╚═══════════╝╚══════════╝║║╚══════════════╝║ ║ 0x01 1 ║ ║║ ║ ║║ ║║║╚═════════════════════════╝║ ║ ╚═════════╝ ║║ ║ ║║ ║║║ ║ ╚═══════════════════════════╝║ ║ ║║ ║║║ ╚═════════════════════════════════════════════╝ ║ ║║ @@ -186,7 +186,7 @@ func TestS7MessageBytes(t *testing.T) { <S7Parameter> <parameterType dataType="uint8" bitLength="8">4</parameterType> <S7ParameterReadVarResponse> - <numItems dataType="uint8" bitLength="8">4</numItems> + <numItems dataType="uint8" bitLength="8">1</numItems> </S7ParameterReadVarResponse> </S7Parameter> <S7Payload> @@ -211,7 +211,7 @@ func TestS7MessageBytes(t *testing.T) { wantDump: ` 00|03 00 00 1d 05 f0 0d c0 01 0c '..........' 10|32 03 00 00 00 0b 00 02 00 05 '2.........' -20|00 00 04 04 ff 03 00 01 01 '......... ' +20|00 00 04 01 ff 03 00 01 01 '......... ' `, }, } @@ -245,6 +245,16 @@ func TestS7MessageBytes(t *testing.T) { if got := utils.Dump(buffer.GetBytes()); !reflect.DeepEqual(got, tt.wantDump) { t.Errorf("Serialize() = '\n%v\n', want '\n%v\n'", got, tt.wantDump) } + // and at least a roundtip + reader := strings.NewReader(tt.wantStringXml) + readBuffer := utils.NewXmlReadBuffer(reader) + if got, err := model.TPKTPacketParse(readBuffer); err != nil || !reflect.DeepEqual(got, tt.args.debuggable) { + if err != nil { + t.Error(err) + } else { + t.Errorf("Roundtrip = '\n%v\n', want '\n%v\n'", got, tt.wantDump) + } + } }) } } diff --git a/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased.go b/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased.go index 6dd15e9..6995536 100644 --- a/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased.go +++ b/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased.go @@ -31,7 +31,7 @@ import ( func NewReadBuffer(data []uint8) ReadBuffer { buffer := bytes.NewBuffer(data) reader := bitio.NewReader(buffer) - return &readBuffer{ + return &byteReadBuffer{ data: data, reader: reader, pos: uint64(0), @@ -42,7 +42,7 @@ func NewReadBuffer(data []uint8) ReadBuffer { func NewLittleEndianReadBuffer(data []uint8) ReadBuffer { buffer := bytes.NewBuffer(data) reader := bitio.NewReader(buffer) - return &readBuffer{ + return &byteReadBuffer{ data: data, reader: reader, pos: uint64(0), @@ -56,7 +56,7 @@ func NewLittleEndianReadBuffer(data []uint8) ReadBuffer { // Internal section // -type readBuffer struct { +type byteReadBuffer struct { data []uint8 reader *bitio.Reader pos uint64 @@ -69,41 +69,41 @@ type readBuffer struct { /////////////////////////////////////// /////////////////////////////////////// -func (rb *readBuffer) Reset() { +func (rb *byteReadBuffer) Reset() { rb.pos = uint64(0) rb.reader = bitio.NewReader(bytes.NewBuffer(rb.data)) } -func (rb *readBuffer) GetPos() uint16 { +func (rb *byteReadBuffer) GetPos() uint16 { return uint16(rb.pos / 8) } -func (rb *readBuffer) GetBytes() []uint8 { +func (rb *byteReadBuffer) GetBytes() []uint8 { return rb.data } -func (rb *readBuffer) GetTotalBytes() uint64 { +func (rb *byteReadBuffer) GetTotalBytes() uint64 { return uint64(len(rb.data)) } -func (rb *readBuffer) HasMore(bitLength uint8) bool { +func (rb *byteReadBuffer) HasMore(bitLength uint8) bool { return (rb.pos + uint64(bitLength)) <= (uint64(len(rb.data)) * 8) } -func (rb *readBuffer) PeekByte(offset uint8) uint8 { +func (rb *byteReadBuffer) PeekByte(offset uint8) uint8 { return rb.data[rb.pos+uint64(offset)] } -func (rb *readBuffer) PullContext(_ string, _ ...WithReaderArgs) error { +func (rb *byteReadBuffer) PullContext(_ string, _ ...WithReaderArgs) error { return nil } -func (rb *readBuffer) ReadBit(_ string, _ ...WithReaderArgs) (bool, error) { +func (rb *byteReadBuffer) ReadBit(_ string, _ ...WithReaderArgs) (bool, error) { rb.pos += 1 return rb.reader.ReadBool() } -func (rb *readBuffer) ReadUint8(_ string, bitLength uint8, _ ...WithReaderArgs) (uint8, error) { +func (rb *byteReadBuffer) ReadUint8(_ string, bitLength uint8, _ ...WithReaderArgs) (uint8, error) { rb.pos += uint64(bitLength) res := uint8(rb.reader.TryReadBits(bitLength)) if rb.reader.TryError != nil { @@ -112,7 +112,7 @@ func (rb *readBuffer) ReadUint8(_ string, bitLength uint8, _ ...WithReaderArgs) return res, nil } -func (rb *readBuffer) ReadUint16(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint16, error) { +func (rb *byteReadBuffer) ReadUint16(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint16, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -129,7 +129,7 @@ func (rb *readBuffer) ReadUint16(logicalName string, bitLength uint8, _ ...WithR return res, nil } -func (rb *readBuffer) ReadUint32(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint32, error) { +func (rb *byteReadBuffer) ReadUint32(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint32, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -146,7 +146,7 @@ func (rb *readBuffer) ReadUint32(logicalName string, bitLength uint8, _ ...WithR return res, nil } -func (rb *readBuffer) ReadUint64(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint64, error) { +func (rb *byteReadBuffer) ReadUint64(logicalName string, bitLength uint8, _ ...WithReaderArgs) (uint64, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -163,7 +163,7 @@ func (rb *readBuffer) ReadUint64(logicalName string, bitLength uint8, _ ...WithR return res, nil } -func (rb *readBuffer) ReadInt8(_ string, bitLength uint8, _ ...WithReaderArgs) (int8, error) { +func (rb *byteReadBuffer) ReadInt8(_ string, bitLength uint8, _ ...WithReaderArgs) (int8, error) { rb.pos += uint64(bitLength) res := int8(rb.reader.TryReadBits(bitLength)) if rb.reader.TryError != nil { @@ -172,7 +172,7 @@ func (rb *readBuffer) ReadInt8(_ string, bitLength uint8, _ ...WithReaderArgs) ( return res, nil } -func (rb *readBuffer) ReadInt16(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int16, error) { +func (rb *byteReadBuffer) ReadInt16(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int16, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -189,7 +189,7 @@ func (rb *readBuffer) ReadInt16(logicalName string, bitLength uint8, _ ...WithRe return res, nil } -func (rb *readBuffer) ReadInt32(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int32, error) { +func (rb *byteReadBuffer) ReadInt32(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int32, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -206,7 +206,7 @@ func (rb *readBuffer) ReadInt32(logicalName string, bitLength uint8, _ ...WithRe return res, nil } -func (rb *readBuffer) ReadInt64(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int64, error) { +func (rb *byteReadBuffer) ReadInt64(logicalName string, bitLength uint8, _ ...WithReaderArgs) (int64, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) @@ -223,7 +223,7 @@ func (rb *readBuffer) ReadInt64(logicalName string, bitLength uint8, _ ...WithRe return res, nil } -func (rb *readBuffer) ReadBigInt(_ string, bitLength uint64, _ ...WithReaderArgs) (*big.Int, error) { +func (rb *byteReadBuffer) ReadBigInt(_ string, bitLength uint64, _ ...WithReaderArgs) (*big.Int, error) { // TODO: highly experimental remove this comment when tested or verifyed res := big.NewInt(0) @@ -274,7 +274,7 @@ func (rb *readBuffer) ReadBigInt(_ string, bitLength uint64, _ ...WithReaderArgs return res, nil } -func (rb *readBuffer) ReadFloat32(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (float32, error) { +func (rb *byteReadBuffer) ReadFloat32(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (float32, error) { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation bigInt, err := rb.ReadBigFloat(logicalName, signed, exponentBitLength, mantissaBitLength) @@ -322,7 +322,7 @@ func (rb *readBuffer) ReadFloat32(logicalName string, signed bool, exponentBitLe } } -func (rb *readBuffer) ReadFloat64(_ string, _ bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (float64, error) { +func (rb *byteReadBuffer) ReadFloat64(_ string, _ bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (float64, error) { bitLength := 1 + exponentBitLength + mantissaBitLength rb.pos += uint64(bitLength) uintValue := rb.reader.TryReadBits(bitLength) @@ -338,7 +338,7 @@ func (rb *readBuffer) ReadFloat64(_ string, _ bool, exponentBitLength uint8, man return res, nil } -func (rb *readBuffer) ReadBigFloat(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (*big.Float, error) { +func (rb *byteReadBuffer) ReadBigFloat(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, _ ...WithReaderArgs) (*big.Float, error) { readFloat64, err := rb.ReadFloat64(logicalName, signed, exponentBitLength, mantissaBitLength) if err != nil { return nil, errors.Wrap(err, "Error reading float64") @@ -346,7 +346,7 @@ func (rb *readBuffer) ReadBigFloat(logicalName string, signed bool, exponentBitL return big.NewFloat(readFloat64), nil } -func (rb *readBuffer) ReadString(logicalName string, bitLength uint32, _ ...WithReaderArgs) (string, error) { +func (rb *byteReadBuffer) ReadString(logicalName string, bitLength uint32, _ ...WithReaderArgs) (string, error) { bigInt, err := rb.ReadBigInt(logicalName, uint64(bitLength)) if err != nil { return "", errors.Wrap(err, "Error reading big int") @@ -354,6 +354,6 @@ func (rb *readBuffer) ReadString(logicalName string, bitLength uint32, _ ...With return string(bigInt.Bytes()), nil } -func (rb *readBuffer) CloseContext(_ string, _ ...WithReaderArgs) error { +func (rb *byteReadBuffer) CloseContext(_ string, _ ...WithReaderArgs) error { return nil } diff --git a/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased_test.go b/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased_test.go index 729e93e..f59c43c 100644 --- a/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased_test.go +++ b/plc4go/internal/plc4go/spi/utils/ReadBufferByteBased_test.go @@ -84,7 +84,7 @@ func TestReadBuffer_GetBytes(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -113,7 +113,7 @@ func TestReadBuffer_GetPos(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -142,7 +142,7 @@ func TestReadBuffer_GetTotalBytes(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -175,7 +175,7 @@ func TestReadBuffer_HasMore(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -208,7 +208,7 @@ func TestReadBuffer_PeekByte(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -244,7 +244,7 @@ func TestReadBuffer_ReadBigFloat(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -283,7 +283,7 @@ func TestReadBuffer_ReadBigInt(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -318,7 +318,7 @@ func TestReadBuffer_ReadBit(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -359,7 +359,7 @@ func TestReadBuffer_ReadFloat32(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -411,10 +411,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { binary.BigEndian.PutUint64(rawData, 0b0_01111111111_0000000000000000000000000000000000000000000000000000) buffer := NewReadBuffer(rawData) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -432,10 +432,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { binary.LittleEndian.PutUint64(rawData, 0b0_01111111111_0000000000000000000000000000000000000000000000000000) buffer := NewLittleEndianReadBuffer(rawData) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -453,10 +453,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { binary.BigEndian.PutUint64(rawData, 0b0_01111111111_0000000000000000000000000000000000000000000000000001) buffer := NewReadBuffer(rawData) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -474,10 +474,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { binary.LittleEndian.PutUint64(rawData, 0b0_01111111111_0000000000000000000000000000000000000000000000000001) buffer := NewLittleEndianReadBuffer(rawData) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -493,10 +493,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -512,10 +512,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -531,10 +531,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -550,10 +550,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -569,10 +569,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -588,10 +588,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -616,10 +616,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -635,10 +635,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -654,10 +654,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -673,10 +673,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -692,10 +692,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -711,10 +711,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -730,10 +730,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -749,10 +749,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -768,10 +768,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -787,10 +787,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -806,10 +806,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x3F, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -825,10 +825,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x3F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -851,10 +851,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -870,10 +870,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -889,10 +889,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -908,10 +908,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -927,10 +927,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -946,10 +946,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -965,10 +965,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x7F, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -984,10 +984,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1014,10 +1014,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1033,10 +1033,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1052,10 +1052,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1071,10 +1071,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1090,10 +1090,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1109,10 +1109,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1128,10 +1128,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1147,10 +1147,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1166,10 +1166,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1185,10 +1185,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1204,10 +1204,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1223,10 +1223,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1242,10 +1242,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1261,10 +1261,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1283,10 +1283,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x3F, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x16}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1302,10 +1302,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x16, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x3F}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1325,10 +1325,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]byte{0x40, 0x09, 0x21, 0xFB, 0x54, 0x44, 0x2D, 0x18}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1344,10 +1344,10 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]byte{0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{ @@ -1361,7 +1361,7 @@ func TestReadBuffer_ReadFloat64(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1401,7 +1401,7 @@ func TestReadBuffer_ReadInt16(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1440,7 +1440,7 @@ func TestReadBuffer_ReadInt32(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1479,7 +1479,7 @@ func TestReadBuffer_ReadInt64(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1518,7 +1518,7 @@ func TestReadBuffer_ReadInt8(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1557,7 +1557,7 @@ func TestReadBuffer_ReadString(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1596,7 +1596,7 @@ func TestReadBuffer_ReadUint16(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1636,10 +1636,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]uint8{0x0, 0x0, 0x0, 0x1}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1651,10 +1651,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]uint8{0x0, 0x0, 0x0, 0x10}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1666,10 +1666,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]uint8{0x0, 0x0, 0x1, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1681,10 +1681,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]uint8{0x0, 0x1, 0x0, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1696,10 +1696,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewReadBuffer([]uint8{0x1, 0x0, 0x0, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1711,10 +1711,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]uint8{0x1, 0x0, 0x0, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1726,10 +1726,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]uint8{0x10, 0x0, 0x0, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1741,10 +1741,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]uint8{0x0, 0x1, 0x0, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1756,10 +1756,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]uint8{0x0, 0x0, 0x1, 0x0}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1771,10 +1771,10 @@ func TestReadBuffer_ReadUint32(t *testing.T) { fields: func() fields { buffer := NewLittleEndianReadBuffer([]uint8{0x0, 0x0, 0x0, 0x1}) return fields{ - data: buffer.(*readBuffer).data, - reader: buffer.(*readBuffer).reader, - pos: buffer.(*readBuffer).pos, - byteOrder: buffer.(*readBuffer).byteOrder, + data: buffer.(*byteReadBuffer).data, + reader: buffer.(*byteReadBuffer).reader, + pos: buffer.(*byteReadBuffer).pos, + byteOrder: buffer.(*byteReadBuffer).byteOrder, } }(), args: args{bitLength: 32}, @@ -1784,7 +1784,7 @@ func TestReadBuffer_ReadUint32(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1823,7 +1823,7 @@ func TestReadBuffer_ReadUint64(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1862,7 +1862,7 @@ func TestReadBuffer_ReadUint8(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, @@ -1895,7 +1895,7 @@ func TestReadBuffer_Reset(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rb := &readBuffer{ + rb := &byteReadBuffer{ data: tt.fields.data, reader: tt.fields.reader, pos: tt.fields.pos, diff --git a/plc4go/internal/plc4go/spi/utils/ReadBufferXmlBased.go b/plc4go/internal/plc4go/spi/utils/ReadBufferXmlBased.go new file mode 100644 index 0000000..d439b11 --- /dev/null +++ b/plc4go/internal/plc4go/spi/utils/ReadBufferXmlBased.go @@ -0,0 +1,346 @@ +// +// 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 +// +// http://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 utils + +import ( + "encoding/xml" + "fmt" + "github.com/pkg/errors" + "io" + "math/big" +) + +func NewXmlReadBuffer(reader io.Reader) ReadBuffer { + return &xmlReadBuffer{ + xml.NewDecoder(reader), + 1, + } +} + +/////////////////////////////////////// +/////////////////////////////////////// +// +// Internal section +// + +type xmlReadBuffer struct { + *xml.Decoder + pos uint +} + +// +// Internal section +// +/////////////////////////////////////// +/////////////////////////////////////// + +func (x *xmlReadBuffer) Reset() { + panic("implement me") +} + +func (x *xmlReadBuffer) GetPos() uint16 { + return uint16(x.pos / 8) +} + +func (x *xmlReadBuffer) GetBytes() []uint8 { + panic("implement me") +} + +func (x *xmlReadBuffer) GetTotalBytes() uint64 { + panic("implement me") +} + +func (x *xmlReadBuffer) HasMore(bitLength uint8) bool { + return true +} + +func (x *xmlReadBuffer) PeekByte(offset uint8) uint8 { + panic("implement me") +} + +func (x *xmlReadBuffer) PullContext(logicalName string, readerArgs ...WithReaderArgs) error { + startElement, err := x.travelToNextStartElement() + if err != nil { + return err + } + if startElement.Name.Local != logicalName { + return errors.Errorf("Unexpected Start element '%s'. Expected '%s'", startElement.Name.Local, logicalName) + } + return nil +} + +func (x *xmlReadBuffer) ReadBit(logicalName string, readerArgs ...WithReaderArgs) (bool, error) { + var value bool + err := x.decode(logicalName, "bit", 1, readerArgs, &value) + if err != nil { + return false, err + } + x.move(1) + return value, nil +} + +func (x *xmlReadBuffer) ReadUint8(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (uint8, error) { + var value uint8 + err := x.decode(logicalName, "uint8", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadUint16(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (uint16, error) { + var value uint16 + err := x.decode(logicalName, "uint16", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadUint32(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (uint32, error) { + var value uint32 + err := x.decode(logicalName, "uint32", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadUint64(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (uint64, error) { + var value uint64 + err := x.decode(logicalName, "uint64", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadInt8(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (int8, error) { + var value int8 + err := x.decode(logicalName, "int8", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadInt16(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (int16, error) { + var value int16 + err := x.decode(logicalName, "int16", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadInt32(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (int32, error) { + var value int32 + err := x.decode(logicalName, "int32", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadInt64(logicalName string, bitLength uint8, readerArgs ...WithReaderArgs) (int64, error) { + var value int64 + err := x.decode(logicalName, "int64", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadBigInt(logicalName string, bitLength uint64, readerArgs ...WithReaderArgs) (*big.Int, error) { + var value big.Int + // TODO: bitLength is too short for a big int + err := x.decode(logicalName, "bigInt", uint8(bitLength), readerArgs, &value) + if err != nil { + return nil, err + } + x.move(uint8(bitLength)) + return &value, nil +} + +func (x *xmlReadBuffer) ReadFloat32(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, readerArgs ...WithReaderArgs) (float32, error) { + bitLength := exponentBitLength + mantissaBitLength + if signed { + bitLength += 1 + } + var value float32 + err := x.decode(logicalName, "float32", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadFloat64(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, readerArgs ...WithReaderArgs) (float64, error) { + bitLength := exponentBitLength + mantissaBitLength + if signed { + bitLength += 1 + } + var value float64 + err := x.decode(logicalName, "float64", bitLength, readerArgs, &value) + if err != nil { + return 0, err + } + x.move(bitLength) + return value, nil +} + +func (x *xmlReadBuffer) ReadBigFloat(logicalName string, signed bool, exponentBitLength uint8, mantissaBitLength uint8, readerArgs ...WithReaderArgs) (*big.Float, error) { + bitLength := exponentBitLength + mantissaBitLength + if signed { + bitLength += 1 + } + var value big.Float + err := x.decode(logicalName, "bigFloat", bitLength, readerArgs, &value) + if err != nil { + return nil, err + } + x.move(bitLength) + return &value, nil +} + +func (x *xmlReadBuffer) ReadString(logicalName string, bitLength uint32, readerArgs ...WithReaderArgs) (string, error) { + var value string + // TODO: bitlength too short + err := x.decode(logicalName, "string", uint8(bitLength), readerArgs, &value) + if err != nil { + return "", err + } + x.move(uint8(bitLength)) + return value, nil +} + +func (x *xmlReadBuffer) CloseContext(logicalName string, _ ...WithReaderArgs) error { + endElement, err := x.travelToNextEndElement() + if err != nil { + return err + } + if endElement.Name.Local != logicalName { + return errors.Errorf("Unexpected End element '%s'. Expected '%s'", endElement.Name.Local, logicalName) + } + return nil +} + +func (x *xmlReadBuffer) move(bits uint8) { + x.pos += uint(bits) +} + +func (x *xmlReadBuffer) travelToNextStartElement() (xml.StartElement, error) { + var startElement xml.StartElement +findTheStartToken: + for { + token, err := x.Token() + if err != nil { + return xml.StartElement{}, err + } + switch token.(type) { + case xml.StartElement: + startElement = token.(xml.StartElement) + break findTheStartToken + case xml.EndElement: + return xml.StartElement{}, errors.Errorf("unexpected end element %s", token.(xml.EndElement).Name) + } + } + return startElement, nil +} + +func (x *xmlReadBuffer) travelToNextEndElement() (xml.EndElement, error) { + var endElement xml.EndElement +findTheEndToken: + for { + token, err := x.Token() + if err != nil { + return xml.EndElement{}, err + } + switch token.(type) { + case xml.EndElement: + endElement = token.(xml.EndElement) + break findTheEndToken + case xml.StartElement: + return xml.EndElement{}, errors.Errorf("unexpected start element %s", token.(xml.StartElement).Name) + } + } + return endElement, nil +} + +func (x *xmlReadBuffer) decode(logicalName string, dataType string, bitLength uint8, readerArgs []WithReaderArgs, targetValue interface{}) error { + startElement, err := x.travelToNextStartElement() + if err != nil { + return err + } + err = validateStartElement(startElement, logicalName, dataType, bitLength, readerArgs...) + if err != nil { + return err + } + err = x.DecodeElement(targetValue, &startElement) + if err != nil { + return err + } + return nil +} + +func validateStartElement(startElement xml.StartElement, logicalName string, dataType string, bitLength uint8, readerArgs ...WithReaderArgs) error { + logicalName = sanitizeLogicalName(logicalName) + if startElement.Name.Local != logicalName { + return errors.Errorf("unexpected element '%s'. Expected '%s'", startElement.Name.Local, logicalName) + } else if err := validateAttr(startElement.Attr, dataType, bitLength, readerArgs...); err != nil { + return errors.Wrap(err, "Error validating Attributes") + } + return nil +} + +func validateAttr(attr []xml.Attr, dataType string, bitLength uint8, readerArgs ...WithReaderArgs) error { + dataTypeValidated := false + bitLengthValidate := false + for _, attribute := range attr { + switch attribute.Name.Local { + case "dataType": + if attribute.Value != dataType { + return errors.Errorf("Unexpected dataType :%s. Want %s", attribute.Value, dataType) + } + dataTypeValidated = true + case "bitLength": + if attribute.Value != fmt.Sprintf("%d", bitLength) { + return errors.Errorf("Unexpected bitLength '%s'. Want '%d'", attribute.Value, bitLength) + } + bitLengthValidate = true + } + } + if !dataTypeValidated { + return errors.New("required attribute dataType missing") + } + if !bitLengthValidate { + return errors.New("required attribute bitLength missing") + } + return nil +} diff --git a/plc4go/internal/plc4go/spi/utils/WriteBuffer.go b/plc4go/internal/plc4go/spi/utils/WriteBuffer.go index 1fd4978..5bbd1c8 100644 --- a/plc4go/internal/plc4go/spi/utils/WriteBuffer.go +++ b/plc4go/internal/plc4go/spi/utils/WriteBuffer.go @@ -37,6 +37,7 @@ type WriteBuffer interface { WriteBigInt(logicalName string, bitLength uint8, value *big.Int, writerArgs ...WithWriterArgs) error WriteFloat32(logicalName string, bitLength uint8, value float32, writerArgs ...WithWriterArgs) error WriteFloat64(logicalName string, bitLength uint8, value float64, writerArgs ...WithWriterArgs) error + WriteBigFloat(logicalName string, bitLength uint8, value *big.Float, writerArgs ...WithWriterArgs) error WriteString(logicalName string, bitLength uint8, encoding string, value string, writerArgs ...WithWriterArgs) error PopContext(logicalName string, writerArgs ...WithWriterArgs) error } diff --git a/plc4go/internal/plc4go/spi/utils/WriteBufferBoxBased.go b/plc4go/internal/plc4go/spi/utils/WriteBufferBoxBased.go index 7a556e3..34acf88 100644 --- a/plc4go/internal/plc4go/spi/utils/WriteBufferBoxBased.go +++ b/plc4go/internal/plc4go/spi/utils/WriteBufferBoxBased.go @@ -153,6 +153,12 @@ func (b *boxedWriteBuffer) WriteFloat64(logicalName string, bitLength uint8, val return nil } +func (b *boxedWriteBuffer) WriteBigFloat(logicalName string, bitLength uint8, value *big.Float, writerArgs ...WithWriterArgs) error { + additionalStringRepresentation := extractAdditionalStringRepresentation(writerArgs...) + b.PushBack(BoxString(logicalName, fmt.Sprintf("%#0*x %f%s", bitLength/4, value, value, additionalStringRepresentation), 0)) + return nil +} + func (b *boxedWriteBuffer) WriteString(logicalName string, bitLength uint8, _ string, value string, writerArgs ...WithWriterArgs) error { additionalStringRepresentation := extractAdditionalStringRepresentation(writerArgs...) b.PushBack(BoxString(logicalName, fmt.Sprintf("%#0*x %s%s", bitLength/4, value, value, additionalStringRepresentation), 0)) diff --git a/plc4go/internal/plc4go/spi/utils/WriteBufferByteBased.go b/plc4go/internal/plc4go/spi/utils/WriteBufferByteBased.go index b10f09f..d30a10b 100644 --- a/plc4go/internal/plc4go/spi/utils/WriteBufferByteBased.go +++ b/plc4go/internal/plc4go/spi/utils/WriteBufferByteBased.go @@ -38,7 +38,7 @@ type WriteBufferByteBased interface { func NewWriteBuffer() WriteBufferByteBased { data := &bytes.Buffer{} writer := bitio.NewWriter(data) - return &writeBuffer{ + return &byteWriteBuffer{ data: data, writer: writer, byteOrder: binary.BigEndian, @@ -48,7 +48,7 @@ func NewWriteBuffer() WriteBufferByteBased { func NewLittleEndianWriteBuffer() WriteBufferByteBased { data := &bytes.Buffer{} writer := bitio.NewWriter(data) - return &writeBuffer{ + return &byteWriteBuffer{ data: data, writer: writer, byteOrder: binary.LittleEndian, @@ -61,7 +61,7 @@ func NewLittleEndianWriteBuffer() WriteBufferByteBased { // Internal section // -type writeBuffer struct { +type byteWriteBuffer struct { data *bytes.Buffer writer *bitio.Writer byteOrder binary.ByteOrder @@ -73,35 +73,35 @@ type writeBuffer struct { /////////////////////////////////////// /////////////////////////////////////// -func (rb *writeBuffer) PushContext(_ string, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) PushContext(_ string, _ ...WithWriterArgs) error { return nil } -func (rb *writeBuffer) PopContext(_ string, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) PopContext(_ string, _ ...WithWriterArgs) error { return nil } -func (rb *writeBuffer) GetPos() uint16 { +func (rb *byteWriteBuffer) GetPos() uint16 { return 0 } -func (rb *writeBuffer) GetBytes() []uint8 { +func (rb *byteWriteBuffer) GetBytes() []uint8 { return rb.data.Bytes() } -func (rb *writeBuffer) GetTotalBytes() uint64 { +func (rb *byteWriteBuffer) GetTotalBytes() uint64 { return uint64(rb.data.Len()) } -func (rb *writeBuffer) WriteBit(_ string, value bool, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteBit(_ string, value bool, _ ...WithWriterArgs) error { return rb.writer.WriteBool(value) } -func (rb *writeBuffer) WriteUint8(_ string, bitLength uint8, value uint8, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteUint8(_ string, bitLength uint8, value uint8, _ ...WithWriterArgs) error { return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteUint16(_ string, bitLength uint8, value uint16, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteUint16(_ string, bitLength uint8, value uint16, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -110,7 +110,7 @@ func (rb *writeBuffer) WriteUint16(_ string, bitLength uint8, value uint16, _ .. return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteUint32(_ string, bitLength uint8, value uint32, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteUint32(_ string, bitLength uint8, value uint32, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -119,7 +119,7 @@ func (rb *writeBuffer) WriteUint32(_ string, bitLength uint8, value uint32, _ .. return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteUint64(_ string, bitLength uint8, value uint64, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteUint64(_ string, bitLength uint8, value uint64, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -128,11 +128,11 @@ func (rb *writeBuffer) WriteUint64(_ string, bitLength uint8, value uint64, _ .. return rb.writer.WriteBits(value, bitLength) } -func (rb *writeBuffer) WriteInt8(_ string, bitLength uint8, value int8, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteInt8(_ string, bitLength uint8, value int8, _ ...WithWriterArgs) error { return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteInt16(_ string, bitLength uint8, value int16, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteInt16(_ string, bitLength uint8, value int16, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -141,7 +141,7 @@ func (rb *writeBuffer) WriteInt16(_ string, bitLength uint8, value int16, _ ...W return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteInt32(_ string, bitLength uint8, value int32, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteInt32(_ string, bitLength uint8, value int32, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -150,7 +150,7 @@ func (rb *writeBuffer) WriteInt32(_ string, bitLength uint8, value int32, _ ...W return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteInt64(_ string, bitLength uint8, value int64, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteInt64(_ string, bitLength uint8, value int64, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -159,11 +159,11 @@ func (rb *writeBuffer) WriteInt64(_ string, bitLength uint8, value int64, _ ...W return rb.writer.WriteBits(uint64(value), bitLength) } -func (rb *writeBuffer) WriteBigInt(_ string, bitLength uint8, value *big.Int, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteBigInt(_ string, bitLength uint8, value *big.Int, _ ...WithWriterArgs) error { return errors.New("not implemented yet") } -func (rb *writeBuffer) WriteFloat32(_ string, bitLength uint8, value float32, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteFloat32(_ string, bitLength uint8, value float32, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -173,7 +173,7 @@ func (rb *writeBuffer) WriteFloat32(_ string, bitLength uint8, value float32, _ return rb.writer.WriteBits(uint64(res), bitLength) } -func (rb *writeBuffer) WriteFloat64(_ string, bitLength uint8, value float64, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteFloat64(_ string, bitLength uint8, value float64, _ ...WithWriterArgs) error { if rb.byteOrder == binary.LittleEndian { // TODO: indirection till we have a native LE implementation // TODO: validate that this produces the desired result @@ -183,6 +183,10 @@ func (rb *writeBuffer) WriteFloat64(_ string, bitLength uint8, value float64, _ return rb.writer.WriteBits(res, bitLength) } -func (rb *writeBuffer) WriteString(_ string, bitLength uint8, encoding string, value string, _ ...WithWriterArgs) error { +func (rb *byteWriteBuffer) WriteBigFloat(logicalName string, bitLength uint8, value *big.Float, writerArgs ...WithWriterArgs) error { + return errors.New("not implemented yet") +} + +func (rb *byteWriteBuffer) WriteString(_ string, bitLength uint8, encoding string, value string, _ ...WithWriterArgs) error { return errors.New("WriteString is currently not implemented") } diff --git a/plc4go/internal/plc4go/spi/utils/WriteBufferXmlBased.go b/plc4go/internal/plc4go/spi/utils/WriteBufferXmlBased.go index a52fb3d..90cd1c2 100644 --- a/plc4go/internal/plc4go/spi/utils/WriteBufferXmlBased.go +++ b/plc4go/internal/plc4go/spi/utils/WriteBufferXmlBased.go @@ -151,6 +151,13 @@ func (x *xmlWriteBuffer) WriteFloat64(logicalName string, bitLength uint8, value }) } +func (x *xmlWriteBuffer) WriteBigFloat(logicalName string, bitLength uint8, value *big.Float, writerArgs ...WithWriterArgs) error { + return x.EncodeElement(value, xml.StartElement{ + Name: xml.Name{Local: sanitizeLogicalName(logicalName)}, + Attr: generateAttr("bigFloat", bitLength, writerArgs...), + }) +} + func (x *xmlWriteBuffer) WriteString(logicalName string, bitLength uint8, encoding string, value string, writerArgs ...WithWriterArgs) error { attr := generateAttr("string", bitLength, writerArgs...) attr = append(attr, xml.Attr{Name: xml.Name{Local: "encoding"}, Value: encoding})
