*/
package org.opendaylight.protocol.bgp.rib.impl.spi;
+import com.google.common.base.Optional;
+import io.netty.channel.ChannelFuture;
import io.netty.util.concurrent.Future;
import java.net.InetSocketAddress;
-import org.opendaylight.protocol.bgp.parser.BGPSession;
-import org.opendaylight.protocol.framework.ReconnectStrategy;
-import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
-import org.opendaylight.tcpmd5.api.KeyMapping;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
+import org.opendaylight.protocol.bgp.rib.spi.BGPSession;
+import org.opendaylight.protocol.concepts.KeyMapping;
/**
* Dispatcher class for creating BGP clients.
*/
-public interface BGPDispatcher extends BGPServerDispatcher {
+public interface BGPDispatcher{
/**
* Creates BGP client.
*
- * @param address Peer address
- * @param peerRegistry BGP peer registry
+ * @param remoteAddress remote Peer address
+ * @param retryTimer Retry timer
* @return Future promising a client session
*/
- Future<? extends BGPSession> createClient(InetSocketAddress address, AsNumber remoteAs,
- BGPPeerRegistry peerRegistry, ReconnectStrategy strategy);
+ Future<? extends BGPSession> createClient(InetSocketAddress remoteAddress, int retryTimer);
- Future<Void> createReconnectingClient(InetSocketAddress address, AsNumber remoteAs,
- BGPPeerRegistry peerRegistry, ReconnectStrategyFactory connectStrategyFactory,
- ReconnectStrategyFactory reestablishStrategyFactory);
+ /**
+ * Creates Reconnecting client.
+ *
+ * @param remoteAddress remote Peer Address
+ * @param retryTimer Retry timer
+ * @param keys for TCPMD5
+ * @return Future promising a client session
+ */
+ Future<Void> createReconnectingClient(InetSocketAddress remoteAddress, int retryTimer, Optional<KeyMapping> keys);
- Future<Void> createReconnectingClient(InetSocketAddress address, AsNumber remoteAs,
- BGPPeerRegistry peerRegistry, ReconnectStrategyFactory connectStrategyFactory,
- ReconnectStrategyFactory reestablishStrategyFactory, KeyMapping keys);
+ /**
+ * Create new BGP server to accept incoming bgp connections (bound to provided socket localAddress).
+ *
+ * @param localAddress Peer localAddress
+ *
+ * @return ChannelFuture promising a client session
+ */
+ ChannelFuture createServer(InetSocketAddress localAddress);
+
+ /**
+ * Return BGP Peer Registry
+ * @return BGPPeerRegistry
+ */
+ BGPPeerRegistry getBGPPeerRegistry();
}