import org.opendaylight.openflowjava.protocol.api.connection.ConnectionConfiguration;
import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
+import org.opendaylight.openflowplugin.openflow.md.OFConstants;
import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
import org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorV10Translator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.ExperimenterTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.FeaturesV10ToNodeConnectorUpdatedTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartReplyTableFeaturesToTableUpdatedTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartReplyTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.PacketInTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.translator.PacketInV10Translator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.PortStatusMessageToNodeConnectorUpdatedTranslator;
import org.opendaylight.openflowplugin.openflow.md.lldp.LLDPSpeakerPopListener;
import org.opendaylight.openflowplugin.openflow.md.queue.MessageSpy;
* @author mirehak
*
*/
-public class MDController implements IMDController {
+public class MDController implements IMDController, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(MDController.class);
private Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> popListeners;
private MessageSpy<OfHeader, DataObject> messageSpyCounter;
- final private int OF10 = 1;
- final private int OF13 = 4;
+ final private int OF10 = OFConstants.OFP_VERSION_1_0;
+ final private int OF13 = OFConstants.OFP_VERSION_1_3;
/**
* provisioning of translator mapping
*/
public void init() {
- LOG.debug("Initializing!");
+ LOG.debug("init");
messageTranslators = new ConcurrentHashMap<>();
popListeners = new ConcurrentHashMap<>();
//TODO: move registration to factory
- addMessageTranslator(ErrorMessage.class, OF10, new ErrorTranslator());
+ addMessageTranslator(ErrorMessage.class, OF10, new ErrorV10Translator());
addMessageTranslator(ErrorMessage.class, OF13, new ErrorTranslator());
addMessageTranslator(FlowRemovedMessage.class, OF10, new FlowRemovedTranslator());
addMessageTranslator(FlowRemovedMessage.class, OF13, new FlowRemovedTranslator());
- addMessageTranslator(PacketInMessage.class,OF10, new PacketInTranslator());
+ addMessageTranslator(PacketInMessage.class,OF10, new PacketInV10Translator());
addMessageTranslator(PacketInMessage.class,OF13, new PacketInTranslator());
addMessageTranslator(PortStatusMessage.class,OF10, new PortStatusMessageToNodeConnectorUpdatedTranslator());
addMessageTranslator(PortStatusMessage.class,OF13, new PortStatusMessageToNodeConnectorUpdatedTranslator());
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOG.error(e.getMessage(), e);
}
+ close();
}
/**
*
*/
public void destroy() {
- // do nothing
+ close();
}
@Override
MessageSpy<OfHeader, DataObject> messageSpyCounter) {
this.messageSpyCounter = messageSpyCounter;
}
-
+
+ @Override
+ public void close() {
+ LOG.debug("close");
+ messageSpyCounter = null;
+ messageTranslators = null;
+ popListeners = null;
+ switchConnectionProvider.setSwitchConnectionHandler(null);
+ switchConnectionProvider = null;
+ OFSessionUtil.releaseSessionManager();
+ }
}