import org.opendaylight.openflowplugin.impl.registry.flow.DeviceFlowRegistryImpl;
import org.opendaylight.openflowplugin.impl.registry.group.DeviceGroupRegistryImpl;
import org.opendaylight.openflowplugin.impl.registry.meter.DeviceMeterRegistryImpl;
+import org.opendaylight.openflowplugin.impl.services.RequestContextUtil;
import org.opendaylight.openflowplugin.openflow.md.core.session.SwitchConnectionCookieOFImpl;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
public class DeviceContextImpl implements DeviceContext {
private static final Logger LOG = LoggerFactory.getLogger(DeviceContextImpl.class);
+ public static final String DEVICE_DISCONNECTED = "Device disconnected.";
private final ConnectionContext primaryConnectionContext;
private final DeviceState deviceState;
@Override
public void close() throws Exception {
for (Map.Entry<Long, RequestContext> entry : requests.entrySet()) {
- entry.getValue().close();
+ RequestContextUtil.closeRequestContextWithRpcError(entry.getValue(), DEVICE_DISCONNECTED);
}
if (primaryConnectionContext.getConnectionAdapter().isAlive()) {
primaryConnectionContext.getConnectionAdapter().disconnect();
package org.opendaylight.openflowplugin.impl.services;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-
+import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
public final class RequestContextUtil {
}
+ public static void closeRequestContextWithRpcError(final RequestContext<?> requestContext, String errorMessage) {
+
+ RpcResultBuilder rpcResultBuilder = RpcResultBuilder.failed().withRpcError(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, "", errorMessage));
+ requestContext.getFuture().set(rpcResultBuilder.build());
+ closeRequstContext(requestContext);
+ }
+
public static void closeRequstContext(final RequestContext<?> requestContext) {
try {
requestContext.close();
} catch (Exception e) {
- LOG.debug("Request context wasn't closed. Exception message: {}",e.getMessage());
+ LOG.debug("Request context wasn't closed. Exception message: {}", e.getMessage());
}
}
}