some more refactoring

This commit is contained in:
Shu Lei
2007-10-12 23:39:27 +00:00
parent 38dafdb190
commit 70442348a1
3 changed files with 34 additions and 23 deletions

View File

@@ -128,11 +128,12 @@ public class DebugStackState extends StackState implements DebugRequestListener
// debug hooks
public void debugHooks( int pc ) {
if(DebugUtils.IS_DEBUG)
DebugUtils.println("entered debugHook...");
if ( exiting ) {
throw new AbortException("aborted by debug client");
}
if ( exiting )
throw new AbortException("exiting");
if(DebugUtils.IS_DEBUG)
DebugUtils.println("entered debugHook...");
synchronized ( this ) {

View File

@@ -36,12 +36,12 @@ import lua.debug.request.DebugRequest;
import lua.debug.request.DebugRequestListener;
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 RUNNING = 1;
protected static final int STOPPED = 2;
protected DebugRequestListener listener;
protected DebugRequestListener vm;
protected int requestPort;
protected int eventPort;
protected Thread requestWatcherThread;
@@ -56,10 +56,10 @@ public class DebugSupport implements DebugEventListener {
protected Socket clientEventSocket;
protected DataOutputStream eventWriter;
public DebugSupport(DebugRequestListener listener,
int requestPort,
int eventPort) {
this.listener = listener;
public DebugSupport(DebugRequestListener vm,
int requestPort,
int eventPort) {
this.vm = vm;
this.requestPort = requestPort;
this.eventPort = eventPort;
}
@@ -139,7 +139,7 @@ public class DebugSupport implements DebugEventListener {
this.state = RUNNING;
}
public synchronized int getState() {
protected synchronized int getState() {
return this.state;
}
@@ -147,7 +147,7 @@ public class DebugSupport implements DebugEventListener {
this.state = STOPPED;
}
public void handleRequest() {
protected void handleRequest() {
synchronized (clientRequestSocket) {
try {
while (getState() != STOPPED) {
@@ -158,7 +158,7 @@ public class DebugSupport implements DebugEventListener {
= (DebugRequest) SerializationHelper.deserialize(data);
DebugUtils.println("SERVER receives request: " + request.toString());
DebugResponse response = listener.handleRequest(request);
DebugResponse response = handleRequest(request);
data = SerializationHelper.serialize(response);
requestWriter.writeInt(data.length);
requestWriter.write(data);
@@ -203,7 +203,7 @@ public class DebugSupport implements DebugEventListener {
*
* @param event
*/
public void fireEvent(DebugEvent event) {
protected void sendEvent(DebugEvent event) {
DebugUtils.println("SERVER sending event: " + event.toString());
synchronized (eventSocket) {
try {
@@ -221,6 +221,18 @@ public class DebugSupport implements DebugEventListener {
* @see lua.debug.DebugEventListener#notifyDebugEvent(lua.debug.DebugEvent)
*/
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;
}
}

View File

@@ -245,7 +245,7 @@ public class StandardLuaJVM implements DebugRequestListener {
}
}).start();
debugSupport.fireEvent(new DebugEvent(DebugEventType.started));
debugSupport.notifyDebugEvent(new DebugEvent(DebugEventType.started));
}
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");
}
DebugUtils.println("handling request: " + request.toString());
DebugRequestType requestType = request.getType();
if (DebugRequestType.suspend == requestType) {
DebugResponse status = getDebugState().handleRequest(request);
DebugEvent event = new DebugEvent(DebugEventType.suspendedByClient);
debugSupport.fireEvent(event);
debugSupport.notifyDebugEvent(event);
return status;
} else if (DebugRequestType.resume == requestType) {
DebugResponse status = getDebugState().handleRequest(request);
DebugEvent event = new DebugEvent(DebugEventType.resumedByClient);
debugSupport.fireEvent(event);
debugSupport.notifyDebugEvent(event);
return status;
} else if (DebugRequestType.exit == requestType) {
stop();
@@ -281,17 +280,16 @@ public class StandardLuaJVM implements DebugRequestListener {
}
protected void stop() {
DebugUtils.println("exit LuaJ VM...");
if (this.debugSupport != null) {
DebugEvent event = new DebugEvent(DebugEventType.terminated);
debugSupport.fireEvent(event);
debugSupport.notifyDebugEvent(event);
Timer timer = new Timer("DebugServerDeathThread");
timer.schedule(new TimerTask() {
public void run() {
debugSupport.stop();
debugSupport = null;
}
}, 500);
}, 300);
}
getDebugState().exit();
}