01: /*
02: *
03: * <copyright>
04: *
05: * Copyright 1997-2004 BBNT Solutions, LLC
06: * under sponsorship of the Defense Advanced Research Projects
07: * Agency (DARPA).
08: *
09: * You can redistribute this software and/or modify it under the
10: * terms of the Cougaar Open Source License as published on the
11: * Cougaar Open Source Website (www.cougaar.org).
12: *
13: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24: *
25: * </copyright>
26: */
27: package org.cougaar.core.component;
28:
29: import java.util.Map;
30:
31: /**
32: * A {@link ViewService} view of an advertised or obtained service.
33: */
34: public interface ServiceView {
35:
36: /**
37: * Get the unique identifier of this service.
38: */
39: int getId();
40:
41: /**
42: * Get the time in milliseconds when the service was
43: * obtained/advertised, or zero if the service has since been
44: * released/revoked.
45: */
46: long getTimestamp();
47:
48: /**
49: * Get the service provider's identifier, or 0 if it is not known
50: * or this is an advertised service (in which case the provider
51: * is the component being viewed).
52: */
53: int getProviderId();
54:
55: /**
56: * Get the service provider's <code>ComponentDescription</code>,
57: * or null if it is not known or this is an advertised service
58: * (in which case the provider is the component being viewed).
59: */
60: ComponentDescription getProviderComponentDescription();
61:
62: /**
63: * If this service class contains a "get.*ServiceBroker()" method,
64: * get a map of "Class --> ServiceView"s for all services
65: * indirectly advertised through the "get.*ServiceBroker()"'s
66: * {@link ServiceBroker#addService} method.
67: * <p>
68: * This is primarily used to track services advertised by the
69: * core's <code>org.cougaar.core.node.NodeControlService</code>,
70: * which provides access to the root-level ServiceBroker.
71: */
72: Map getIndirectlyAdvertisedServices();
73: }
|