/*******************************************************************************
 * Copyright (c) 2000, 2011 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.jdi.hcr;

import com.sun.jdi.ObjectCollectedException;
import com.sun.jdi.ThreadReference;
import com.sun.jdi.request.DuplicateRequestException;
import com.sun.jdi.request.EventRequest;

/**
 * Hot code replacement extension to
 * <code>com.sun.jdi.request.EventRequestManager</code>.
 */
public interface EventRequestManager extends com.sun.jdi.Mirror {
	/**
	 * Creates a new disabled {@link ReenterStepRequest}. The new event request
	 * is added to the list managed by this EventRequestManager. Use
	 * {@link EventRequest#enable()} to activate this event request.
	 * <p>
	 * The returned request will control stepping only in the specified
	 * <code>thread</code>; all other threads will be unaffected.
	 * <p>
	 * Only one pending reenter step request is allowed per thread.
	 * <p>
	 * Note that enabling such a request can throw an
	 * <code>OperationRefusedException</code> if the VM refused to perform this
	 * operation. This in recognition that the VM may be in an awkward state and
	 * unable to comply. For example, execution is suspended in a native method
	 * and the arguments would be unavailable on return .
	 *
	 * @param thread
	 *            the thread in which to step
	 * @return the created {@link ReenterStepRequest}
	 * @throws DuplicateRequestException
	 *             if there is already a pending step request for the specified
	 *             thread.
	 * @throws ObjectCollectedException
	 *             if the thread object has been garbage collected.
	 */
	public ReenterStepRequest createReenterStepRequest(ThreadReference thread);
}
