blob: 86799eb2c71a63f32205b9b28bb036311da4a7f9 [file] [log] [blame]
Yotam Harchol6fccde62013-08-15 12:04:52 -07001package org.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4
Andreas Wundsam880a2a82013-08-22 07:55:14 -07005public class OFMetadata implements OFValueType<OFMetadata> {
6
Yotam Harchol6fccde62013-08-15 12:04:52 -07007 private static int LENGTH = 8;
8
Andreas Wundsam880a2a82013-08-22 07:55:14 -07009 private final U64 u64;
Yotam Harcholc2813602013-08-20 12:14:22 -070010
Andreas Wundsam880a2a82013-08-22 07:55:14 -070011 public static final OFMetadata NO_MASK = OFMetadata.of(U64.ofRaw(0xFFFFFFFFFFFFFFFFl));
12 public static final OFMetadata FULL_MASK = OFMetadata.of(U64.ofRaw(0x0));
13
14 public OFMetadata(U64 ofRaw) {
15 u64 = ofRaw;
Yotam Harchol6fccde62013-08-15 12:04:52 -070016 }
17
Andreas Wundsam880a2a82013-08-22 07:55:14 -070018 public static OFMetadata of(U64 u64) {
19 return new OFMetadata(u64);
Yotam Harchol6fccde62013-08-15 12:04:52 -070020 }
Andreas Wundsam880a2a82013-08-22 07:55:14 -070021
22 public static OFMetadata ofRaw(long raw) {
23 return new OFMetadata(U64.ofRaw(raw));
24 }
25
Yotam Harchol6fccde62013-08-15 12:04:52 -070026 public static OFMetadata read8Bytes(ChannelBuffer cb) {
Andreas Wundsam880a2a82013-08-22 07:55:14 -070027 return OFMetadata.ofRaw(cb.readLong());
Yotam Harchol6fccde62013-08-15 12:04:52 -070028 }
Andreas Wundsam880a2a82013-08-22 07:55:14 -070029
Yotam Harchol6fccde62013-08-15 12:04:52 -070030 public void write8Bytes(ChannelBuffer cb) {
Andreas Wundsam880a2a82013-08-22 07:55:14 -070031 u64.writeTo(cb);
Yotam Harchol6fccde62013-08-15 12:04:52 -070032 }
33
34 @Override
35 public int getLength() {
Andreas Wundsam880a2a82013-08-22 07:55:14 -070036 return u64.getLength();
Yotam Harchol6fccde62013-08-15 12:04:52 -070037 }
38
39 @Override
40 public OFMetadata applyMask(OFMetadata mask) {
Andreas Wundsam880a2a82013-08-22 07:55:14 -070041 return OFMetadata.of(this.u64.applyMask(mask.u64));
Yotam Harchol6fccde62013-08-15 12:04:52 -070042 }
Andreas Wundsam880a2a82013-08-22 07:55:14 -070043
Yotam Harchol991b3492013-08-22 15:40:13 -070044 @Override
45 public boolean equals(Object arg0) {
46 if (!(arg0 instanceof OFMetadata))
47 return false;
48 OFMetadata other = (OFMetadata)arg0;
49
50 return this.u64.equals(other.u64);
51 }
52
53 @Override
54 public int hashCode() {
55 int prime = 53;
56 return this.u64.hashCode() * prime;
57 }
58
59 @Override
60 public String toString() {
61 return "Metadata: " + u64.toString();
62 }
63
64
65
Yotam Harchol6fccde62013-08-15 12:04:52 -070066}