blob: 3065a5d339feab22f0789994cdbcd64fc9983243 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.plc4x.java.eip.readwrite;
import static org.apache.plc4x.java.spi.codegen.fields.FieldReaderFactory.*;
import static org.apache.plc4x.java.spi.codegen.fields.FieldWriterFactory.*;
import static org.apache.plc4x.java.spi.codegen.io.DataReaderFactory.*;
import static org.apache.plc4x.java.spi.codegen.io.DataWriterFactory.*;
import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
import java.time.*;
import java.util.*;
import org.apache.plc4x.java.api.exceptions.*;
import org.apache.plc4x.java.api.value.*;
import org.apache.plc4x.java.spi.codegen.*;
import org.apache.plc4x.java.spi.codegen.fields.*;
import org.apache.plc4x.java.spi.codegen.io.*;
import org.apache.plc4x.java.spi.generation.*;
// Code generated by code-generation. DO NOT EDIT.
public class CipRRData extends EipPacket implements Message {
// Accessors for discriminator values.
public Integer getCommand() {
return (int) 0x006F;
}
public Boolean getResponse() {
return false;
}
public Integer getPacketLength() {
return 0;
}
// Properties.
protected final long interfaceHandle;
protected final int timeout;
protected final int itemCount;
protected final List<TypeId> typeId;
// Arguments.
protected final IntegerEncoding order;
public CipRRData(
long sessionHandle,
long status,
byte[] senderContext,
long options,
long interfaceHandle,
int timeout,
int itemCount,
List<TypeId> typeId,
IntegerEncoding order) {
super(sessionHandle, status, senderContext, options, order);
this.interfaceHandle = interfaceHandle;
this.timeout = timeout;
this.itemCount = itemCount;
this.typeId = typeId;
this.order = order;
}
public long getInterfaceHandle() {
return interfaceHandle;
}
public int getTimeout() {
return timeout;
}
public int getItemCount() {
return itemCount;
}
public List<TypeId> getTypeId() {
return typeId;
}
@Override
protected void serializeEipPacketChild(WriteBuffer writeBuffer) throws SerializationException {
PositionAware positionAware = writeBuffer;
boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
int startPos = positionAware.getPos();
writeBuffer.pushContext("CipRRData");
// Simple Field (interfaceHandle)
writeSimpleField(
"interfaceHandle",
interfaceHandle,
writeUnsignedLong(writeBuffer, 32),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
// Simple Field (timeout)
writeSimpleField(
"timeout",
timeout,
writeUnsignedInt(writeBuffer, 16),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
// Simple Field (itemCount)
writeSimpleField(
"itemCount",
itemCount,
writeUnsignedInt(writeBuffer, 16),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
// Array Field (typeId)
writeComplexTypeArrayField(
"typeId",
typeId,
writeBuffer,
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
writeBuffer.popContext("CipRRData");
}
@Override
public int getLengthInBytes() {
return (int) Math.ceil((float) getLengthInBits() / 8.0);
}
@Override
public int getLengthInBits() {
int lengthInBits = super.getLengthInBits();
CipRRData _value = this;
boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
// Simple field (interfaceHandle)
lengthInBits += 32;
// Simple field (timeout)
lengthInBits += 16;
// Simple field (itemCount)
lengthInBits += 16;
// Array field
if (typeId != null) {
int i = 0;
for (TypeId element : typeId) {
ThreadLocalHelper.lastItemThreadLocal.set(++i >= typeId.size());
lengthInBits += element.getLengthInBits();
}
}
return lengthInBits;
}
public static EipPacketBuilder staticParseEipPacketBuilder(
ReadBuffer readBuffer, IntegerEncoding order, Boolean response) throws ParseException {
readBuffer.pullContext("CipRRData");
PositionAware positionAware = readBuffer;
int startPos = positionAware.getPos();
int curPos;
boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
long interfaceHandle =
readSimpleField(
"interfaceHandle",
readUnsignedLong(readBuffer, 32),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
int timeout =
readSimpleField(
"timeout",
readUnsignedInt(readBuffer, 16),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
int itemCount =
readSimpleField(
"itemCount",
readUnsignedInt(readBuffer, 16),
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
List<TypeId> typeId =
readCountArrayField(
"typeId",
new DataReaderComplexDefault<>(
() -> TypeId.staticParse(readBuffer, (IntegerEncoding) (order)), readBuffer),
itemCount,
WithOption.WithByteOrder(
(((order) == (IntegerEncoding.BIG_ENDIAN))
? ByteOrder.BIG_ENDIAN
: ByteOrder.LITTLE_ENDIAN)));
readBuffer.closeContext("CipRRData");
// Create the instance
return new CipRRDataBuilderImpl(interfaceHandle, timeout, itemCount, typeId, order);
}
public static class CipRRDataBuilderImpl implements EipPacket.EipPacketBuilder {
private final long interfaceHandle;
private final int timeout;
private final int itemCount;
private final List<TypeId> typeId;
private final IntegerEncoding order;
public CipRRDataBuilderImpl(
long interfaceHandle,
int timeout,
int itemCount,
List<TypeId> typeId,
IntegerEncoding order) {
this.interfaceHandle = interfaceHandle;
this.timeout = timeout;
this.itemCount = itemCount;
this.typeId = typeId;
this.order = order;
}
public CipRRData build(
long sessionHandle,
long status,
byte[] senderContext,
long options,
IntegerEncoding order) {
CipRRData cipRRData =
new CipRRData(
sessionHandle,
status,
senderContext,
options,
interfaceHandle,
timeout,
itemCount,
typeId,
order);
return cipRRData;
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof CipRRData)) {
return false;
}
CipRRData that = (CipRRData) o;
return (getInterfaceHandle() == that.getInterfaceHandle())
&& (getTimeout() == that.getTimeout())
&& (getItemCount() == that.getItemCount())
&& (getTypeId() == that.getTypeId())
&& super.equals(that)
&& true;
}
@Override
public int hashCode() {
return Objects.hash(
super.hashCode(), getInterfaceHandle(), getTimeout(), getItemCount(), getTypeId());
}
@Override
public String toString() {
WriteBufferBoxBased writeBufferBoxBased = new WriteBufferBoxBased(true, true);
try {
writeBufferBoxBased.writeSerializable(this);
} catch (SerializationException e) {
throw new RuntimeException(e);
}
return "\n" + writeBufferBoxBased.getBox().toString() + "\n";
}
}