@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; OFFlowStatsEntryVer10 other = (OFFlowStatsEntryVer10) obj; if (tableId == null) { if (other.tableId != null) return false; } else if (!tableId.equals(other.tableId)) return false; if (match == null) { if (other.match != null) return false; } else if (!match.equals(other.match)) return false; if (durationSec != other.durationSec) return false; if (durationNsec != other.durationNsec) return false; if (priority != other.priority) return false; if (idleTimeout != other.idleTimeout) return false; if (hardTimeout != other.hardTimeout) return false; if (cookie == null) { if (other.cookie != null) return false; } else if (!cookie.equals(other.cookie)) return false; if (packetCount == null) { if (other.packetCount != null) return false; } else if (!packetCount.equals(other.packetCount)) return false; if (byteCount == null) { if (other.byteCount != null) return false; } else if (!byteCount.equals(other.byteCount)) return false; if (actions == null) { if (other.actions != null) return false; } else if (!actions.equals(other.actions)) return false; return true; }
@Override public OFFlowStatsEntry readFrom(ByteBuf bb) throws OFParseError { int start = bb.readerIndex(); int length = U16.f(bb.readShort()); if (length < MINIMUM_LENGTH) throw new OFParseError( "Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length); if (bb.readableBytes() + (bb.readerIndex() - start) < length) { // Buffer does not have all data yet bb.readerIndex(start); return null; } if (logger.isTraceEnabled()) logger.trace("readFrom - length={}", length); TableId tableId = TableId.readByte(bb); // pad: 1 bytes bb.skipBytes(1); long durationSec = U32.f(bb.readInt()); long durationNsec = U32.f(bb.readInt()); int priority = U16.f(bb.readShort()); int idleTimeout = U16.f(bb.readShort()); int hardTimeout = U16.f(bb.readShort()); Set<OFFlowModFlags> flags = OFFlowModFlagsSerializerVer14.readFrom(bb); int importance = U16.f(bb.readShort()); // pad: 2 bytes bb.skipBytes(2); U64 cookie = U64.ofRaw(bb.readLong()); U64 packetCount = U64.ofRaw(bb.readLong()); U64 byteCount = U64.ofRaw(bb.readLong()); Match match = ChannelUtilsVer14.readOFMatch(bb); List<OFInstruction> instructions = ChannelUtils.readList(bb, length - (bb.readerIndex() - start), OFInstructionVer14.READER); OFFlowStatsEntryVer14 flowStatsEntryVer14 = new OFFlowStatsEntryVer14( tableId, durationSec, durationNsec, priority, idleTimeout, hardTimeout, flags, importance, cookie, packetCount, byteCount, match, instructions); if (logger.isTraceEnabled()) logger.trace("readFrom - read={}", flowStatsEntryVer14); return flowStatsEntryVer14; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((tableId == null) ? 0 : tableId.hashCode()); result = prime * result + ((match == null) ? 0 : match.hashCode()); result = prime * (int) (durationSec ^ (durationSec >>> 32)); result = prime * (int) (durationNsec ^ (durationNsec >>> 32)); result = prime * result + priority; result = prime * result + idleTimeout; result = prime * result + hardTimeout; result = prime * result + ((cookie == null) ? 0 : cookie.hashCode()); result = prime * result + ((packetCount == null) ? 0 : packetCount.hashCode()); result = prime * result + ((byteCount == null) ? 0 : byteCount.hashCode()); result = prime * result + ((actions == null) ? 0 : actions.hashCode()); return result; }