#38 notify backend of lost connection, version bump to 0.3.1
[fanfix.git] / src / jexer / backend / GenericBackend.java
index bb9ae9f95af83a52c618541f121df6cbb0faecc5..8d8fb3752243161eed12545ce3ebba9c5cfd4ba2 100644 (file)
@@ -3,7 +3,7 @@
  *
  * The MIT License (MIT)
  *
- * Copyright (C) 2017 Kevin Lamonte
+ * Copyright (C) 2019 Kevin Lamonte
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -31,6 +31,8 @@ package jexer.backend;
 import java.util.List;
 
 import jexer.event.TInputEvent;
+import jexer.event.TCommandEvent;
+import static jexer.TCommand.*;
 
 /**
  * This abstract class provides a screen, keyboard, and mouse to
@@ -108,6 +110,18 @@ public abstract class GenericBackend implements Backend {
     public void getEvents(final List<TInputEvent> queue) {
         if (terminal.hasEvents()) {
             terminal.getEvents(queue);
+
+            // This default backend assumes a single user, and if that user
+            // becomes disconnected we should terminate the application.
+            if (queue.size() > 0) {
+                TInputEvent event = queue.get(queue.size() - 1);
+                if (event instanceof TCommandEvent) {
+                    TCommandEvent command = (TCommandEvent) event;
+                    if (command.equals(cmBackendDisconnect)) {
+                        queue.add(new TCommandEvent(cmAbort));
+                    }
+                }
+            }
         }
     }
 
@@ -137,4 +151,11 @@ public abstract class GenericBackend implements Backend {
         terminal.setListener(listener);
     }
 
+    /**
+     * Reload backend options from System properties.
+     */
+    public void reloadOptions() {
+        terminal.reloadOptions();
+    }
+
 }