private RemoteDeviceConnector remoteDeviceConnector;
private NetconfNodeManager netconfNodeManager;
private boolean finalClose = false;
+ private boolean closed = false;
private boolean isMaster;
private ActorRef masterActorRef;
// in case that master changes role to slave, new NodeDeviceManager must be created and listener registered
netconfNodeManager = createNodeDeviceManager();
}
- if (masterActorRef != null) {
- netconfTopologyDeviceSetup.getActorSystem().stop(masterActorRef);
- masterActorRef = null;
- }
- if (remoteDeviceConnector != null) {
- remoteDeviceConnector.stopRemoteDeviceConnection();
- }
+ stopDeviceConnectorAndActor();
return Futures.immediateCheckedFuture(null);
}
if (netconfNodeManager != null) {
netconfNodeManager.close();
}
+ stopDeviceConnectorAndActor();
- if (remoteDeviceConnector != null) {
- remoteDeviceConnector.stopRemoteDeviceConnection();
- }
-
- if (masterActorRef != null) {
- netconfTopologyDeviceSetup.getActorSystem().stop(masterActorRef);
- masterActorRef = null;
- }
}
/**
}, netconfTopologyDeviceSetup.getActorSystem().dispatcher());
}
}
+
+ private synchronized void stopDeviceConnectorAndActor() {
+ if (closed) {
+ return;
+ }
+ if (remoteDeviceConnector != null) {
+ remoteDeviceConnector.stopRemoteDeviceConnection();
+ }
+
+ if (masterActorRef != null) {
+ netconfTopologyDeviceSetup.getActorSystem().stop(masterActorRef);
+ masterActorRef = null;
+ }
+ closed = true;
+ }
}