blob: 6842c3c8ad762f5d1873f41e64d8a0c6a0e0a38e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 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.wst.jsdt.debug.core.jsdi;
import java.util.List;
import org.eclipse.wst.jsdt.debug.core.jsdi.event.EventQueue;
import org.eclipse.wst.jsdt.debug.core.jsdi.request.EventRequestManager;
/**
* Abstract description of a VM.
* This interface is used to abstract the platform model from the underlying connection / debugger protocol.
*
* @since 1.0
* @noextend This interface is not intended to be extended by clients.
*/
public interface VirtualMachine {
public final int DEFAULT_TIMEOUT = 30000;
/**
* Sends a resume request to the VM
*/
public void resume();
/**
* Sends a suspend request to the VM
*/
public void suspend();
/**
* Terminates and disconnects the VM
*/
public void terminate();
/**
* Returns the name of the {@link VirtualMachine}.<br>
* <br>
* This method can return <code>null</code>
*
* @return the name of the {@link VirtualMachine} or <code>null</code>
*/
public String name();
/**
* Returns the description of the {@link VirtualMachine}.<br>
* <br>
* This method can return <code>null</code>
*
* @return the description of the {@link VirtualMachine} or <code>null</code>
*/
public String description();
/**
* Returns the version string of the {@link VirtualMachine}.<br>
* <br>
* This method can return <code>null</code>
*
* @return the version string of the {@link VirtualMachine} or <code>null</code>
*/
public String version();
/**
* Returns the live list of {@link ThreadReference}s in the {@link VirtualMachine}
* or an empty list.<br>
* <br>
* This method cannot return <code>null</code>
*
* @return the live list of {@link ThreadReference}s in the {@link VirtualMachine}
* or an empty list, never <code>null</code>
*/
public List /*<ThreadReference>*/ allThreads();
/**
* Returns the live list of {@link ScriptReference}s loaded in the {@link VirtualMachine}
* or an empty list.<br>
* <br>
* This method cannot return <code>null</code>
*
* @return the live list of loaded {@link ScriptReference}s
* or an empty list, never <code>null</code>
*/
public List /*<ScriptReference>*/ allScripts();
/**
* Disposes the {@link VirtualMachine} and cleans up held objects
*/
public void dispose();
/**
* Returns the {@link UndefinedValue} value.
*
* @return the {@link UndefinedValue} value
*/
public UndefinedValue mirrorOfUndefined();
/**
* Returns the {@link NullValue} value.
*
* @return the {@link NullValue} value.
*/
public NullValue mirrorOfNull();
/**
* Returns a new {@link BooleanValue}.
*
* @param bool the boolean primitive to mirror in the {@link VirtualMachine}
*
* @return a new {@link BooleanValue}
*/
public BooleanValue mirrorOf(boolean bool);
/**
* Returns a new {@link NumberValue}.
*
* @param number the {@link Number} to mirror in the {@link VirtualMachine}
*
* @return a new {@link NumberValue}
*/
public NumberValue mirrorOf(Number number);
/**
* Returns a {@link StringValue} initialized to the given {@link String}.
*
* @param string the initial value for the mirrored {@link StringValue}
*
* @return a new {@link StringValue}
*/
public StringValue mirrorOf(String string);
/**
* Returns the {@link EventRequestManager} associated with this {@link VirtualMachine}.<br>
* <br>
* This method can return <code>null</code> if the {@link VirtualMachine} has been disposed or terminated.
*
* @return the {@link EventRequestManager} for this {@link VirtualMachine} or <code>null</code>
*/
public EventRequestManager eventRequestManager();
/**
* Returns the {@link EventQueue} associated with this {@link VirtualMachine}.<br>
* <br>
* This method can return <code>null</code> if the {@link VirtualMachine} has been disposed or terminated.
*
* @return the {@link EventQueue} for this {@link VirtualMachine} or <code>null</code>
*/
public EventQueue eventQueue();
}