import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceInitializationPhaseHandler;
private final DataBroker dataBroker;
private final HashedWheelTimer hashedWheelTimer;
- private RequestContextStack emptyRequestContextStack;
private TranslatorLibrary translatorLibrary;
private DeviceInitializationPhaseHandler deviceInitPhaseHandler;
private NotificationService notificationService;
deviceContext.setTranslatorLibrary(translatorLibrary);
deviceContext.addDeviceContextClosedHandler(this);
- emptyRequestContextStack = new RequestContextStack() {
- @Override
- public <T> RequestContext<T> createRequestContext() {
- return new AbstractRequestContext<T>(deviceContext.getReservedXid()) {
- @Override
- public void close() {
- //NOOP
- }
- };
- }
- };
-
final OpenflowProtocolListenerFullImpl messageListener = new OpenflowProtocolListenerFullImpl(
connectionContext.getConnectionAdapter(), deviceContext);
this.translatorLibrary = translatorLibrary;
}
- private ListenableFuture<RpcResult<List<MultipartReply>>> getNodeStaticInfo(final MultipartType type, final DeviceContext deviceContext,
+ private static ListenableFuture<RpcResult<List<MultipartReply>>> getNodeStaticInfo(final MultipartType type, final DeviceContext deviceContext,
final InstanceIdentifier<Node> nodeII, final short version) {
final OutboundQueue queue = deviceContext.getPrimaryConnectionContext().getOutboundQueueProvider();
- final RequestContext<List<MultipartReply>> requestContext = emptyRequestContextStack.createRequestContext();
+ final Long reserved = deviceContext.getReservedXid();
+ final RequestContext<List<MultipartReply>> requestContext = new AbstractRequestContext<List<MultipartReply>>(reserved) {
+ @Override
+ public void close() {
+ //NOOP
+ }
+ };
+
final Xid xid = requestContext.getXid();
- LOG.trace("Hooking xid {} to device context - precaution.", requestContext.getXid().getValue());
+ LOG.trace("Hooking xid {} to device context - precaution.", reserved);
final ListenableFuture<RpcResult<List<MultipartReply>>> requestContextFuture = requestContext.getFuture();
return requestContext.getFuture();
}
- private void createSuccessProcessingCallback(final MultipartType type, final DeviceContext deviceContext, final InstanceIdentifier<Node> nodeII, final ListenableFuture<RpcResult<List<MultipartReply>>> requestContextFuture) {
+ private static void createSuccessProcessingCallback(final MultipartType type, final DeviceContext deviceContext, final InstanceIdentifier<Node> nodeII, final ListenableFuture<RpcResult<List<MultipartReply>>> requestContextFuture) {
Futures.addCallback(requestContextFuture, new FutureCallback<RpcResult<List<MultipartReply>>>() {
@Override
public void onSuccess(final RpcResult<List<MultipartReply>> rpcResult) {
@Override
public void onDeviceContextClosed(final DeviceContext deviceContext) {
deviceContexts.remove(deviceContext);
- emptyRequestContextStack = null;
}
@Override