// Path: enip-core/src/main/java/com/digitalpetri/enip/cpf/CpfPacket.java
// public final class CpfPacket {
// 
//     private final CpfItem[] items;
// 
//     public CpfPacket(CpfItem... items) {
//         this.items = items;
//     }
// 
//     public CpfItem[] getItems() {
//         return items;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         CpfPacket cpfPacket = (CpfPacket) o;
// 
//         return Arrays.equals(items, cpfPacket.items);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Arrays.hashCode(items);
//     }
// 
//     public static ByteBuf encode(CpfPacket packet, ByteBuf buffer) {
//         buffer.writeShort(packet.getItems().length);
// 
//         for (CpfItem item : packet.getItems()) {
//             CpfItem.encode(item, buffer);
//         }
// 
//         return buffer;
//     }
// 
//     public static CpfPacket decode(ByteBuf buffer) {
//         int itemCount = buffer.readUnsignedShort();
//         CpfItem[] items = new CpfItem[itemCount];
// 
//         for (int i = 0; i < itemCount; i++) {
//             items[i] = CpfItem.decode(buffer);
//         }
// 
//         return new CpfPacket(items);
//     }
// }


import com.digitalpetri.enip.cpf.CpfPacket;
import io.netty.buffer.ByteBuf;
package com.digitalpetri.enip.commands;


public final class SendUnitData extends Command {

    public static final long DEFAULT_INTERFACE_HANDLE = 0;
    public static final int DEFAULT_TIMEOUT = 0;

    private final long interfaceHandle;
    private final int timeout;
// Path: enip-core/src/main/java/com/digitalpetri/enip/cpf/CpfPacket.java
// public final class CpfPacket {
// 
//     private final CpfItem[] items;
// 
//     public CpfPacket(CpfItem... items) {
//         this.items = items;
//     }
// 
//     public CpfItem[] getItems() {
//         return items;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         CpfPacket cpfPacket = (CpfPacket) o;
// 
//         return Arrays.equals(items, cpfPacket.items);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Arrays.hashCode(items);
//     }
// 
//     public static ByteBuf encode(CpfPacket packet, ByteBuf buffer) {
//         buffer.writeShort(packet.getItems().length);
// 
//         for (CpfItem item : packet.getItems()) {
//             CpfItem.encode(item, buffer);
//         }
// 
//         return buffer;
//     }
// 
//     public static CpfPacket decode(ByteBuf buffer) {
//         int itemCount = buffer.readUnsignedShort();
//         CpfItem[] items = new CpfItem[itemCount];
// 
//         for (int i = 0; i < itemCount; i++) {
//             items[i] = CpfItem.decode(buffer);
//         }
// 
//         return new CpfPacket(items);
//     }
// }


// Path: enip-core/src/main/java/com/digitalpetri/enip/commands/SendUnitData.java
import com.digitalpetri.enip.cpf.CpfPacket;
import io.netty.buffer.ByteBuf;

package com.digitalpetri.enip.commands;


public final class SendUnitData extends Command {

    public static final long DEFAULT_INTERFACE_HANDLE = 0;
    public static final int DEFAULT_TIMEOUT = 0;

    private final long interfaceHandle;
    private final int timeout;
    private final CpfPacket packet;