127db49b13329ae6cefa69f3b747d96d90054877
[bgpcep.git] / rsvp / impl / src / main / java / org / opendaylight / protocol / rsvp / parser / impl / subobject / xro / XROSubobjectUtil.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. 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
9 package org.opendaylight.protocol.rsvp.parser.impl.subobject.xro;
10
11 import io.netty.buffer.ByteBuf;
12
13 public final class XROSubobjectUtil {
14
15     private static final int HEADER_SIZE = 2;
16
17     private static final int MANDATORY_BIT = 7;
18
19     private XROSubobjectUtil() {
20         throw new UnsupportedOperationException();
21     }
22
23     public static void formatSubobject(final int type, final Boolean mandatory, final ByteBuf body,
24         final ByteBuf buffer) {
25         if (mandatory == null) {
26             buffer.writeByte(type);
27         } else {
28             buffer.writeByte(type | (mandatory ? 1 << MANDATORY_BIT : 0));
29         }
30         buffer.writeByte(body.writerIndex() + HEADER_SIZE);
31         buffer.writeBytes(body);
32     }
33 }