blob: 4764747565285963a11d3f528e16097d478a4f87 [file] [log] [blame]
xinwued8d5582013-09-18 17:19:31 -07001package org.projectfloodlight.openflow.types;
2
3import javax.annotation.concurrent.Immutable;
4
Andreas Wundsam85c961f2013-09-29 21:22:12 -07005import com.google.common.primitives.UnsignedInts;
6
xinwued8d5582013-09-18 17:19:31 -07007@Immutable
Andreas Wundsam85c961f2013-09-29 21:22:12 -07008public class Metadata implements OFValueType<Metadata> {
xinwued8d5582013-09-18 17:19:31 -07009 static final int LENGTH = 4;
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070010
11 private final static int NONE_VAL = 0;
12 public final static Metadata NONE = new Metadata(NONE_VAL);
13
xinwued8d5582013-09-18 17:19:31 -070014 private final int rawValue;
15
16 private Metadata(final int rawValue) {
17 this.rawValue = rawValue;
18 }
19
20 public static Metadata of(final int raw) {
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070021 if(raw == NONE_VAL)
22 return NONE;
23
xinwued8d5582013-09-18 17:19:31 -070024 return new Metadata(raw);
25 }
26
27 public int getInt() {
28 return rawValue;
29 }
30
Andreas Wundsam85c961f2013-09-29 21:22:12 -070031 @Override
xinwued8d5582013-09-18 17:19:31 -070032 public int getLength() {
33 return LENGTH;
34 }
35
36 @Override
Andreas Wundsam85c961f2013-09-29 21:22:12 -070037 public String toString() {
38 return Integer.toString(rawValue);
39 }
40
41 @Override
42 public Metadata applyMask(Metadata mask) {
43 return Metadata.of(rawValue & mask.rawValue); }
44
45 @Override
xinwued8d5582013-09-18 17:19:31 -070046 public int hashCode() {
47 final int prime = 31;
48 int result = 1;
49 result = prime * result + rawValue;
50 return result;
51 }
52
53 @Override
54 public boolean equals(Object obj) {
55 if (this == obj)
56 return true;
57 if (obj == null)
58 return false;
59 if (getClass() != obj.getClass())
60 return false;
61 Metadata other = (Metadata) obj;
62 if (rawValue != other.rawValue)
63 return false;
64 return true;
65 }
66
67 @Override
Andreas Wundsam85c961f2013-09-29 21:22:12 -070068 public int compareTo(Metadata o) {
69 return UnsignedInts.compare(rawValue, rawValue);
xinwued8d5582013-09-18 17:19:31 -070070 }
71}