/* * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowjava.protocol.impl.util; import io.netty.buffer.ByteBuf; import java.util.List; import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.yangtools.yang.binding.DataObject; /** * Serializes list items and their headers * @author michal.polkorab */ public abstract class ListSerializer { private ListSerializer() { //not called } /** * Serializes item list * @param list list of items to be serialized * @param keyMaker creates key for registry lookup * @param registry stores serializers * @param outBuffer output buffer */ public static <E extends DataObject> void serializeList(List<E> list, TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) { if (list != null) { for (E item : list) { OFSerializer<E> serializer = registry.getSerializer(keyMaker.make(item)); serializer.serialize(item, outBuffer); } } } /** * Serializes headers of items in list * @param list list of items to be serialized * @param keyMaker creates key for registry lookup * @param registry stores serializers * @param outBuffer output buffer */ public static <E extends DataObject> void serializeHeaderList(List<E> list, TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) { if (list != null) { for (E item : list) { HeaderSerializer<E> serializer = registry.getSerializer(keyMaker.make(item)); serializer.serializeHeader(item, outBuffer); } } } }