BUG-108: split off individual registries
[bgpcep.git] / bgp / rib-spi / src / main / java / org / opendaylight / protocol / bgp / rib / spi / RIBExtensionProviderContext.java
diff --git a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBExtensionProviderContext.java b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBExtensionProviderContext.java
new file mode 100644 (file)
index 0000000..4d3b8ac
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. 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.protocol.bgp.rib.spi;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
+
+/**
+ * Interface for registering AdjRIBsIn factories. In order for a model-driven
+ * RIB implementation to work correctly, it has to know how to handle
+ * individual NLRI fields, whose encoding is specific to a AFI/SAFI pair. This
+ * interface exposes an interface for registration of factories for creating
+ * AdjRIBsIn instances, which handle the specifics.
+ */
+public interface RIBExtensionProviderContext extends RIBExtensionConsumerContext {
+       /**
+        * Register a AdjRIBsInFactory for a particular AFI/SAFI combination.
+        * 
+        * @param afi Address Family identifier
+        * @param safi Subsequent Address Family identifier
+        * @param factory AdjRIBsInFactory
+        * @return Registration handle. Call its close() method to remove it.
+        */
+       public AutoCloseable registerAdjRIBsInFactory(Class<? extends AddressFamily> afi,
+                       Class<? extends SubsequentAddressFamily> safi, AdjRIBsInFactory factory);
+}
\ No newline at end of file