| package org.projectfloodlight.openflow.types; |
| |
| import org.jboss.netty.buffer.ChannelBuffer; |
| |
| import com.google.common.hash.PrimitiveSink; |
| |
| public class OFMetadata implements OFValueType<OFMetadata> { |
| |
| static int LENGTH = 8; |
| |
| private final U64 u64; |
| |
| public static final OFMetadata NONE = OFMetadata.of(U64.ZERO); |
| |
| public static final OFMetadata NO_MASK = OFMetadata.of(U64.ofRaw(0xFFFFFFFFFFFFFFFFl)); |
| public static final OFMetadata FULL_MASK = OFMetadata.of(U64.ofRaw(0x0)); |
| |
| public OFMetadata(U64 ofRaw) { |
| u64 = ofRaw; |
| } |
| |
| public static OFMetadata of(U64 u64) { |
| return new OFMetadata(u64); |
| } |
| |
| public static OFMetadata ofRaw(long raw) { |
| return new OFMetadata(U64.ofRaw(raw)); |
| } |
| |
| public static OFMetadata read8Bytes(ChannelBuffer cb) { |
| return OFMetadata.ofRaw(cb.readLong()); |
| } |
| |
| public void write8Bytes(ChannelBuffer cb) { |
| u64.writeTo(cb); |
| } |
| |
| @Override |
| public int getLength() { |
| return u64.getLength(); |
| } |
| |
| @Override |
| public OFMetadata applyMask(OFMetadata mask) { |
| return OFMetadata.of(this.u64.applyMask(mask.u64)); |
| } |
| |
| @Override |
| public boolean equals(Object arg0) { |
| if (!(arg0 instanceof OFMetadata)) |
| return false; |
| OFMetadata other = (OFMetadata)arg0; |
| |
| return this.u64.equals(other.u64); |
| } |
| |
| @Override |
| public int hashCode() { |
| int prime = 53; |
| return this.u64.hashCode() * prime; |
| } |
| |
| @Override |
| public String toString() { |
| return "Metadata: " + u64.toString(); |
| } |
| |
| @Override |
| public int compareTo(OFMetadata o) { |
| return u64.compareTo(o.u64); |
| } |
| |
| @Override |
| public void putTo(PrimitiveSink sink) { |
| u64.putTo(sink); |
| } |
| } |