1 package org.openflow.codec.protocol.statistics.table;
3 import java.util.HashMap;
6 import org.openflow.codec.protocol.Instantiable;
7 import org.openflow.codec.util.U16;
9 public enum OFPTableFeaturePropType {
11 INSTRUCTIONS(0, new Instantiable<OFPTableFeaturePropHeader>() {
13 public OFPTableFeaturePropHeader instantiate() {
14 return new OFPTableFeaturePropInstructions();
16 }), INSTRUCTIONS_MISS(1, new Instantiable<OFPTableFeaturePropHeader>() {
18 public OFPTableFeaturePropHeader instantiate() {
19 return new OFPTableFeaturePropInstructionsMiss();
21 }), NEXT_TABLES(2, new Instantiable<OFPTableFeaturePropHeader>() {
23 public OFPTableFeaturePropHeader instantiate() {
24 return new OFPTableFeaturePropNextTables();
26 }), NEXT_TABLES_MISS(3, new Instantiable<OFPTableFeaturePropHeader>() {
28 public OFPTableFeaturePropHeader instantiate() {
29 return new OFPTableFeaturePropNextTablesMiss();
31 }), WRITE_ACTIONS(4, new Instantiable<OFPTableFeaturePropHeader>() {
33 public OFPTableFeaturePropHeader instantiate() {
34 return new OFPTableFeaturePropWriteActions();
36 }), WRITE_ACTIONS_MISS(5, new Instantiable<OFPTableFeaturePropHeader>() {
38 public OFPTableFeaturePropHeader instantiate() {
39 return new OFPTableFeaturePropWriteActionsMiss();
41 }), APPLY_ACTIONS(6, new Instantiable<OFPTableFeaturePropHeader>() {
43 public OFPTableFeaturePropHeader instantiate() {
44 return new OFPTableFeaturePropApplyActions();
46 }), APPLY_ACTIONS_MISS(7, new Instantiable<OFPTableFeaturePropHeader>() {
48 public OFPTableFeaturePropHeader instantiate() {
49 return new OFPTableFeaturePropApplyActionsMiss();
51 }), MATCH(8, new Instantiable<OFPTableFeaturePropHeader>() {
53 public OFPTableFeaturePropHeader instantiate() {
54 return new OFPTableFeaturePropMatch();
56 }), WILDCARDS(10, new Instantiable<OFPTableFeaturePropHeader>() {
58 public OFPTableFeaturePropHeader instantiate() {
59 return new OFPTableFeaturePropWildcards();
61 }), WRITE_SETFIELD(12, new Instantiable<OFPTableFeaturePropHeader>() {
63 public OFPTableFeaturePropHeader instantiate() {
64 return new OFPTableFeaturePropWriteSetField();
66 }), WRITE_SETFIELD_MISS(13, new Instantiable<OFPTableFeaturePropHeader>() {
68 public OFPTableFeaturePropHeader instantiate() {
69 return new OFPTableFeaturePropWriteSetFieldMiss();
71 }), APPLY_SETFIELD(14, new Instantiable<OFPTableFeaturePropHeader>() {
73 public OFPTableFeaturePropHeader instantiate() {
74 return new OFPTableFeaturePropApplySetField();
76 }), APPLY_SETFIELD_MISS(15, new Instantiable<OFPTableFeaturePropHeader>() {
78 public OFPTableFeaturePropHeader instantiate() {
79 return new OFPTableFeaturePropApplySetFieldMiss();
83 EXPERIMENTER(0xFFFE, new Instantiable<OFPTableFeaturePropHeader>() {
85 public OFPTableFeaturePropHeader instantiate() {
86 return new OFPTableFeaturePropExperimenter();
90 EXPERIMENTER_MISS(0xFFFF, new Instantiable<OFPTableFeaturePropHeader>() {
92 public OFPTableFeaturePropHeader instantiate() {
93 return new OFPTableFeaturePropExperimenterMiss();
97 private static Map<Integer, OFPTableFeaturePropType> mapping;
101 private Instantiable<OFPTableFeaturePropHeader> instantiable;
107 OFPTableFeaturePropType(int type, Instantiable<OFPTableFeaturePropHeader> instantiable) {
108 this.setTypeValue((short) type);
109 OFPTableFeaturePropType.addMapping(type, this);
110 this.instantiable = instantiable;
114 * add mapping to store
117 * @param TableFeatureType
119 private static void addMapping(int type, OFPTableFeaturePropType TableFeatureType) {
120 if (null == mapping) {
121 mapping = new HashMap<Integer, OFPTableFeaturePropType>();
123 mapping.put(type, TableFeatureType);
127 * get OFTableFeatureType correspond to value type
130 * @return OFTableFeatureType
132 public static OFPTableFeaturePropType valueOf(short type) {
133 return mapping.get(U16.f(type));
137 * get TableFeatureProp type value
141 public short getTypeValue() {
146 * set TableFeatureProp type value
150 public void setTypeValue(short type) {
155 * Returns a new instance of the OFPTableFeaturePropHeader represented by
156 * this OFPTableFeaturePropType
158 * @return the new object
160 public OFPTableFeaturePropHeader newInstance() {
161 return instantiable.instantiate();