/*
* Copyright (c) 2013, 2015 IBM Corporation 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.openflowplugin.openflow.md.core;
import java.util.List;
import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.api.openflow.md.queue.PopListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yangtools.yang.binding.DataObject;
public interface IMDController {
/**
* Allows application to start translating OF messages received from switches.
*
* @param messageType
* the type of OF message that applications want to receive
* @param version corresponding OF version
* @param translator
* : Object that implements the {@link org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator}
*/
public void addMessageTranslator(Class<? extends DataObject> messageType, int version, IMDMessageTranslator<OfHeader, List<DataObject>> translator);
/**
* Allows application to stop receiving OF message received from switches.
*
* @param messageType
* The type of OF message that applications want to stop
* receiving
* @param version TODO
* @param translator
* The object that implements the {@link IMDMessageTranslator}
*/
public void removeMessageTranslator(Class<? extends DataObject> messageType, int version, IMDMessageTranslator<OfHeader, List<DataObject>> translator);
/**
* Allows application to start pop-listening MD-SAL messages received from switches.
*
* @param messageType
* the type of OF message that applications want to receive
* @param popListener
* : Object that implements the {@link PopListener}
*/
void removeMessagePopListener(Class<? extends DataObject> messageType, PopListener<DataObject> popListener);
/**
* Allows application to stop pop-listening MD-SAL messages received from switches.
*
* @param messageType
* the type of OF message that applications want to receive
* @param popListener
* : Object that implements the {@link PopListener}
*/
void addMessagePopListener(Class<? extends DataObject> messageType, PopListener<DataObject> popListener);
}