some more refactoring
This commit is contained in:
@@ -128,12 +128,13 @@ public class DebugStackState extends StackState implements DebugRequestListener
|
|||||||
|
|
||||||
// debug hooks
|
// debug hooks
|
||||||
public void debugHooks( int pc ) {
|
public void debugHooks( int pc ) {
|
||||||
if(DebugUtils.IS_DEBUG)
|
if ( exiting ) {
|
||||||
|
throw new AbortException("aborted by debug client");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(DebugUtils.IS_DEBUG)
|
||||||
DebugUtils.println("entered debugHook...");
|
DebugUtils.println("entered debugHook...");
|
||||||
|
|
||||||
if ( exiting )
|
|
||||||
throw new AbortException("exiting");
|
|
||||||
|
|
||||||
synchronized ( this ) {
|
synchronized ( this ) {
|
||||||
|
|
||||||
// anytime the line doesn't change we keep going
|
// anytime the line doesn't change we keep going
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ import lua.debug.request.DebugRequest;
|
|||||||
import lua.debug.request.DebugRequestListener;
|
import lua.debug.request.DebugRequestListener;
|
||||||
import lua.debug.response.DebugResponse;
|
import lua.debug.response.DebugResponse;
|
||||||
|
|
||||||
public class DebugSupport implements DebugEventListener {
|
public class DebugSupport implements DebugRequestListener, DebugEventListener {
|
||||||
protected static final int UNKNOWN = 0;
|
protected static final int UNKNOWN = 0;
|
||||||
protected static final int RUNNING = 1;
|
protected static final int RUNNING = 1;
|
||||||
protected static final int STOPPED = 2;
|
protected static final int STOPPED = 2;
|
||||||
|
|
||||||
protected DebugRequestListener listener;
|
protected DebugRequestListener vm;
|
||||||
protected int requestPort;
|
protected int requestPort;
|
||||||
protected int eventPort;
|
protected int eventPort;
|
||||||
protected Thread requestWatcherThread;
|
protected Thread requestWatcherThread;
|
||||||
@@ -56,10 +56,10 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
protected Socket clientEventSocket;
|
protected Socket clientEventSocket;
|
||||||
protected DataOutputStream eventWriter;
|
protected DataOutputStream eventWriter;
|
||||||
|
|
||||||
public DebugSupport(DebugRequestListener listener,
|
public DebugSupport(DebugRequestListener vm,
|
||||||
int requestPort,
|
int requestPort,
|
||||||
int eventPort) {
|
int eventPort) {
|
||||||
this.listener = listener;
|
this.vm = vm;
|
||||||
this.requestPort = requestPort;
|
this.requestPort = requestPort;
|
||||||
this.eventPort = eventPort;
|
this.eventPort = eventPort;
|
||||||
}
|
}
|
||||||
@@ -139,7 +139,7 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
this.state = RUNNING;
|
this.state = RUNNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized int getState() {
|
protected synchronized int getState() {
|
||||||
return this.state;
|
return this.state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
this.state = STOPPED;
|
this.state = STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleRequest() {
|
protected void handleRequest() {
|
||||||
synchronized (clientRequestSocket) {
|
synchronized (clientRequestSocket) {
|
||||||
try {
|
try {
|
||||||
while (getState() != STOPPED) {
|
while (getState() != STOPPED) {
|
||||||
@@ -158,7 +158,7 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
= (DebugRequest) SerializationHelper.deserialize(data);
|
= (DebugRequest) SerializationHelper.deserialize(data);
|
||||||
DebugUtils.println("SERVER receives request: " + request.toString());
|
DebugUtils.println("SERVER receives request: " + request.toString());
|
||||||
|
|
||||||
DebugResponse response = listener.handleRequest(request);
|
DebugResponse response = handleRequest(request);
|
||||||
data = SerializationHelper.serialize(response);
|
data = SerializationHelper.serialize(response);
|
||||||
requestWriter.writeInt(data.length);
|
requestWriter.writeInt(data.length);
|
||||||
requestWriter.write(data);
|
requestWriter.write(data);
|
||||||
@@ -203,7 +203,7 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
*
|
*
|
||||||
* @param event
|
* @param event
|
||||||
*/
|
*/
|
||||||
public void fireEvent(DebugEvent event) {
|
protected void sendEvent(DebugEvent event) {
|
||||||
DebugUtils.println("SERVER sending event: " + event.toString());
|
DebugUtils.println("SERVER sending event: " + event.toString());
|
||||||
synchronized (eventSocket) {
|
synchronized (eventSocket) {
|
||||||
try {
|
try {
|
||||||
@@ -221,6 +221,18 @@ public class DebugSupport implements DebugEventListener {
|
|||||||
* @see lua.debug.DebugEventListener#notifyDebugEvent(lua.debug.DebugEvent)
|
* @see lua.debug.DebugEventListener#notifyDebugEvent(lua.debug.DebugEvent)
|
||||||
*/
|
*/
|
||||||
public void notifyDebugEvent(DebugEvent event) {
|
public void notifyDebugEvent(DebugEvent event) {
|
||||||
fireEvent(event);
|
sendEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see lua.debug.DebugRequestListener#handleRequest(java.lang.String)
|
||||||
|
*/
|
||||||
|
public DebugResponse handleRequest(DebugRequest request) {
|
||||||
|
if (DebugUtils.IS_DEBUG) {
|
||||||
|
DebugUtils.println("handling request: " + request.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugResponse response = vm.handleRequest(request);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ public class StandardLuaJVM implements DebugRequestListener {
|
|||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
debugSupport.fireEvent(new DebugEvent(DebugEventType.started));
|
debugSupport.notifyDebugEvent(new DebugEvent(DebugEventType.started));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DebugStackState getDebugState() {
|
private DebugStackState getDebugState() {
|
||||||
@@ -260,17 +260,16 @@ public class StandardLuaJVM implements DebugRequestListener {
|
|||||||
throw new UnsupportedOperationException("Must be in debug mode to handle the debug requests");
|
throw new UnsupportedOperationException("Must be in debug mode to handle the debug requests");
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugUtils.println("handling request: " + request.toString());
|
|
||||||
DebugRequestType requestType = request.getType();
|
DebugRequestType requestType = request.getType();
|
||||||
if (DebugRequestType.suspend == requestType) {
|
if (DebugRequestType.suspend == requestType) {
|
||||||
DebugResponse status = getDebugState().handleRequest(request);
|
DebugResponse status = getDebugState().handleRequest(request);
|
||||||
DebugEvent event = new DebugEvent(DebugEventType.suspendedByClient);
|
DebugEvent event = new DebugEvent(DebugEventType.suspendedByClient);
|
||||||
debugSupport.fireEvent(event);
|
debugSupport.notifyDebugEvent(event);
|
||||||
return status;
|
return status;
|
||||||
} else if (DebugRequestType.resume == requestType) {
|
} else if (DebugRequestType.resume == requestType) {
|
||||||
DebugResponse status = getDebugState().handleRequest(request);
|
DebugResponse status = getDebugState().handleRequest(request);
|
||||||
DebugEvent event = new DebugEvent(DebugEventType.resumedByClient);
|
DebugEvent event = new DebugEvent(DebugEventType.resumedByClient);
|
||||||
debugSupport.fireEvent(event);
|
debugSupport.notifyDebugEvent(event);
|
||||||
return status;
|
return status;
|
||||||
} else if (DebugRequestType.exit == requestType) {
|
} else if (DebugRequestType.exit == requestType) {
|
||||||
stop();
|
stop();
|
||||||
@@ -281,17 +280,16 @@ public class StandardLuaJVM implements DebugRequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void stop() {
|
protected void stop() {
|
||||||
DebugUtils.println("exit LuaJ VM...");
|
|
||||||
if (this.debugSupport != null) {
|
if (this.debugSupport != null) {
|
||||||
DebugEvent event = new DebugEvent(DebugEventType.terminated);
|
DebugEvent event = new DebugEvent(DebugEventType.terminated);
|
||||||
debugSupport.fireEvent(event);
|
debugSupport.notifyDebugEvent(event);
|
||||||
Timer timer = new Timer("DebugServerDeathThread");
|
Timer timer = new Timer("DebugServerDeathThread");
|
||||||
timer.schedule(new TimerTask() {
|
timer.schedule(new TimerTask() {
|
||||||
public void run() {
|
public void run() {
|
||||||
debugSupport.stop();
|
debugSupport.stop();
|
||||||
debugSupport = null;
|
debugSupport = null;
|
||||||
}
|
}
|
||||||
}, 500);
|
}, 300);
|
||||||
}
|
}
|
||||||
getDebugState().exit();
|
getDebugState().exit();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user