001: /*
002: * <copyright>
003: *
004: * Copyright 2002-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.servicediscovery.service;
028:
029: import org.cougaar.core.component.Service;
030: import org.cougaar.servicediscovery.transaction.RegistryQuery;
031:
032: /**
033: * Service interface for querying the registry to find providers
034: * that provide a particular service.
035: */
036: public interface RegistryQueryService extends Service, YPServiceAdapter {
037:
038: /**
039: * Returns providers matching the attributes in the RegistryQuery
040: * object. Uses default YPService search, i.e. query progresses
041: * up the structure of YP servers until either a match is found or
042: * search has reached the topmost server.
043: * @param query RegistryQuery containing the attributes to be matched.
044: * @param callback callback.invoke(Collection) of ProviderInfo objects.
045: * If no matches, returns empty list.
046: */
047: public void findProviders(RegistryQuery query, Callback callback);
048:
049: /**
050: * Returns providers matching the attributes in the RegistryQuery
051: * object. Uses single step YPService search. Query is applied to the
052: * YP server in the next YPContext. If lastYPContext argument is null,
053: * search starts with the closest YPServer.
054: * @param lastYPContext YP context where the previous search ended.
055: * Use null if starting search.
056: * @param query RegistryQuery containing the attributes to be matched.
057: * @param callback CallbackWithContext, callback.setNextContext(object) with
058: * yp server context, callback.invoke(Collection) of ProviderInfo objects.
059: * If no matches, returns empty list.
060: */
061: public void findProviders(Object lastYPContext,
062: RegistryQuery query, CallbackWithContext callback);
063:
064: /**
065: * Returns providers matching the attributes in the RegistryQuery
066: * object. Uses single step YPService search. Query is applied to the
067: * YP server for the specified agent. Currently requires that agent
068: * also be a YPServer. Bug in CommunityService
069: * (http://bugs.cougaar.org/show_bug.cgi?id=3585) prevents a more general
070: * implementation.
071: *
072: * @param agentName Name of the agent whose YP server should be queried
073: * @param query RegistryQuery containing the attributes to be matched.
074: * @param callback CallbackWithContext, callback.setNextContext(object) with
075: * yp server context, callback.invoke(Collection) of ProviderInfo objects.
076: * If no matches, returns empty list.
077: */
078: public void findProviders(String agentName, RegistryQuery query,
079: CallbackWithContext callback);
080:
081: /**
082: * Returns all services matching the attributes in the RegistryQuery object.
083: * Uses default YPService search, i.e. query progresses
084: * up the structure of YP servers until either a match is found or
085: * search has reached the topmost server.
086: * @param query RegistryQuery containing the attributes to be matched.
087: * @param callback callback.invoke(Collection) of ServiceInfo objects. If
088: * no matches, returns empty list.
089: */
090: public void findServices(RegistryQuery query, Callback callback);
091:
092: /**
093: * Returns all services matching the attributes in the RegistryQuery object.
094: * Uses single step YPService search. Query is applied to the
095: * YP server in the next YPContext. If lastYPContext argument is null,
096: * search starts with the closest YPServer.
097: * @param lastYPContext YP context where the previous search ended.
098: * Use null if starting search.
099: * @param query RegistryQuery containing the attributes to be matched.
100: * @param callback CallbackWithContext, callback.setNextContext(object) with
101: * yp server context, callback.invoke(Collection) with ServiceInfo objects.
102: * If no matches, returns empty list.
103: */
104: public void findServices(Object lastYPContext, RegistryQuery query,
105: CallbackWithContext callback);
106:
107: /**
108: * Returns all services matching the attributes in the RegistryQuery object.
109: * Uses single step YPService search. Query is applied to the
110: * YP server for the specified agent. Currently requires that agent
111: * also be a YPServer. Bug in CommunityService
112: * (http://bugs.cougaar.org/show_bug.cgi?id=3585) prevents a more general
113: * implementation.
114: *
115: * @param agentName Name of the agent whose YP server should be queried
116: * @param query RegistryQuery containing the attributes to be matched.
117: * @param callback CallbackWithContext, callback.setNextContext(object) with
118: * yp server context, callback.invoke(Collection) with ServiceInfo objects.
119: * If no matches, returns empty list.
120: */
121: public void findServices(String agentName, RegistryQuery query,
122: CallbackWithContext callback);
123:
124: /**
125: * Returns all services matching the attributes in the RegistryQuery object.
126: * Uses default YPService search, i.e. query progresses
127: * up the structure of YP servers until either a match is found or
128: * search has reached the topmost server.
129: * @param query RegistryQuery containing the attributes to be matched.
130: * @param callback callback.invoke(Collection) of lightweight ServiceInfo
131: * objects. If no matches, returns empty list.
132: */
133: public void findServiceAndBinding(RegistryQuery query,
134: Callback callback);
135:
136: /**
137: * Returns all services matching the attributes in the RegistryQuery object.
138: * Uses single step YPService search. Query is applied to the
139: * YP server in the next YPContext. If lastYPContext argument is null,
140: * search starts with the closest YPServer.
141: * @param lastYPContext YP context where the previous search ended.
142: * Use null if starting search.
143: * @param query RegistryQuery containing the attributes to be matched.
144: * @param callback CallbackWithContext, callback.setNextContext(object) with
145: * yp server context, callback.invoke(Collection) with lightweight
146: * ServiceInfo, objects. If no matches, returns empty list.
147: */
148: public void findServiceAndBinding(Object lastYPContext,
149: RegistryQuery query, CallbackWithContext callback);
150:
151: /**
152: * Returns all services matching the attributes in the RegistryQuery
153: * object.
154: * Uses single step YPService search. Query is applied to the
155: * YP server for the specified agent. Currently requires that agent
156: * also be a YPServer. Bug in CommunityService
157: * (http://bugs.cougaar.org/show_bug.cgi?id=3585) prevents a more general
158: * implementation.
159: *
160: * @param agentName Name of the agent whose YP server should be queried
161: * @param query RegistryQuery containing the attributes to be matched.
162: * @param callback CallbackWithContext, callback.setNextContext(object) with
163: * yp server context, callback.invoke(Collection) with lightweight
164: * ServiceInfo, objects. If no matches, returns empty list.
165: */
166: public void findServiceAndBinding(String agentName,
167: RegistryQuery query, CallbackWithContext callback);
168:
169: }
|