Move NetconfMessage into netconf.api.messages
[netconf.git] / protocol / netconf-client / src / main / java / org / opendaylight / netconf / client / SimpleNetconfClientSessionListener.java
index 0390e637fa970068ca220b558dc6667e573806aa..b9e6815dec109a0dd9075ecce1e3673d4984d052 100644 (file)
@@ -16,8 +16,8 @@ import java.util.ArrayDeque;
 import java.util.Queue;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.checkerframework.checker.lock.qual.Holding;
-import org.opendaylight.netconf.api.NetconfMessage;
 import org.opendaylight.netconf.api.NetconfTerminationReason;
+import org.opendaylight.netconf.api.messages.NetconfMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -27,7 +27,7 @@ public class SimpleNetconfClientSessionListener implements NetconfClientSessionL
         private final NetconfMessage request;
 
         RequestEntry(final Promise<NetconfMessage> future, final NetconfMessage request) {
-            this.promise = requireNonNull(future);
+            promise = requireNonNull(future);
             this.request = requireNonNull(request);
         }
     }
@@ -69,7 +69,7 @@ public class SimpleNetconfClientSessionListener implements NetconfClientSessionL
             e.promise.setFailure(cause);
         }
 
-        this.clientSession = null;
+        clientSession = null;
     }
 
     @Override
@@ -101,6 +101,19 @@ public class SimpleNetconfClientSessionListener implements NetconfClientSessionL
         }
     }
 
+    @Override
+    public synchronized void onError(final NetconfClientSession session, final Exception failure) {
+        LOG.debug("New error arrived: {}", failure.toString());
+
+        final RequestEntry e = requests.poll();
+        if (e != null) {
+            e.promise.setFailure(failure);
+            dispatchRequest();
+        } else {
+            LOG.info("Ignoring unsolicited error {}", failure.toString());
+        }
+    }
+
     public final synchronized Future<NetconfMessage> sendRequest(final NetconfMessage message) {
         final RequestEntry req = new RequestEntry(GlobalEventExecutor.INSTANCE.newPromise(), message);