2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.protocol.bgp.rib.spi;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
14 * Interface for registering AdjRIBsIn factories. In order for a model-driven RIB implementation to work correctly, it
15 * has to know how to handle individual NLRI fields, whose encoding is specific to a AFI/SAFI pair. This interface
16 * exposes an interface for registration of factories for creating AdjRIBsIn instances, which handle the specifics.
18 public interface RIBExtensionProviderContext extends RIBExtensionConsumerContext {
20 * Register a AdjRIBsInFactory for a particular AFI/SAFI combination.
22 * @param afi Address Family identifier
23 * @param safi Subsequent Address Family identifier
24 * @param factory AdjRIBsInFactory
25 * @return Registration handle. Call its close() method to remove it.
27 AutoCloseable registerAdjRIBsInFactory(Class<? extends AddressFamily> afi, Class<? extends SubsequentAddressFamily> safi,
28 AdjRIBsFactory factory);
31 * Register a RIBSupport instance for a particular AFI/SAFI combination.
33 * @param afi Address Family identifier
34 * @param safi Subsequent Address Family identifier
35 * @param support RIBSupport instance
36 * @return Registration handle. Call {@link RIBSupportRegistration#close()} method to remove it.
37 * @throws NullPointerException if any of the arguments is null
39 <T extends RIBSupport> RIBSupportRegistration<T> registerRIBSupport(Class<? extends AddressFamily> afi, Class<? extends SubsequentAddressFamily> safi, T support);