blob: 12de6740ea4d3d9b254d37cef71bd6e85a38596a [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package model
import (
"context"
stdErrors "errors"
"fmt"
"github.com/rs/zerolog"
. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
. "github.com/apache/plc4x/plc4go/spi/codegen/io"
"github.com/apache/plc4x/plc4go/spi/errors"
"github.com/apache/plc4x/plc4go/spi/utils"
)
// Code generated by code-generation. DO NOT EDIT.
// CipConnectionManagerResponseSuccess is the corresponding interface of CipConnectionManagerResponseSuccess
type CipConnectionManagerResponseSuccess interface {
fmt.Stringer
utils.LengthAware
utils.Serializable
utils.Copyable
CipConnectionManagerResponse
// GetOtConnectionId returns OtConnectionId (property field)
// ot = Originator (Client) Target (Server)
GetOtConnectionId() uint32
// GetToConnectionId returns ToConnectionId (property field)
// to = Target (Server) Originator (Client)
GetToConnectionId() uint32
// GetConnectionSerialNumber returns ConnectionSerialNumber (property field)
GetConnectionSerialNumber() uint16
// GetOriginatorVendorId returns OriginatorVendorId (property field)
GetOriginatorVendorId() uint16
// GetOriginatorSerialNumber returns OriginatorSerialNumber (property field)
GetOriginatorSerialNumber() uint32
// GetOtApi returns OtApi (property field)
// ot = Originator (Client) Target (Server)
GetOtApi() uint32
// GetToApi returns ToApi (property field)
// to = Target (Server) Originator (Client)
GetToApi() uint32
// GetReply returns Reply (property field)
GetReply() []byte
// IsCipConnectionManagerResponseSuccess is a marker method to prevent unintentional type checks (interfaces of same signature)
IsCipConnectionManagerResponseSuccess()
// CreateBuilder creates a CipConnectionManagerResponseSuccessBuilder
CreateCipConnectionManagerResponseSuccessBuilder() CipConnectionManagerResponseSuccessBuilder
}
// _CipConnectionManagerResponseSuccess is the data-structure of this message
type _CipConnectionManagerResponseSuccess struct {
CipConnectionManagerResponseContract
OtConnectionId uint32
ToConnectionId uint32
ConnectionSerialNumber uint16
OriginatorVendorId uint16
OriginatorSerialNumber uint32
OtApi uint32
ToApi uint32
Reply []byte
// Reserved Fields
reservedField0 *uint8
}
var _ CipConnectionManagerResponseSuccess = (*_CipConnectionManagerResponseSuccess)(nil)
var _ CipConnectionManagerResponseRequirements = (*_CipConnectionManagerResponseSuccess)(nil)
// NewCipConnectionManagerResponseSuccess factory function for _CipConnectionManagerResponseSuccess
func NewCipConnectionManagerResponseSuccess(status uint8, extStatus []uint16, otConnectionId uint32, toConnectionId uint32, connectionSerialNumber uint16, originatorVendorId uint16, originatorSerialNumber uint32, otApi uint32, toApi uint32, reply []byte) *_CipConnectionManagerResponseSuccess {
_result := &_CipConnectionManagerResponseSuccess{
CipConnectionManagerResponseContract: NewCipConnectionManagerResponse(status, extStatus),
OtConnectionId: otConnectionId,
ToConnectionId: toConnectionId,
ConnectionSerialNumber: connectionSerialNumber,
OriginatorVendorId: originatorVendorId,
OriginatorSerialNumber: originatorSerialNumber,
OtApi: otApi,
ToApi: toApi,
Reply: reply,
}
_result.CipConnectionManagerResponseContract.(*_CipConnectionManagerResponse)._SubType = _result
return _result
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Builder
///////////////////////
// CipConnectionManagerResponseSuccessBuilder is a builder for CipConnectionManagerResponseSuccess
type CipConnectionManagerResponseSuccessBuilder interface {
utils.Copyable
// WithMandatoryFields adds all mandatory fields (convenience for using multiple builder calls)
WithMandatoryFields(otConnectionId uint32, toConnectionId uint32, connectionSerialNumber uint16, originatorVendorId uint16, originatorSerialNumber uint32, otApi uint32, toApi uint32, reply []byte) CipConnectionManagerResponseSuccessBuilder
// WithOtConnectionId adds OtConnectionId (property field)
WithOtConnectionId(uint32) CipConnectionManagerResponseSuccessBuilder
// WithToConnectionId adds ToConnectionId (property field)
WithToConnectionId(uint32) CipConnectionManagerResponseSuccessBuilder
// WithConnectionSerialNumber adds ConnectionSerialNumber (property field)
WithConnectionSerialNumber(uint16) CipConnectionManagerResponseSuccessBuilder
// WithOriginatorVendorId adds OriginatorVendorId (property field)
WithOriginatorVendorId(uint16) CipConnectionManagerResponseSuccessBuilder
// WithOriginatorSerialNumber adds OriginatorSerialNumber (property field)
WithOriginatorSerialNumber(uint32) CipConnectionManagerResponseSuccessBuilder
// WithOtApi adds OtApi (property field)
WithOtApi(uint32) CipConnectionManagerResponseSuccessBuilder
// WithToApi adds ToApi (property field)
WithToApi(uint32) CipConnectionManagerResponseSuccessBuilder
// WithReply adds Reply (property field)
WithReply(...byte) CipConnectionManagerResponseSuccessBuilder
// Done is used to finish work on this child and return (or create one if none) to the parent builder
Done() CipConnectionManagerResponseBuilder
// Build builds the CipConnectionManagerResponseSuccess or returns an error if something is wrong
Build() (CipConnectionManagerResponseSuccess, error)
// MustBuild does the same as Build but panics on error
MustBuild() CipConnectionManagerResponseSuccess
}
// NewCipConnectionManagerResponseSuccessBuilder() creates a CipConnectionManagerResponseSuccessBuilder
func NewCipConnectionManagerResponseSuccessBuilder() CipConnectionManagerResponseSuccessBuilder {
return &_CipConnectionManagerResponseSuccessBuilder{_CipConnectionManagerResponseSuccess: new(_CipConnectionManagerResponseSuccess)}
}
type _CipConnectionManagerResponseSuccessBuilder struct {
*_CipConnectionManagerResponseSuccess
parentBuilder *_CipConnectionManagerResponseBuilder
collectedErr []error
}
var _ (CipConnectionManagerResponseSuccessBuilder) = (*_CipConnectionManagerResponseSuccessBuilder)(nil)
func (b *_CipConnectionManagerResponseSuccessBuilder) setParent(contract CipConnectionManagerResponseContract) {
b.CipConnectionManagerResponseContract = contract
contract.(*_CipConnectionManagerResponse)._SubType = b._CipConnectionManagerResponseSuccess
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithMandatoryFields(otConnectionId uint32, toConnectionId uint32, connectionSerialNumber uint16, originatorVendorId uint16, originatorSerialNumber uint32, otApi uint32, toApi uint32, reply []byte) CipConnectionManagerResponseSuccessBuilder {
return b.WithOtConnectionId(otConnectionId).WithToConnectionId(toConnectionId).WithConnectionSerialNumber(connectionSerialNumber).WithOriginatorVendorId(originatorVendorId).WithOriginatorSerialNumber(originatorSerialNumber).WithOtApi(otApi).WithToApi(toApi).WithReply(reply...)
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithOtConnectionId(otConnectionId uint32) CipConnectionManagerResponseSuccessBuilder {
b.OtConnectionId = otConnectionId
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithToConnectionId(toConnectionId uint32) CipConnectionManagerResponseSuccessBuilder {
b.ToConnectionId = toConnectionId
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithConnectionSerialNumber(connectionSerialNumber uint16) CipConnectionManagerResponseSuccessBuilder {
b.ConnectionSerialNumber = connectionSerialNumber
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithOriginatorVendorId(originatorVendorId uint16) CipConnectionManagerResponseSuccessBuilder {
b.OriginatorVendorId = originatorVendorId
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithOriginatorSerialNumber(originatorSerialNumber uint32) CipConnectionManagerResponseSuccessBuilder {
b.OriginatorSerialNumber = originatorSerialNumber
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithOtApi(otApi uint32) CipConnectionManagerResponseSuccessBuilder {
b.OtApi = otApi
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithToApi(toApi uint32) CipConnectionManagerResponseSuccessBuilder {
b.ToApi = toApi
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) WithReply(reply ...byte) CipConnectionManagerResponseSuccessBuilder {
b.Reply = reply
return b
}
func (b *_CipConnectionManagerResponseSuccessBuilder) Build() (CipConnectionManagerResponseSuccess, error) {
if err := stdErrors.Join(b.collectedErr...); err != nil {
return nil, errors.Wrap(err, "error occurred during build")
}
return b._CipConnectionManagerResponseSuccess.deepCopy(), nil
}
func (b *_CipConnectionManagerResponseSuccessBuilder) MustBuild() CipConnectionManagerResponseSuccess {
build, err := b.Build()
if err != nil {
panic(err)
}
return build
}
func (b *_CipConnectionManagerResponseSuccessBuilder) Done() CipConnectionManagerResponseBuilder {
if b.parentBuilder == nil {
b.parentBuilder = NewCipConnectionManagerResponseBuilder().(*_CipConnectionManagerResponseBuilder)
}
return b.parentBuilder
}
func (b *_CipConnectionManagerResponseSuccessBuilder) buildForCipConnectionManagerResponse() (CipConnectionManagerResponse, error) {
return b.Build()
}
func (b *_CipConnectionManagerResponseSuccessBuilder) DeepCopy() any {
_copy := b.CreateCipConnectionManagerResponseSuccessBuilder().(*_CipConnectionManagerResponseSuccessBuilder)
if b.collectedErr != nil {
copy(_copy.collectedErr, b.collectedErr)
}
return _copy
}
// CreateCipConnectionManagerResponseSuccessBuilder creates a CipConnectionManagerResponseSuccessBuilder
func (b *_CipConnectionManagerResponseSuccess) CreateCipConnectionManagerResponseSuccessBuilder() CipConnectionManagerResponseSuccessBuilder {
if b == nil {
return NewCipConnectionManagerResponseSuccessBuilder()
}
return &_CipConnectionManagerResponseSuccessBuilder{_CipConnectionManagerResponseSuccess: b.deepCopy()}
}
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Accessors for discriminator values.
///////////////////////
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
func (m *_CipConnectionManagerResponseSuccess) GetParent() CipConnectionManagerResponseContract {
return m.CipConnectionManagerResponseContract
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
/////////////////////// Accessors for property fields.
///////////////////////
func (m *_CipConnectionManagerResponseSuccess) GetOtConnectionId() uint32 {
return m.OtConnectionId
}
func (m *_CipConnectionManagerResponseSuccess) GetToConnectionId() uint32 {
return m.ToConnectionId
}
func (m *_CipConnectionManagerResponseSuccess) GetConnectionSerialNumber() uint16 {
return m.ConnectionSerialNumber
}
func (m *_CipConnectionManagerResponseSuccess) GetOriginatorVendorId() uint16 {
return m.OriginatorVendorId
}
func (m *_CipConnectionManagerResponseSuccess) GetOriginatorSerialNumber() uint32 {
return m.OriginatorSerialNumber
}
func (m *_CipConnectionManagerResponseSuccess) GetOtApi() uint32 {
return m.OtApi
}
func (m *_CipConnectionManagerResponseSuccess) GetToApi() uint32 {
return m.ToApi
}
func (m *_CipConnectionManagerResponseSuccess) GetReply() []byte {
return m.Reply
}
///////////////////////
///////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Deprecated: use the interface for direct cast
func CastCipConnectionManagerResponseSuccess(structType any) CipConnectionManagerResponseSuccess {
if casted, ok := structType.(CipConnectionManagerResponseSuccess); ok {
return casted
}
if casted, ok := structType.(*CipConnectionManagerResponseSuccess); ok {
return *casted
}
return nil
}
func (m *_CipConnectionManagerResponseSuccess) GetPlx4xTypeName() string {
return "CipConnectionManagerResponseSuccess"
}
func (m *_CipConnectionManagerResponseSuccess) GetLengthInBits(ctx context.Context) uint64 {
lengthInBits := uint64(m.CipConnectionManagerResponseContract.(*_CipConnectionManagerResponse).getLengthInBits(ctx))
// Simple field (otConnectionId)
lengthInBits += 32
// Simple field (toConnectionId)
lengthInBits += 32
// Simple field (connectionSerialNumber)
lengthInBits += 16
// Simple field (originatorVendorId)
lengthInBits += 16
// Simple field (originatorSerialNumber)
lengthInBits += 32
// Simple field (otApi)
lengthInBits += 32
// Simple field (toApi)
lengthInBits += 32
// Implicit Field (replySize)
lengthInBits += 8
// Array field
if len(m.Reply) > 0 {
lengthInBits += 8 * uint64(len(m.Reply))
}
// Reserved Field (reserved)
lengthInBits += 8
return lengthInBits
}
func (m *_CipConnectionManagerResponseSuccess) GetLengthInBytes(ctx context.Context) uint64 {
return m.GetLengthInBits(ctx) / 8
}
func (m *_CipConnectionManagerResponseSuccess) parse(ctx context.Context, readBuffer utils.ReadBuffer, parent *_CipConnectionManagerResponse, status uint8, connected bool, serviceLen uint16) (__cipConnectionManagerResponseSuccess CipConnectionManagerResponseSuccess, err error) {
m.CipConnectionManagerResponseContract = parent
parent._SubType = m
positionAware := readBuffer
_ = positionAware
if pullErr := readBuffer.PullContext("CipConnectionManagerResponseSuccess"); pullErr != nil {
return nil, errors.Wrap(pullErr, "Error pulling for CipConnectionManagerResponseSuccess")
}
currentPos := positionAware.GetPos()
_ = currentPos
otConnectionId, err := ReadSimpleField(ctx, "otConnectionId", ReadUnsignedInt(readBuffer, uint8(32)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'otConnectionId' field"))
}
m.OtConnectionId = otConnectionId
toConnectionId, err := ReadSimpleField(ctx, "toConnectionId", ReadUnsignedInt(readBuffer, uint8(32)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'toConnectionId' field"))
}
m.ToConnectionId = toConnectionId
connectionSerialNumber, err := ReadSimpleField(ctx, "connectionSerialNumber", ReadUnsignedShort(readBuffer, uint8(16)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'connectionSerialNumber' field"))
}
m.ConnectionSerialNumber = connectionSerialNumber
originatorVendorId, err := ReadSimpleField(ctx, "originatorVendorId", ReadUnsignedShort(readBuffer, uint8(16)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'originatorVendorId' field"))
}
m.OriginatorVendorId = originatorVendorId
originatorSerialNumber, err := ReadSimpleField(ctx, "originatorSerialNumber", ReadUnsignedInt(readBuffer, uint8(32)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'originatorSerialNumber' field"))
}
m.OriginatorSerialNumber = originatorSerialNumber
otApi, err := ReadSimpleField(ctx, "otApi", ReadUnsignedInt(readBuffer, uint8(32)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'otApi' field"))
}
m.OtApi = otApi
toApi, err := ReadSimpleField(ctx, "toApi", ReadUnsignedInt(readBuffer, uint8(32)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'toApi' field"))
}
m.ToApi = toApi
replySize, err := ReadImplicitField[uint8](ctx, "replySize", ReadUnsignedByte(readBuffer, uint8(8)))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'replySize' field"))
}
_ = replySize
reply, err := readBuffer.ReadByteArray("reply", int(int32(replySize)*int32(int32(2))))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'reply' field"))
}
m.Reply = reply
reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, uint8(8)), uint8(0x00))
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
}
m.reservedField0 = reservedField0
if closeErr := readBuffer.CloseContext("CipConnectionManagerResponseSuccess"); closeErr != nil {
return nil, errors.Wrap(closeErr, "Error closing for CipConnectionManagerResponseSuccess")
}
return m, nil
}
func (m *_CipConnectionManagerResponseSuccess) Serialize() ([]byte, error) {
wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
return nil, err
}
return wb.GetBytes(), nil
}
func (m *_CipConnectionManagerResponseSuccess) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
positionAware := writeBuffer
_ = positionAware
log := zerolog.Ctx(ctx)
_ = log
ser := func() error {
if pushErr := writeBuffer.PushContext("CipConnectionManagerResponseSuccess"); pushErr != nil {
return errors.Wrap(pushErr, "Error pushing for CipConnectionManagerResponseSuccess")
}
if err := WriteSimpleField[uint32](ctx, "otConnectionId", m.GetOtConnectionId(), WriteUnsignedInt(writeBuffer, 32)); err != nil {
return errors.Wrap(err, "Error serializing 'otConnectionId' field")
}
if err := WriteSimpleField[uint32](ctx, "toConnectionId", m.GetToConnectionId(), WriteUnsignedInt(writeBuffer, 32)); err != nil {
return errors.Wrap(err, "Error serializing 'toConnectionId' field")
}
if err := WriteSimpleField[uint16](ctx, "connectionSerialNumber", m.GetConnectionSerialNumber(), WriteUnsignedShort(writeBuffer, 16)); err != nil {
return errors.Wrap(err, "Error serializing 'connectionSerialNumber' field")
}
if err := WriteSimpleField[uint16](ctx, "originatorVendorId", m.GetOriginatorVendorId(), WriteUnsignedShort(writeBuffer, 16)); err != nil {
return errors.Wrap(err, "Error serializing 'originatorVendorId' field")
}
if err := WriteSimpleField[uint32](ctx, "originatorSerialNumber", m.GetOriginatorSerialNumber(), WriteUnsignedInt(writeBuffer, 32)); err != nil {
return errors.Wrap(err, "Error serializing 'originatorSerialNumber' field")
}
if err := WriteSimpleField[uint32](ctx, "otApi", m.GetOtApi(), WriteUnsignedInt(writeBuffer, 32)); err != nil {
return errors.Wrap(err, "Error serializing 'otApi' field")
}
if err := WriteSimpleField[uint32](ctx, "toApi", m.GetToApi(), WriteUnsignedInt(writeBuffer, 32)); err != nil {
return errors.Wrap(err, "Error serializing 'toApi' field")
}
replySize := uint8(uint8(uint8(len(m.GetReply()))) / uint8(uint8(2)))
if err := WriteImplicitField(ctx, "replySize", replySize, WriteUnsignedByte(writeBuffer, 8)); err != nil {
return errors.Wrap(err, "Error serializing 'replySize' field")
}
if err := WriteByteArrayField(ctx, "reply", m.GetReply(), WriteByteArray(writeBuffer, 8)); err != nil {
return errors.Wrap(err, "Error serializing 'reply' field")
}
if err := WriteReservedField[uint8](ctx, "reserved", uint8(0x00), WriteUnsignedByte(writeBuffer, 8)); err != nil {
return errors.Wrap(err, "Error serializing 'reserved' field number 1")
}
if popErr := writeBuffer.PopContext("CipConnectionManagerResponseSuccess"); popErr != nil {
return errors.Wrap(popErr, "Error popping for CipConnectionManagerResponseSuccess")
}
return nil
}
return m.CipConnectionManagerResponseContract.(*_CipConnectionManagerResponse).serializeParent(ctx, writeBuffer, m, ser)
}
func (m *_CipConnectionManagerResponseSuccess) IsCipConnectionManagerResponseSuccess() {}
func (m *_CipConnectionManagerResponseSuccess) DeepCopy() any {
return m.deepCopy()
}
func (m *_CipConnectionManagerResponseSuccess) deepCopy() *_CipConnectionManagerResponseSuccess {
if m == nil {
return nil
}
_CipConnectionManagerResponseSuccessCopy := &_CipConnectionManagerResponseSuccess{
m.CipConnectionManagerResponseContract.(*_CipConnectionManagerResponse).deepCopy(),
m.OtConnectionId,
m.ToConnectionId,
m.ConnectionSerialNumber,
m.OriginatorVendorId,
m.OriginatorSerialNumber,
m.OtApi,
m.ToApi,
utils.DeepCopySlice[byte, byte](m.Reply),
m.reservedField0,
}
_CipConnectionManagerResponseSuccessCopy.CipConnectionManagerResponseContract.(*_CipConnectionManagerResponse)._SubType = m
return _CipConnectionManagerResponseSuccessCopy
}
func (m *_CipConnectionManagerResponseSuccess) String() string {
if m == nil {
return "<nil>"
}
wb := utils.NewWriteBufferBoxBased(
utils.WithWriteBufferBoxBasedMergeSingleBoxes(),
utils.WithWriteBufferBoxBasedOmitEmptyBoxes(),
utils.WithWriteBufferBoxBasedPrintPosLengthFooter(),
)
if err := wb.WriteSerializable(context.Background(), m); err != nil {
return err.Error()
}
return wb.GetBox().String()
}