* 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.openflowplugin.impl.connection;
import java.net.InetAddress;
import java.util.concurrent.TimeUnit;
import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
import org.opendaylight.openflowjava.protocol.api.connection.ConnectionReadyListener;
-import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandler;
import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionManager;
import org.opendaylight.openflowplugin.api.openflow.connection.HandshakeContext;
import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceConnectedHandler;
-import org.opendaylight.openflowplugin.api.openflow.device.handlers.MessageHandler;
import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;
import org.opendaylight.openflowplugin.api.openflow.md.core.HandshakeListener;
import org.opendaylight.openflowplugin.api.openflow.md.core.HandshakeManager;
private static final Logger LOG = LoggerFactory.getLogger(ConnectionManagerImpl.class);
private static final int HELLO_LIMIT = 20;
- private boolean bitmapNegotiationEnabled = true;
+ private final boolean bitmapNegotiationEnabled = true;
private DeviceConnectedHandler deviceConnectedHandler;
+ private final long echoReplyTimeout;
+
+ public ConnectionManagerImpl(long echoReplyTimeout) {
+ this.echoReplyTimeout = echoReplyTimeout;
+ }
+
@Override
public void onSwitchConnected(final ConnectionAdapter connectionAdapter) {
LOG.trace("preparing handshake: {}", connectionAdapter.getRemoteAddress());
- final int handshakeThreadLimit = 1; //TODO: move to constants/parametrize
+ final int handshakeThreadLimit = 1;
final ThreadPoolLoggingExecutor handshakePool = createHandshakePool(
connectionAdapter.getRemoteAddress().toString(), handshakeThreadLimit);
LOG.trace("prepare handshake context");
HandshakeContext handshakeContext = new HandshakeContextImpl(handshakePool, handshakeManager);
handshakeListener.setHandshakeContext(handshakeContext);
+ connectionContext.setHandshakeContext(handshakeContext);
LOG.trace("prepare connection listeners");
final ConnectionReadyListener connectionReadyListener = new ConnectionReadyListenerImpl(
new OpenflowProtocolListenerInitialImpl(connectionContext, handshakeContext);
connectionAdapter.setMessageListener(ofMessageListener);
- final SystemNotificationsListener systemListener = new SystemNotificationsListenerImpl(connectionContext, handshakeContext);
+ final SystemNotificationsListener systemListener = new SystemNotificationsListenerImpl(connectionContext, echoReplyTimeout);
connectionAdapter.setSystemListener(systemListener);
LOG.trace("connection ballet finished");
* @return
*/
private static ThreadPoolLoggingExecutor createHandshakePool(
- final String connectionIdentifier, int handshakeThreadLimit) {
+ final String connectionIdentifier, final int handshakeThreadLimit) {
return new ThreadPoolLoggingExecutor(handshakeThreadLimit,
handshakeThreadLimit, 0L, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(HELLO_LIMIT), "OFHandshake-" + connectionIdentifier);
* @return
*/
private HandshakeManager createHandshakeManager(final ConnectionAdapter connectionAdapter,
- HandshakeListener handshakeListener) {
+ final HandshakeListener handshakeListener) {
HandshakeManagerImpl handshakeManager = new HandshakeManagerImpl(connectionAdapter,
ConnectionConductor.versionOrder.get(0),
ConnectionConductor.versionOrder);
* @return parameter dedicated to hello message content
*/
public boolean isBitmapNegotiationEnabled() {
- return bitmapNegotiationEnabled ;
+ return bitmapNegotiationEnabled;
}
- /**
- * @param bitmapNegotiationEnabled the bitmapNegotiationEnabled to set
- */
- public void setBitmapNegotiationEnabled(boolean bitmapNegotiationEnabled) {
- this.bitmapNegotiationEnabled = bitmapNegotiationEnabled;
- }
@Override
- public boolean accept(InetAddress switchAddress) {
+ public boolean accept(final InetAddress switchAddress) {
// TODO add connection accept logic based on address
return true;
}
@Override
- public void setDeviceConnectedHandler(DeviceConnectedHandler deviceConnectedHandler) {
+ public void setDeviceConnectedHandler(final DeviceConnectedHandler deviceConnectedHandler) {
this.deviceConnectedHandler = deviceConnectedHandler;
}
-
- @Override
- public void setMessageHandler(MessageHandler arg0) {
- // TODO Auto-generated method stub
-
- }
}