Merge "MultiMsgCollector moving package"
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / main / java / org / opendaylight / openflowjava / nx / codec / match / AbstractRegCodec.java
1 package org.opendaylight.openflowjava.nx.codec.match;
2
3 import io.netty.buffer.ByteBuf;
4
5 import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.reg.grouping.RegValuesBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.RegCaseValue;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.RegCaseValueBuilder;
13
14 public abstract class AbstractRegCodec extends AbstractMatchCodec {
15
16     private static final int VALUE_LENGTH = 4;
17
18     @Override
19     public MatchEntry deserialize(ByteBuf message) {
20         MatchEntryBuilder matchEntriesBuilder = deserializeHeader(message);
21         RegCaseValueBuilder caseBuilder = new RegCaseValueBuilder();
22         caseBuilder.setRegValues(new RegValuesBuilder().setValue(message.readUnsignedInt()).build());
23         matchEntriesBuilder.setMatchEntryValue(caseBuilder.build());
24         return matchEntriesBuilder.build();
25     }
26
27     @Override
28     public void serialize(MatchEntry input, ByteBuf outBuffer) {
29         serializeHeader(input, outBuffer);
30         RegCaseValue regCase = ((RegCaseValue) input.getMatchEntryValue());
31         Long value = regCase.getRegValues().getValue();
32         outBuffer.writeInt(value.intValue());
33     }
34
35     @Override
36     public int getOxmClassCode() {
37         return OxmMatchConstants.NXM_1_CLASS;
38     }
39
40     @Override
41     public int getValueLength() {
42         return VALUE_LENGTH;
43     }
44
45     @Override
46     public Class<? extends OxmClassBase> getOxmClass() {
47         return Nxm1Class.class;
48     }
49
50 }