| /******************************************************************************* |
| * Copyright (c) 2005 The Regents of the University of California. |
| * This material was produced under U.S. Government contract W-7405-ENG-36 |
| * for Los Alamos National Laboratory, which is operated by the University |
| * of California for the U.S. Department of Energy. The U.S. Government has |
| * rights to use, reproduce, and distribute this software. NEITHER THE |
| * GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR |
| * ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified |
| * to produce derivative works, such modified software should be clearly marked, |
| * so as not to confuse it with the version available from LANL. |
| * |
| * Additionally, 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 |
| * |
| * LA-CC 04-115 |
| *******************************************************************************/ |
| package org.eclipse.ptp.core.elements; |
| |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| import org.eclipse.ptp.core.elements.attributes.JobAttributes; |
| import org.eclipse.ptp.core.elements.listeners.IJobChildListener; |
| import org.eclipse.ptp.core.elements.listeners.IJobListener; |
| |
| |
| /** |
| * A Job can be a parallel or sequential job, consisting of one or more |
| * processes which are residing on Nodes. Jobs may span Machines, though this |
| * may not be very common in reality, but the model allows for this. Finally, a |
| * Job may or may not belong to the current user, it just means that if it is |
| * visible then this user can see the Job in his or her Universe. This may have |
| * ramifications on what the user can do to the Job if it is not owned by them. |
| * |
| * @author Nathan DeBardeleben |
| */ |
| public interface IPJob extends IPElement { |
| |
| /** |
| * Add a listener for child events. |
| * |
| * @param listener |
| */ |
| public void addChildListener(IJobChildListener listener); |
| |
| /** |
| * Add a listner for element events. |
| * |
| * @param listener |
| */ |
| public void addElementListener(IJobListener listener); |
| |
| /** |
| * Get the launch configuration that was used to launch this job |
| * |
| * @return launch configuration |
| */ |
| public ILaunchConfiguration getLaunchConfiguration(); |
| |
| /** |
| * Find a Process in this Job by its ID. Returns the Process |
| * object if found, else returns <code>null</code>. |
| * |
| * @param processNumber |
| * The Process number to search for |
| * @return The Process object if found, else <code>null</code> |
| * @see IPProcess |
| */ |
| public IPProcess getProcessById(String id); |
| |
| /** |
| * Finds a Process in by its integer index. A process index is a |
| * zero-based index of all processes in the job. Returns the Process |
| * object if found, else returns <code>null</code>. |
| * |
| * @param number |
| * The Process number to search for |
| * @return The Process object if found, else <code>null</code> |
| */ |
| public IPProcess getProcessByIndex(int number); |
| |
| /** |
| * Finds a Process in by its String index. A process index is a |
| * zero-based index of all processes in the job. Returns the Process |
| * object if found, else returns <code>null</code>. |
| * |
| * @param number |
| * The Process index to search for |
| * @return The Process object if found, else <code>null</code> |
| */ |
| public IPProcess getProcessByIndex(String number); |
| |
| /** |
| * Returns an array of the Processes comprised by this Job. Might return |
| * <code>null</code> if no Processes have yet been assigned. |
| * |
| * @return The Processes in this Job. |
| */ |
| public IPProcess[] getProcesses(); |
| |
| /** |
| * Returns parent queue for this job. |
| * |
| * @return IPQueue |
| */ |
| public IPQueue getQueue(); |
| |
| /** |
| * Returns the state of the job |
| * |
| * @return job state |
| */ |
| public JobAttributes.State getState(); |
| |
| /** |
| * Returns true/false regarding whether this Job is a debug job |
| * |
| * @return True if this job is a debug job |
| */ |
| public boolean isDebug(); |
| |
| /** |
| * Returns true if all processes in the job have terminated |
| * |
| * @return |
| */ |
| public boolean isTerminated(); |
| |
| /** |
| * Remove a listener for child events. |
| * |
| * @param listener |
| */ |
| public void removeChildListener(IJobChildListener listener); |
| |
| /** |
| * Remove a listener for element events. |
| * |
| * @param listener |
| */ |
| public void removeElementListener(IJobListener listener); |
| |
| /** |
| * Sets this job to be a debug job |
| */ |
| public void setDebug(); |
| } |