Skip to content

Commit f3954d9

Browse files
committed
Move vm-specific classes into Debugger
1 parent 90bdf1e commit f3954d9

File tree

3 files changed

+67
-115
lines changed

3 files changed

+67
-115
lines changed

java/src/processing/mode/java/Debugger.java

Lines changed: 67 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,10 @@
4242
import processing.app.Sketch;
4343
import processing.app.SketchCode;
4444
import processing.mode.java.debug.*;
45-
import processing.mode.java.pdex.VMEventListener;
46-
import processing.mode.java.pdex.VMEventReader;
4745
import processing.mode.java.runner.Runner;
4846

4947

50-
public class Debugger implements VMEventListener {
48+
public class Debugger {
5149

5250
/// editor window, acting as main view
5351
protected JavaEditor editor;
@@ -91,6 +89,9 @@ public class Debugger implements VMEventListener {
9189
/// tab filenames which already have been tracked for runtime changes
9290
protected Set<String> runtimeTabsTracked = new HashSet<>();
9391

92+
/// VM event listener
93+
protected VMEventListener vmEventListener = this::vmEvent;
94+
9495

9596
public Debugger(JavaEditor editor) {
9697
this.editor = editor;
@@ -219,7 +220,7 @@ public synchronized void startDebug() {
219220
}
220221

221222
// start receiving vm events
222-
VMEventReader eventThread = new VMEventReader(vm.eventQueue(), this);
223+
VMEventReader eventThread = new VMEventReader(vm.eventQueue(), vmEventListener);
223224
eventThread.start();
224225

225226
startTrackingLineChanges();
@@ -532,7 +533,6 @@ synchronized List<LineBreakpoint> getBreakpoints(String tabFilename) {
532533
* ({@link VMEventReader})
533534
* @param es Incoming set of events from VM
534535
*/
535-
@Override
536536
public synchronized void vmEvent(EventSet es) {
537537
for (Event e : es) {
538538
log(Level.INFO, "*** VM Event: {0}", e.toString());
@@ -1392,4 +1392,66 @@ static private void log(Level level, String msg) {
13921392
static private void log(Level level, String msg, Object obj) {
13931393
Logger.getLogger(Debugger.class.getName()).log(level, msg, obj);
13941394
}
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+
}
13951457
}

java/src/processing/mode/java/pdex/VMEventListener.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

java/src/processing/mode/java/pdex/VMEventReader.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

0 commit comments

Comments
 (0)