Migrate .setXid() callers
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / messages / AsyncConfigMessageDeserializer.java
1 /*
2  * Copyright (c) 2016 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.impl.protocol.deserialization.messages;
9
10 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
11
12 import io.netty.buffer.ByteBuf;
13 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
14 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.AsyncConfigMessage;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.AsyncConfigMessageBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.FlowRemovedMask;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.PacketInMask;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.PortStatusMask;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.async.config.FlowRemovedMaskBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.async.config.PacketInMaskBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170619.async.config.PortStatusMaskBuilder;
23
24 public class AsyncConfigMessageDeserializer implements OFDeserializer<AsyncConfigMessage> {
25     @Override
26     public AsyncConfigMessage deserialize(final ByteBuf message) {
27         return new AsyncConfigMessageBuilder()
28             .setVersion(EncodeConstants.OF_VERSION_1_3)
29             .setXid(readUint32(message))
30             .setPacketInMask(new PacketInMaskBuilder()
31                 .setMasterMask(deserializePacketInMask(message))
32                 .setSlaveMask(deserializePacketInMask(message))
33                 .build())
34             .setPortStatusMask(new PortStatusMaskBuilder()
35                 .setMasterMask(deserializePortStatusMask(message))
36                 .setSlaveMask(deserializePortStatusMask(message))
37                 .build())
38             .setFlowRemovedMask(new FlowRemovedMaskBuilder()
39                 .setMasterMask(deserializeFlowRemovedMask(message))
40                 .setSlaveMask(deserializeFlowRemovedMask(message))
41                 .build())
42             .build();
43     }
44
45     private static PacketInMask deserializePacketInMask(final ByteBuf byteBuf) {
46         final long mask = byteBuf.readUnsignedInt();
47         final boolean isNoMatch = (mask & 1) != 0;
48         final boolean isAction = (mask & 1 << 1) != 0;
49         final boolean isInvalidTtl = (mask & 1 << 2) != 0;
50         return new PacketInMask(isAction, isInvalidTtl, isNoMatch);
51     }
52
53     private static PortStatusMask deserializePortStatusMask(final ByteBuf byteBuf) {
54         final long mask = byteBuf.readUnsignedInt();
55         final boolean isAdd = (mask & 1) != 0;
56         final boolean isDelete = (mask & 1 << 1) != 0;
57         final boolean isModify = (mask & 1 << 2) != 0;
58         return new PortStatusMask(isAdd, isDelete, isModify);
59     }
60
61     private static FlowRemovedMask deserializeFlowRemovedMask(final ByteBuf byteBuf) {
62         final long mask = byteBuf.readUnsignedInt();
63         final boolean isIdleTimeout = (mask & 1) != 0;
64         final boolean isHardTimeout = (mask & 1 << 1) != 0;
65         final boolean isDelete = (mask & 1 << 2) != 0;
66         final boolean isGroupDelete = (mask & 1 << 3) != 0;
67         return new FlowRemovedMask(isDelete, isGroupDelete, isHardTimeout, isIdleTimeout);
68     }
69 }