import io.netty.util.Timeout;
import java.math.BigInteger;
import java.util.List;
+import javax.annotation.Nonnull;
import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
import org.opendaylight.openflowplugin.api.openflow.OFPContext;
import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceReplyProcessor;
import org.opendaylight.openflowplugin.api.openflow.device.handlers.MultiMsgCollector;
-import org.opendaylight.openflowplugin.api.openflow.lifecycle.LifecycleService;
+import org.opendaylight.openflowplugin.api.openflow.lifecycle.ContextChainStateListener;
import org.opendaylight.openflowplugin.api.openflow.registry.ItemLifeCycleRegistry;
import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.SalRoleService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.SetRoleOutput;
+import org.opendaylight.yangtools.yang.common.RpcResult;
/**
* The central entity of OFP is the Device Context, which encapsulate the logical state of a switch
*/
public interface DeviceContext extends
OFPContext,
- AutoCloseable,
DeviceReplyProcessor,
TxFacade,
- DeviceRegistry{
+ DeviceRegistry,
+ RequestContextStack,
+ ContextChainStateListener {
/**
* Method close all auxiliary connections and primary connection.
DeviceState getDeviceState();
/**
- * Method has to close TxManager ASAP we are notified about Closed Connection
+ * Method has to close TxManager ASAP we are notified about Closed Connection.
* @return sync. future for Slave and MD-SAL completition for Master
*/
ListenableFuture<Void> shuttingDownDataStoreTransactions();
/**
+ * Getter.
* @return current devices connection context
*/
ConnectionContext getPrimaryConnectionContext();
/**
+ * Getter.
* @return current devices auxiliary connection contexts
*/
ConnectionContext getAuxiliaryConnectionContexts(BigInteger cookie);
/**
+ * Getter.
* @return translator library
*/
TranslatorLibrary oook();
/**
- * store cancellable timeout handler of currently running barrier task
+ * store cancellable timeout handler of currently running barrier task.
*/
void setCurrentBarrierTimeout(Timeout timeout);
/**
+ * Getter.
* @return cancellable timeout handle of currently running barrier task
*/
Timeout getBarrierTaskTimeout();
MessageSpy getMessageSpy();
- MultiMsgCollector getMultiMsgCollector(final RequestContext<List<MultipartReply>> requestContext);
+ <T extends OfHeader> MultiMsgCollector<T> getMultiMsgCollector(final RequestContext<List<T>> requestContext);
/**
- * indicates that device context is fully published (e.g.: packetIn messages should be passed)
+ * indicates that device context is fully published (e.g.: packetIn messages should be passed).
*/
void onPublished();
/**
- * change packetIn rate limiter borders
- *
+ * change packetIn rate limiter borders.
* @param upperBound max amount of outstanding packetIns
*/
void updatePacketInRateLimit(long upperBound);
/**
+ * Getter.
* @return registry point for item life cycle sources of device
*/
ItemLifeCycleRegistry getItemLifeCycleSourceRegistry();
- @Override
- void close();
-
void setSwitchFeaturesMandatory(boolean switchFeaturesMandatory);
- void putLifecycleServiceIntoTxChainManager(LifecycleService lifecycleService);
+ boolean isSkipTableFeatures();
- void replaceConnectionContext(ConnectionContext connectionContext);
+ /**
+ * Setter for sal role service.
+ * @param salRoleService Role Service
+ */
+ void setSalRoleService(@Nonnull final SalRoleService salRoleService);
- boolean isSkipTableFeatures();
+ /**
+ * Make device slave.
+ * @return listenable future from sal role service
+ */
+ ListenableFuture<RpcResult<SetRoleOutput>> makeDeviceSlave();
+
+ boolean canUseSingleLayerSerialization();
}