package org.eclipse.debug.jdi.tests;

/**********************************************************************
Copyright (c) 2000, 2002 IBM Corp.  All rights reserved.
This file is made available under the terms of the Common Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v10.html
**********************************************************************/

import com.sun.jdi.VirtualMachine;

/**
 * This class allows to hold on information about the VM
 * that we don't want to loose between 2 tests.
 */
public class VMInformation {
	VirtualMachine fVM;
	Process fLaunchedVM;
	EventReader fEventReader;
	AbstractReader fConsoleReader;
	String fVMType;

	/** 
	 * Creates a new VMInformation for the given vm, vm type, launched vm, event reader and console reader.
	 */
	VMInformation(VirtualMachine vm, String vmType, Process launchedVM, EventReader eventReader, AbstractReader consoleReader) {
		fVM = vm;
		fLaunchedVM = launchedVM;
		fEventReader = eventReader;
		fConsoleReader = consoleReader;
		fVMType = vmType;
	}
}
