@Override
public void processReply(final OfHeader ofHeader) {
final RequestContext requestContext = getRequests().get(ofHeader.getXid());
- final SettableFuture replyFuture = requestContext.getFuture();
- getRequests().remove(ofHeader.getXid());
- RpcResult<OfHeader> rpcResult;
-
- if (ofHeader instanceof Error) {
- final Error error = (Error) ofHeader;
- final String message = "Operation on device failed";
- rpcResult = RpcResultBuilder
- .<OfHeader>failed()
- .withError(RpcError.ErrorType.APPLICATION, message, new DeviceDataException(message, error))
- .build();
- } else {
- rpcResult = RpcResultBuilder
- .<OfHeader>success()
- .withResult(ofHeader)
- .build();
- }
+ if (null != requestContext) {
+ final SettableFuture replyFuture = requestContext.getFuture();
+ getRequests().remove(ofHeader.getXid());
+ RpcResult<OfHeader> rpcResult;
+ if (ofHeader instanceof Error) {
+ final Error error = (Error) ofHeader;
+ final String message = "Operation on device failed";
+ rpcResult = RpcResultBuilder
+ .<OfHeader>failed()
+ .withError(RpcError.ErrorType.APPLICATION, message, new DeviceDataException(message, error))
+ .build();
+ } else {
+ rpcResult = RpcResultBuilder
+ .<OfHeader>success()
+ .withResult(ofHeader)
+ .build();
+ }
- replyFuture.set(rpcResult);
- try {
- requestContext.close();
- } catch (final Exception e) {
- LOG.error("Closing RequestContext failed: ", e);
+ replyFuture.set(rpcResult);
+ try {
+ requestContext.close();
+ } catch (final Exception e) {
+ LOG.error("Closing RequestContext failed: ", e);
+ }
+ } else {
+ LOG.error("Can't find request context registered for xid : {}", ofHeader.getXid());
}
}
import com.google.common.base.Function;
import com.google.common.util.concurrent.JdkFutureAdapters;
+import java.util.List;
+import java.util.concurrent.Future;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueueBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.util.List;
-import java.util.concurrent.Future;
/**
* Created by Martin Bobak <mbobak@cisco.com> on 2.4.2015.