blob: a6f2106ee12e46a92708aa049ef8ae4fc4ac79e2 [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 Wundsam299f3622013-09-30 13:19:56 -07008public class ClassId implements OFValueType<ClassId> {
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;
Andreas Wundsam299f3622013-09-30 13:19:56 -070012 public final static ClassId NONE = new ClassId(NONE_VAL);
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070013
xinwued8d5582013-09-18 17:19:31 -070014 private final int rawValue;
15
Andreas Wundsam299f3622013-09-30 13:19:56 -070016 private ClassId(final int rawValue) {
xinwued8d5582013-09-18 17:19:31 -070017 this.rawValue = rawValue;
18 }
19
Andreas Wundsam299f3622013-09-30 13:19:56 -070020 public static ClassId of(final int raw) {
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070021 if(raw == NONE_VAL)
22 return NONE;
23
Andreas Wundsam299f3622013-09-30 13:19:56 -070024 return new ClassId(raw);
xinwued8d5582013-09-18 17:19:31 -070025 }
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
Andreas Wundsam299f3622013-09-30 13:19:56 -070042 public ClassId applyMask(ClassId mask) {
43 return ClassId.of(rawValue & mask.rawValue); }
Andreas Wundsam85c961f2013-09-29 21:22:12 -070044
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;
Andreas Wundsam299f3622013-09-30 13:19:56 -070061 ClassId other = (ClassId) obj;
xinwued8d5582013-09-18 17:19:31 -070062 if (rawValue != other.rawValue)
63 return false;
64 return true;
65 }
66
67 @Override
Andreas Wundsam299f3622013-09-30 13:19:56 -070068 public int compareTo(ClassId o) {
Andreas Wundsam85c961f2013-09-29 21:22:12 -070069 return UnsignedInts.compare(rawValue, rawValue);
xinwued8d5582013-09-18 17:19:31 -070070 }
71}