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.rmi;
28:
29: import java.rmi.RemoteException;
30: import java.rmi.server.UnicastRemoteObject;
31:
32: import org.cougaar.tools.server.ProcessDescription;
33: import org.cougaar.tools.server.RemoteListenable;
34: import org.cougaar.tools.server.RemoteProcess;
35: import org.cougaar.tools.server.system.ProcessStatus;
36:
37: /**
38: * RMI delegate
39: */
40: class RemoteProcessImpl extends UnicastRemoteObject implements
41: RemoteProcessDecl {
42:
43: private final RemoteProcess rp;
44:
45: public RemoteProcessImpl(RemoteProcess rp) throws RemoteException {
46: this .rp = rp;
47: if (rp == null) {
48: throw new NullPointerException();
49: }
50: }
51:
52: public RemoteListenableDecl getRemoteListenable() throws Exception {
53: RemoteListenable rl = rp.getRemoteListenable();
54: if (rl == null) {
55: return null;
56: }
57: // could cache this
58: RemoteListenableDecl rld = new RemoteListenableImpl(rl);
59: return rld;
60: }
61:
62: //
63: // delegate the rest:
64: //
65:
66: public ProcessDescription getProcessDescription() throws Exception {
67: return rp.getProcessDescription();
68: }
69:
70: public boolean isAlive() throws Exception {
71: return rp.isAlive();
72: }
73:
74: public void dumpThreads() throws Exception {
75: rp.dumpThreads();
76: }
77:
78: public ProcessStatus[] listProcesses(boolean showAll)
79: throws Exception {
80: return rp.listProcesses(showAll);
81: }
82:
83: public int waitFor() throws Exception {
84: return rp.waitFor();
85: }
86:
87: public int waitFor(long millis) throws Exception {
88: return rp.waitFor(millis);
89: }
90:
91: public int exitValue() throws Exception {
92: return rp.exitValue();
93: }
94:
95: public int destroy() throws Exception {
96: return rp.destroy();
97: }
98: }
|