| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 90bdf1e commit f3954d9
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -42,12 +42,10 @@ | |||
| 42 | 42 | import processing.app.Sketch; | |
| 43 | 43 | import processing.app.SketchCode; | |
| 44 | 44 | import processing.mode.java.debug.*; | |
| 45 | - import processing.mode.java.pdex.VMEventListener; | ||
| 46 | - import processing.mode.java.pdex.VMEventReader; | ||
| 47 | 45 | import processing.mode.java.runner.Runner; | |
| 48 | 46 | ||
| 49 | 47 | ||
| 50 | - public class Debugger implements VMEventListener { | ||
| 48 | + public class Debugger { | ||
| 51 | 49 | ||
| 52 | 50 | /// editor window, acting as main view | |
| 53 | 51 | protected JavaEditor editor; | |
@@ -91,6 +89,9 @@ public class Debugger implements VMEventListener { | |||
| 91 | 89 | /// tab filenames which already have been tracked for runtime changes | |
| 92 | 90 | protected Set<String> runtimeTabsTracked = new HashSet<>(); | |
| 93 | 91 | ||
| 92 | + /// VM event listener | ||
| 93 | + protected VMEventListener vmEventListener = this::vmEvent; | ||
| 94 | + | ||
| 94 | 95 | ||
| 95 | 96 | public Debugger(JavaEditor editor) { | |
| 96 | 97 | this.editor = editor; | |
@@ -219,7 +220,7 @@ public synchronized void startDebug() { | |||
| 219 | 220 | } | |
| 220 | 221 | ||
| 221 | 222 | // start receiving vm events | |
| 222 | - VMEventReader eventThread = new VMEventReader(vm.eventQueue(), this); | ||
| 223 | + VMEventReader eventThread = new VMEventReader(vm.eventQueue(), vmEventListener); | ||
| 223 | 224 | eventThread.start(); | |
| 224 | 225 | ||
| 225 | 226 | startTrackingLineChanges(); | |
@@ -532,7 +533,6 @@ synchronized List<LineBreakpoint> getBreakpoints(String tabFilename) { | |||
| 532 | 533 | * ({@link VMEventReader}) | |
| 533 | 534 | * @param es Incoming set of events from VM | |
| 534 | 535 | */ | |
| 535 | - @Override | ||
| 536 | 536 | public synchronized void vmEvent(EventSet es) { | |
| 537 | 537 | for (Event e : es) { | |
| 538 | 538 | log(Level.INFO, "*** VM Event: {0}", e.toString()); | |
@@ -1392,4 +1392,66 @@ static private void log(Level level, String msg) { | |||
| 1392 | 1392 | static private void log(Level level, String msg, Object obj) { | |
| 1393 | 1393 | Logger.getLogger(Debugger.class.getName()).log(level, msg, obj); | |
| 1394 | 1394 | } | |
| 1395 | + | ||
| 1396 | + | ||
| 1397 | + /** | ||
| 1398 | + * Interface for VM callbacks. | ||
| 1399 | + * | ||
| 1400 | + * @author Martin Leopold <m@martinleopold.com> | ||
| 1401 | + */ | ||
| 1402 | + protected interface VMEventListener { | ||
| 1403 | + | ||
| 1404 | + /** | ||
| 1405 | + * Receive an event from the VM. Events are sent in batches. See | ||
| 1406 | + * documentation of EventSet for more information. | ||
| 1407 | + * | ||
| 1408 | + * @param es Set of events | ||
| 1409 | + */ | ||
| 1410 | + void vmEvent(EventSet es); | ||
| 1411 | + } | ||
| 1412 | + | ||
| 1413 | + | ||
| 1414 | + /** | ||
| 1415 | + * Reader Thread for VM Events. Constantly monitors a VMs EventQueue for new | ||
| 1416 | + * events and forwards them to an VMEventListener. | ||
| 1417 | + * | ||
| 1418 | + * @author Martin Leopold <m@martinleopold.com> | ||
| 1419 | + */ | ||
| 1420 | + protected static class VMEventReader extends Thread { | ||
| 1421 | + | ||
| 1422 | + EventQueue eventQueue; | ||
| 1423 | + VMEventListener listener; | ||
| 1424 | + | ||
| 1425 | + /** | ||
| 1426 | + * Construct a VMEventReader. Needs to be kicked off with start() once | ||
| 1427 | + * constructed. | ||
| 1428 | + * | ||
| 1429 | + * @param eventQueue The queue to read events from. Can be obtained from a | ||
| 1430 | + * VirtualMachine via eventQueue(). | ||
| 1431 | + * @param listener the listener to forward events to. | ||
| 1432 | + */ | ||
| 1433 | + public VMEventReader(EventQueue eventQueue, VMEventListener listener) { | ||
| 1434 | + super("VM Event Thread"); | ||
| 1435 | + this.eventQueue = eventQueue; | ||
| 1436 | + this.listener = listener; | ||
| 1437 | + } | ||
| 1438 | + | ||
| 1439 | + @Override | ||
| 1440 | + public void run() { | ||
| 1441 | + try { | ||
| 1442 | + while (true) { | ||
| 1443 | + EventSet eventSet = eventQueue.remove(); | ||
| 1444 | + listener.vmEvent(eventSet); | ||
| 1445 | + /* | ||
| 1446 | + * for (Event e : eventSet) { System.out.println("VM Event: " + | ||
| 1447 | + * e.toString()); } | ||
| 1448 | + */ | ||
| 1449 | + } | ||
| 1450 | + } catch (VMDisconnectedException e) { | ||
| 1451 | + Logger.getLogger(VMEventReader.class.getName()).log(Level.INFO, "VMEventReader quit on VM disconnect"); | ||
| 1452 | + } catch (Exception e) { | ||
| 1453 | + Logger.getLogger(VMEventReader.class.getName()).log(Level.SEVERE, "VMEventReader quit", e); | ||
| 1454 | + } | ||
| 1455 | + } | ||
| 1456 | + } | ||
| 1395 | 1457 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments