blob: 0844d89f82ffe43458b4c12d5d34f58b1221e661 [file] [log] [blame]
Yotam Harcholf3f11152013-09-05 16:47:16 -07001package org.projectfloodlight.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4
5public class OFMetadata implements OFValueType<OFMetadata> {
6
7 static int LENGTH = 8;
8
9 private final U64 u64;
10
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070011 public static final OFMetadata NONE = OFMetadata.of(U64.ZERO);
12
Yotam Harcholf3f11152013-09-05 16:47:16 -070013 public static final OFMetadata NO_MASK = OFMetadata.of(U64.ofRaw(0xFFFFFFFFFFFFFFFFl));
14 public static final OFMetadata FULL_MASK = OFMetadata.of(U64.ofRaw(0x0));
15
16 public OFMetadata(U64 ofRaw) {
17 u64 = ofRaw;
18 }
19
20 public static OFMetadata of(U64 u64) {
21 return new OFMetadata(u64);
22 }
23
24 public static OFMetadata ofRaw(long raw) {
25 return new OFMetadata(U64.ofRaw(raw));
26 }
27
28 public static OFMetadata read8Bytes(ChannelBuffer cb) {
29 return OFMetadata.ofRaw(cb.readLong());
30 }
31
32 public void write8Bytes(ChannelBuffer cb) {
33 u64.writeTo(cb);
34 }
35
36 @Override
37 public int getLength() {
38 return u64.getLength();
39 }
40
41 @Override
42 public OFMetadata applyMask(OFMetadata mask) {
43 return OFMetadata.of(this.u64.applyMask(mask.u64));
44 }
45
46 @Override
47 public boolean equals(Object arg0) {
48 if (!(arg0 instanceof OFMetadata))
49 return false;
50 OFMetadata other = (OFMetadata)arg0;
51
52 return this.u64.equals(other.u64);
53 }
54
55 @Override
56 public int hashCode() {
57 int prime = 53;
58 return this.u64.hashCode() * prime;
59 }
60
61 @Override
62 public String toString() {
63 return "Metadata: " + u64.toString();
64 }
65
Andreas Wundsam85c961f2013-09-29 21:22:12 -070066 @Override
67 public int compareTo(OFMetadata o) {
68 return u64.compareTo(o.u64);
69 }
Yotam Harcholf3f11152013-09-05 16:47:16 -070070}