import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
+import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch;
import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;
import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer;
-import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch;
import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ControllerRole;
GetFeaturesOutput getFeatures();
/**
- * @param auxiliaryKey
- * key under which the auxiliary conductor is stored
+ * @param auxiliaryKey key under which the auxiliary conductor is stored
* @return list of auxiliary connection wrappers
*/
ConnectionConductor getAuxiliaryConductor(
* @param conductor
*/
void addAuxiliaryConductor(SwitchConnectionDistinguisher auxiliaryKey,
- ConnectionConductor conductor);
+ ConnectionConductor conductor);
/**
* @param connectionCookie
/**
* Returns a map containing all OFPhysicalPorts of this switch.
+ *
* @return The Map of OFPhysicalPort
*/
+ @Deprecated
Map<Long, PortGrouping> getPhysicalPorts();
/**
* Returns a map containing all bandwidths for all OFPorts of this switch.
+ *
* @return The Map of bandwidths for all OFPorts
*/
+ @Deprecated
Map<Long, Boolean> getPortsBandwidth();
/**
* Returns a Set containing all port IDs of this switch.
+ *
* @return The Set of port ID
*/
+ @Deprecated
Set<Long> getPorts();
/**
* Returns OFPhysicalPort of the specified portNumber of this switch.
+ *
* @param portNumber The port ID
* @return OFPhysicalPort for the specified PortNumber
*/
/**
* Returns the bandwidth of the specified portNumber of this switch.
+ *
* @param portNumber the port ID
* @return bandwidth
*/
/**
* Returns True if the port is enabled,
+ *
* @param portNumber
* @return True if the port is enabled
*/
/**
* Returns True if the port is enabled.
+ *
* @param port
* @return True if the port is enabled
*/
/**
* Returns a list containing all enabled ports of this switch.
+ *
* @return List containing all enabled ports of this switch
*/
List<PortGrouping> getEnabledPorts();
// TODO:: add listeners here, manager will set them and conductor use them
/**
- * get message dispatch service to send the message to switch
+ * get message dispatch service to send the message to switch
*
* @return the message service
*/
IMessageDispatchService getMessageDispatchService();
- /**
- * @return the unique xid for this session
- */
+ /**
+ * @return the unique xid for this session
+ */
Long getNextXid();
/**
import com.google.common.annotations.VisibleForTesting;
import com.google.common.util.concurrent.Futures;
-
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-
import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
import org.opendaylight.openflowjava.protocol.api.connection.ConnectionReadyListener;
import org.opendaylight.openflowplugin.api.OFConstants;
/**
* @param connectionAdapter
- * @param ingressMaxQueueSize
- * ingress queue limit (blocking)
+ * @param ingressMaxQueueSize ingress queue limit (blocking)
*/
public ConnectionConductorImpl(ConnectionAdapter connectionAdapter,
- int ingressMaxQueueSize) {
+ int ingressMaxQueueSize) {
this.connectionAdapter = connectionAdapter;
this.ingressMaxQueueSize = ingressMaxQueueSize;
conductorState = CONDUCTOR_STATE.HANDSHAKING;
hsPool = new ThreadPoolLoggingExecutor(handshakeThreadLimit,
handshakeThreadLimit, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(), "OFHandshake-"
- + conductorId);
+ + conductorId);
connectionAdapter.setMessageListener(this);
connectionAdapter.setSystemListener(this);
}
/**
- * @param errorHandler
- * the errorHandler to set
+ * @param errorHandler the errorHandler to set
*/
@Override
public void setErrorHandler(ErrorHandler errorHandler) {
/**
* @param message
- * @param queueType
- * enqueue type
+ * @param queueType enqueue type
*/
private void enqueueMessage(OfHeader message, QueueType queueType) {
queue.push(message, this, queueType);
@Override
public void onPortStatusMessage(PortStatusMessage message) {
- processPortStatusMsg(message);
- enqueueMessage(message);
+ try {
+ processPortStatusMsg(message);
+ } finally {
+ enqueueMessage(message);
+ }
}
protected void processPortStatusMsg(PortStatus msg) {
"can't get bandwidth info from port: {}, aborting port update",
msg.toString());
} else {
- this.getSessionContext().getPhysicalPorts().put(portNumber, msg);
- this.getSessionContext().getPortsBandwidth()
- .put(portNumber, portBandwidth);
+ if (null != this.sessionContext) {
+ //FIXME these two properties are never used in code
+ this.getSessionContext().getPhysicalPorts().put(portNumber, msg);
+ this.getSessionContext().getPortsBandwidth()
+ .put(portNumber, portBandwidth);
+ } else {
+ LOG.warn("Trying to process update port message before session context was created.");
+ }
}
}
}
/**
- * @param conductorState
- * the connectionState to set
+ * @param conductorState the connectionState to set
*/
@Override
public void setConductorState(CONDUCTOR_STATE conductorState) {
protected void checkState(CONDUCTOR_STATE expectedState) {
if (!conductorState.equals(expectedState)) {
LOG.warn("State of connection to switch {} is not correct, "
- + "terminating the connection",connectionAdapter.getRemoteAddress() );
+ + "terminating the connection", connectionAdapter.getRemoteAddress());
throw new IllegalStateException("Expected state: " + expectedState
+ ", actual state:" + conductorState);
}
* @param negotiatedVersion
*/
protected void postHandshakeBasic(GetFeaturesOutput featureOutput,
- Short negotiatedVersion) {
+ Short negotiatedVersion) {
version = negotiatedVersion;
if (version == OFConstants.OFP_VERSION_1_0) {
// Because the GetFeaturesOutput contains information about the port
}
/**
- * @param isBitmapNegotiationEnable
- * the isBitmapNegotiationEnable to set
+ * @param isBitmapNegotiationEnable the isBitmapNegotiationEnable to set
*/
public void setBitmapNegotiationEnable(boolean isBitmapNegotiationEnable) {
this.isBitmapNegotiationEnable = isBitmapNegotiationEnable;
@Override
public void close() {
conductorState = CONDUCTOR_STATE.RIP;
- if(handshakeContext != null){
+ if (handshakeContext != null) {
try {
handshakeContext.close();
} catch (Exception e) {
}
private void shutdownPoolPolitely() {
- LOG.debug("Terminating handshake pool for node {}",connectionAdapter.getRemoteAddress());
+ LOG.debug("Terminating handshake pool for node {}", connectionAdapter.getRemoteAddress());
hsPool.shutdown();
try {
hsPool.awaitTermination(1, TimeUnit.SECONDS);
LOG.debug("Error while awaiting termination of pool. Will force shutdown now.");
} finally {
hsPool.purge();
- if (! hsPool.isTerminated()) {
+ if (!hsPool.isTerminated()) {
hsPool.shutdownNow();
}
LOG.debug("is handshake pool for node {} is terminated : {}",