01: /*
02: * <copyright>
03: *
04: * Copyright 2000-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.lib.web.arch.root;
27:
28: import java.io.IOException;
29: import java.util.Map;
30: import java.util.Set;
31:
32: /**
33: * Interface to a global registry of servers and their (globally-unique) child
34: * names.
35: * <p>
36: * For example, host "bbn.com" could have HTTP support on port 4321 and HTTPS
37: * support on port 8765, and contain two (internal) children, "AgentX" and
38: * "AgentY". The <code>GlobalRegistry</code> provides support for "bbn.com"
39: * to advertise:
40: * <pre><tt>
41: * ("AgentX", "http=bbn.com:4321, https=bbn.com:8765")
42: * ("AgentY", "http=bbn.com:4321, https=bbn.com:8765")
43: * </tt></pre>
44: * to remote servers and to find remote names, such as "AgentZ".
45: * <p>
46: * The URL-encoded names must be HTTP safe -- see RFC 1945 for details.
47: */
48: public interface GlobalRegistry {
49:
50: /**
51: * Configure the local server's rebind/unbind entries.
52: * <p>
53: * These address should be constant for the lifetime of the server.
54: * This method should <u>only</u> be called when the registry is
55: * first created.
56: *
57: * @param namingEntries a Map of Strings to URIs
58: */
59: void configure(Map namingEntries);
60:
61: /**
62: * Bind the specified name with our namingEntries.
63: */
64: void rebind(String encName);
65:
66: /**
67: * Remove our binding for this name.
68: */
69: void unbind(String encName);
70:
71: /**
72: * Find all entries that matches the globally-unique name.
73: *
74: * @return a non-null Map of Strings to URIs
75: * @throws RuntimeException if there is a timeout or other exception
76: */
77: Map getAll(String encName, long timeout);
78:
79: /**
80: * Fetch all encoded names with the given suffix.
81: * @return a Set of URL-encoded Strings
82: * @throws RuntimeException if there is a timeout or other exception
83: */
84: Set list(String encSuffix, long timeout);
85:
86: }
|