| /******************************************************************************* |
| * 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: TestCallback.java,v $ |
| * $Revision: 1.6 $ $Date: 2005/08/24 20:58:54 $ |
| */ |
| |
| import org.eclipse.jem.internal.proxy.common.*; |
| /** |
| * This is a test for testing callbacks. |
| */ |
| public class TestCallback 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() { |
| new Thread(new Runnable() { |
| public void run() { |
| // First send back test for IDE calling back on same thread. We do this by sending the thread id |
| // as a constant and the other side will then call back to remote, ask for the thread id, and |
| // see if it matches. |
| try { |
| vmServer.doCallback(new ICallbackRunnable() { |
| public Object run(ICallbackHandler handler) throws CommandException { |
| return handler.callbackAsConstants(callbackID, 1, new Integer(Thread.currentThread().hashCode())); |
| } |
| }); |
| |
| } catch (CommandException e) { |
| } |
| |
| // Now do the regular testing. |
| final Integer[] p = new Integer[] {new Integer(0)}; |
| while(!stop) { |
| try { |
| Thread.sleep(500); |
| } catch (InterruptedException e) { |
| continue; |
| } |
| if (stop) |
| break; |
| // Now signal the callback. |
| p[0] = new Integer(p[0].intValue()+1); |
| try { |
| vmServer.doCallback(new ICallbackRunnable() { |
| public Object run(ICallbackHandler handler) throws CommandException { |
| return handler.callbackWithParms(callbackID, 0, p); |
| } |
| }); |
| } catch (CommandException e) { |
| } |
| } |
| } |
| }).start(); |
| } |
| |
| /** |
| * Tell it stop. |
| */ |
| public void stop() { |
| stop = true; |
| } |
| |
| /** |
| * It is being initialized. |
| */ |
| public void initializeCallback(IVMCallbackServer server, int id) { |
| vmServer = server; |
| callbackID = id; |
| } |
| |
| } |