4d3b8ac442e5da7fecfa5e1321938eba62fd4b24
[bgpcep.git] / bgp / rib-spi / src / main / java / org / opendaylight / protocol / bgp / rib / spi / RIBExtensionProviderContext.java
1 /*
2  * Copyright (c) 2013 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 package org.opendaylight.protocol.bgp.rib.spi;
9
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;
12
13 /**
14  * Interface for registering AdjRIBsIn factories. In order for a model-driven
15  * RIB implementation to work correctly, it has to know how to handle
16  * individual NLRI fields, whose encoding is specific to a AFI/SAFI pair. This
17  * interface exposes an interface for registration of factories for creating
18  * AdjRIBsIn instances, which handle the specifics.
19  */
20 public interface RIBExtensionProviderContext extends RIBExtensionConsumerContext {
21         /**
22          * Register a AdjRIBsInFactory for a particular AFI/SAFI combination.
23          * 
24          * @param afi Address Family identifier
25          * @param safi Subsequent Address Family identifier
26          * @param factory AdjRIBsInFactory
27          * @return Registration handle. Call its close() method to remove it.
28          */
29         public AutoCloseable registerAdjRIBsInFactory(Class<? extends AddressFamily> afi,
30                         Class<? extends SubsequentAddressFamily> safi, AdjRIBsInFactory factory);
31 }