+ deviceFuture.cancel(true);
+ userFuture.cancel(false);
+ keepaliveTask.enableKeepalive();
+ }
+
+ @Override
+ public void onSuccess(final DOMRpcResult result) {
+ // No matter what response we got,
+ // rpc-reply or rpc-error, we got it from device so the netconf session is OK.
+ userFuture.set(result);
+ keepaliveTask.enableKeepalive();
+ }
+
+ @Override
+ public void onFailure(final Throwable throwable) {
+ // User/Application RPC failed (The RPC did not reach the remote device or ...)
+ // FIXME: what other reasons could cause this ?)
+ LOG.warn("{}: Rpc failure detected. Reconnecting netconf session", id, throwable);
+ userFuture.setException(throwable);
+ // There is no point in keeping this session. Reconnect.
+ reconnect();