01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.tools.server;
28:
29: import java.util.List;
30:
31: /**
32: * Client support from a host to create remote processes.
33: */
34: public interface RemoteProcessManager {
35:
36: /**
37: * Create a new process with the given description and
38: * listener(s) configuration.
39: *
40: * @throws IllegalArgumentException if the description's
41: * ".getName()" is already in use by another running
42: * process.
43: * @throws Exception if unable to create or start the
44: * process.
45: */
46: RemoteProcess createRemoteProcess(ProcessDescription pd,
47: RemoteListenableConfig rlc) throws Exception;
48:
49: /**
50: * Kill the process with the given ProcessDescription
51: * ".getName()".
52: *
53: * @return the exit value of the process, or
54: * <tt>Integer.MIN_VALUE</tt> if no such process
55: * exists.
56: *
57: * @see #getProcessDescription
58: */
59: int killRemoteProcess(String procName) throws Exception;
60:
61: /**
62: * Get the ProcessDescriptions (for a running Process).
63: *
64: * @return null if the process is not known, or is not
65: * running.
66: */
67: ProcessDescription getProcessDescription(String procName)
68: throws Exception;
69:
70: /**
71: * Get a running process.
72: */
73: RemoteProcess getRemoteProcess(String procName) throws Exception;
74:
75: /**
76: * Get a List of all ProcessDescriptions (for running
77: * Processes) where the <tt>ProcessDescription.getGroup()</tt>
78: * equals the given <tt>procGroup</tt> String.
79: */
80: List listProcessDescriptions(String procGroup) throws Exception;
81:
82: /**
83: * Get a List of all ProcessDescriptions (for running
84: * Processes).
85: */
86: List listProcessDescriptions() throws Exception;
87:
88: }
|