summaryrefslogtreecommitdiff
path: root/altoslib/AltosIdleMonitor.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-12-18 01:14:11 -0800
committerKeith Packard <keithp@keithp.com>2013-12-18 01:14:11 -0800
commite26306c9350ef1d107d4257ef1c09d15165c9154 (patch)
treed7983c6a04c54b3307d6fc2699dad4fa21d8bde0 /altoslib/AltosIdleMonitor.java
parent18852efa108ba6e6e69dfd5076d4f4c01f62b4ef (diff)
altoslib: Pass InterruptedException up the stack instead of hiding it
When interrupting a thread that is talking to a serial device, it's important not to have that thread discard the InterruptedException so that it will actually terminate. This patch removes a bunch of places that were discarding InterruptedExceptions and lets higher level code see them so that they can exit cleanly. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosIdleMonitor.java')
-rw-r--r--altoslib/AltosIdleMonitor.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java
index d858845a..c816c202 100644
--- a/altoslib/AltosIdleMonitor.java
+++ b/altoslib/AltosIdleMonitor.java
@@ -90,15 +90,16 @@ public class AltosIdleMonitor extends Thread {
link.abort_reply();
}
- public void abort() {
- if (isAlive()) {
+ public void abort() throws InterruptedException {
+ System.out.printf("Attempting to abort monitor thread\n");
+ while (isAlive()) {
+ System.out.printf("Interrupting\n");
interrupt();
link.abort_reply();
- try {
- join();
- } catch (InterruptedException ie) {
- }
+ Thread.sleep(100);
}
+ System.out.printf("Appears to be dead now\n");
+ join();
}
public void run() {
@@ -115,7 +116,10 @@ public class AltosIdleMonitor extends Thread {
}
} catch (InterruptedException ie) {
}
- link.close();
+ try {
+ link.close();
+ } catch (InterruptedException ie) {
+ }
}
public AltosIdleMonitor(AltosIdleMonitorListener in_listener, AltosLink in_link, boolean in_remote)