blob: 011bae83ae5fb033e966604c00b272735b9112be [file] [log] [blame]
Andreas Wundsam40e14f72013-05-06 14:49:08 -07001package org.openflow.types;
2
Andreas Wundsam40e14f72013-05-06 14:49:08 -07003
Yotam Harchol161a5d52013-07-25 17:17:48 -07004
5public class Masked<T extends OFValueType> implements OFValueType {
Yotam Harchold7b84202013-07-26 16:08:10 -07006 protected T value;
7 protected T mask;
Yotam Harchol161a5d52013-07-25 17:17:48 -07008
Yotam Harchold7b84202013-07-26 16:08:10 -07009 protected Masked(T value, T mask) {
Yotam Harchol161a5d52013-07-25 17:17:48 -070010 this.value = value;
11 this.mask = mask;
12 }
13
14 public T getValue() {
15 return value;
16 }
17
18 public T getMask() {
19 return mask;
20 }
21
22 @Override
23 public int getLength() {
24 return this.value.getLength() + this.mask.getLength();
25 }
Yotam Harchol161a5d52013-07-25 17:17:48 -070026
27 @Override
28 public boolean equals(Object obj) {
29 if (!(obj instanceof Masked<?>))
30 return false;
31 Masked<?> mobj = (Masked<?>)obj;
32 return this.value.equals(mobj.value) && this.mask.equals(mobj.mask);
33 }
34
35 @Override
36 public int hashCode() {
37 final int prime = 59;
38 int result = 1;
39 result = prime * result + this.value.hashCode();
40 result = prime * result + this.mask.hashCode();
41 return result;
42 }
43
44 @Override
45 public String toString() {
Yotam Harchold7b84202013-07-26 16:08:10 -070046 // General representation: value/mask
47 StringBuilder sb = new StringBuilder();
48 sb.append(value.toString()).append('/').append(mask.toString());
49 return sb.toString();
Yotam Harchol161a5d52013-07-25 17:17:48 -070050 }
51
Andreas Wundsam40e14f72013-05-06 14:49:08 -070052}