blob: 575b5ad29b95235991bbd8f77b93c16c9d31c8fd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jem.tests.proxy.vm;
/*
* $RCSfile: TestExpressionThreadTransfer.java,v $
* $Revision: 1.3 $ $Date: 2005/08/24 20:58:54 $
*/
import org.eclipse.jem.internal.proxy.common.*;
/**
* This is a test for testing callbacks.
*/
public class TestExpressionThreadTransfer implements ICallback {
IVMCallbackServer vmServer;
int callbackID;
boolean stop = false;
/**
* When told to start, it will send a callback
* once every half second until told to stop.
*/
public void start() {
// Need to put it into a new thread.
// Then we'll just wait until the thread is done.
// This will cause callback onto a different thread in IDE.
Thread t = new Thread(new Runnable() {
public void run() {
// Calback to IDE on this thread. It won't return until complete on the other side.
try {
vmServer.doCallback(new ICallbackRunnable() {
public Object run(ICallbackHandler handler) throws CommandException {
return handler.callbackAsConstants(callbackID, 0, null);
}
});
} catch (CommandException e) {
}
}
});
t.start();
while (true) {
try {
t.join();
break;
} catch (InterruptedException e) {
}
}
// Now we return and original thread on IDE resumes processing.
}
/**
* It is being initialized.
*/
public void initializeCallback(IVMCallbackServer server, int id) {
vmServer = server;
callbackID = id;
}
}