01: /*
02: * <copyright>
03: *
04: * Copyright 2003-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: package org.cougaar.tools.server.system;
27:
28: import java.io.InputStream;
29:
30: /**
31: * Interface for an Operating System specific utility
32: * that<ol>
33: * <li>Modifies a command to prefix the output with
34: * the command's process-identifier<li>
35: * <li>Parses the initial bytes of the output to
36: * read this process-identifier</li>
37: * </ol>
38: *
39: * @see SystemAccessFactory
40: */
41: public interface ProcessLauncher {
42:
43: /**
44: * @see #getCommandLine(String) preferred usage
45: */
46: String[] getCommandLine(String[] cmd);
47:
48: /**
49: * Create a modified <code>String[]</code> command from the
50: */
51: String[] getCommandLine(String fullCmd);
52:
53: /**
54: * Read the process identifier from the response.
55: * <p>
56: * This <u>must</u> be the first command invoked upon the
57: * Process's InputStream, since the process-id is prefixed to the
58: * stream!
59: * <p>
60: * It is not neccessary to wrap the InputStream with a buffer prior
61: * to this call. This is important if your application generates
62: * binary output.
63: *
64: * @return a process-id, or -1 if the id is not known
65: */
66: long parseProcessIdentifier(InputStream in) throws Exception;
67:
68: }
|