1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
\r
4 import io.netty.buffer.ByteBuf;
\r
6 import java.math.BigInteger;
\r
8 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;
\r
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ControllerRole;
\r
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput;
\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutputBuilder;
\r
14 * @author timotej.kubas
\r
15 * @author michal.polkorab
\r
17 public class RoleReplyMessageFactory implements OFDeserializer<RoleRequestOutput>{
\r
18 private static RoleReplyMessageFactory instance;
\r
19 private static final byte PADDING_IN_ROLE_REPLY_HEADER = 4;
\r
21 private RoleReplyMessageFactory() {
\r
27 * @return singleton factory
\r
29 public static synchronized RoleReplyMessageFactory getInstance(){
\r
30 if(instance == null){
\r
31 instance = new RoleReplyMessageFactory();
\r
37 public RoleRequestOutput bufferToMessage(ByteBuf rawMessage, short version) {
\r
38 RoleRequestOutputBuilder builder = new RoleRequestOutputBuilder();
\r
39 builder.setVersion(version);
\r
40 builder.setXid(rawMessage.readUnsignedInt());
\r
41 builder.setRole(ControllerRole.forValue((int) rawMessage.readUnsignedInt()));
\r
42 rawMessage.skipBytes(PADDING_IN_ROLE_REPLY_HEADER);
\r
43 byte[] generationID = new byte[8];
\r
44 rawMessage.readBytes(generationID);
\r
45 builder.setGenerationId(new BigInteger(generationID));
\r
46 return builder.build();
\r