Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "Bug 1586: Do not use JaxRS 2.0 unnecessarily"
[controller.git]
/
opendaylight
/
md-sal
/
sal-netconf-connector
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
sal
/
connect
/
netconf
/
listener
/
NetconfDeviceCommunicator.java
diff --git
a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java
b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java
index 3871cdfa4f4cb7556313d8419407e1d3326dc802..aadb911f453a0613ed6b5470e5ee8cd7cba6e7cf 100644
(file)
--- a/
opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java
+++ b/
opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java
@@
-51,8
+51,10
@@
public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
private final RemoteDeviceId id;
private final Lock sessionLock = new ReentrantLock();
private final RemoteDeviceId id;
private final Lock sessionLock = new ReentrantLock();
+ // TODO implement concurrent message limit
private final Queue<Request> requests = new ArrayDeque<>();
private NetconfClientSession session;
private final Queue<Request> requests = new ArrayDeque<>();
private NetconfClientSession session;
+ private Future<?> initFuture;
public NetconfDeviceCommunicator(final RemoteDeviceId id, final RemoteDevice<NetconfSessionCapabilities, NetconfMessage> remoteDevice,
final NetconfSessionCapabilities netconfSessionCapabilities) {
public NetconfDeviceCommunicator(final RemoteDeviceId id, final RemoteDevice<NetconfSessionCapabilities, NetconfMessage> remoteDevice,
final NetconfSessionCapabilities netconfSessionCapabilities) {
@@
-97,9
+99,9
@@
public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
public void initializeRemoteConnection(final NetconfClientDispatcher dispatch,
final NetconfClientConfiguration config) {
if(config instanceof NetconfReconnectingClientConfiguration) {
public void initializeRemoteConnection(final NetconfClientDispatcher dispatch,
final NetconfClientConfiguration config) {
if(config instanceof NetconfReconnectingClientConfiguration) {
- dispatch.createReconnectingClient((NetconfReconnectingClientConfiguration) config);
+
initFuture =
dispatch.createReconnectingClient((NetconfReconnectingClientConfiguration) config);
} else {
} else {
- dispatch.createClient(config);
+
initFuture =
dispatch.createClient(config);
}
}
}
}
@@
-172,7
+174,15
@@
public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
@Override
public void close() {
@Override
public void close() {
- tearDown( String.format( "The netconf session to %1$s has been closed", id.getName() ) );
+ // Cancel reconnect if in progress
+ if(initFuture != null) {
+ initFuture.cancel(false);
+ }
+ // Disconnect from device
+ if(session != null) {
+ session.close();
+ }
+ tearDown(id + ": Netconf session closed");
}
@Override
}
@Override
@@
-191,12
+201,12
@@
public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
private void processMessage(final NetconfMessage message) {
Request request = null;
sessionLock.lock();
private void processMessage(final NetconfMessage message) {
Request request = null;
sessionLock.lock();
+
try {
request = requests.peek();
try {
request = requests.peek();
- if (request.future.isUncancellable()) {
+ if (request
!= null && request
.future.isUncancellable()) {
requests.poll();
requests.poll();
- }
- else {
+ } else {
request = null;
logger.warn("{}: Ignoring unsolicited message {}", id, msgToS(message));
}
request = null;
logger.warn("{}: Ignoring unsolicited message {}", id, msgToS(message));
}
@@
-229,7
+239,7
@@
public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
try {
NetconfMessageTransformUtil.checkSuccessReply(message);
}
try {
NetconfMessageTransformUtil.checkSuccessReply(message);
}
- catch(
NetconfDocumentedException e
) {
+ catch(
final NetconfDocumentedException e
) {
logger.warn( "{}: Error reply from remote device, request: {}, response: {}", id,
msgToS( request.request ), msgToS( message ), e );
logger.warn( "{}: Error reply from remote device, request: {}, response: {}", id,
msgToS( request.request ), msgToS( message ), e );