Thu, 31 Aug 2017 18:10:36 +0800
merge
1 /*
2 * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
26 package com.sun.corba.se.pept.transport;
28 import com.sun.corba.se.pept.broker.Broker;
29 import com.sun.corba.se.pept.encoding.InputObject;
30 import com.sun.corba.se.pept.encoding.OutputObject;
31 import com.sun.corba.se.pept.protocol.MessageMediator;
32 import com.sun.corba.se.pept.protocol.ClientRequestDispatcher;
33 import com.sun.corba.se.pept.transport.ConnectionCache;
35 /**
36 * <p>The <b><em>primary</em></b> PEPt client-side plug-in point and enabler
37 * for <b><em>altenate encodings, protocols and transports</em></b>.</p>
38 *
39 * <p><code>ContactInfo</code> is a <em>factory</em> for client-side
40 * artifacts used
41 * to construct and send a message (and possibly receive and process a
42 * response).</p>
43 *
44 * @author Harold Carr
45 */
46 public interface ContactInfo
47 {
48 /**
49 * The {@link com.sun.corba.se.pept.broker.Broker Broker} associated
50 * with an invocation.
51 *
52 * @return {@link com.sun.corba.se.pept.broker.Broker Broker}
53 */
54 public Broker getBroker();
56 /**
57 * The parent
58 * {@link com.sun.corba.se.pept.broker.ContactInfoList ContactInfoList}
59 * for this <code>ContactInfo</code>.
60 *
61 * @return
62 * {@link com.sun.corba.se.pept.broker.ContactInfoList ContactInfoList}
63 */
64 public ContactInfoList getContactInfoList();
66 /**
67 * Used to get a
68 * {@link com.sun.corba.se.pept.protocol.ClientRequestDispatcher
69 * ClientRequestDispatcher}
70 * used to handle the specific <em>protocol</em> represented by this
71 * <code>ContactInfo</code>.
72 *
73 * @return
74 * {@link com.sun.corba.se.pept.protocol.ClientRequestDispatcher
75 * ClientRequestDispatcher} */
76 public ClientRequestDispatcher getClientRequestDispatcher();
78 /**
79 * Used to determine if a
80 * {@link com.sun.corba.se.pept.transport.Connection Connection}
81 * will be present in an invocation.
82 *
83 * For example, it may be
84 * <code>false</code> in the case of shared-memory
85 * <code>Input/OutputObjects</code>.
86 *
87 * @return <code>true</code> if a
88 * {@link com.sun.corba.se.pept.transport.Connection Connection}
89 * will be used for an invocation.
90 */
91 public boolean isConnectionBased();
93 /**
94 * Used to determine if the
95 * {@link com.sun.corba.se.pept.transport.Connection Connection}
96 * used for a request should be cached.
97 *
98 * If <code>true</code> then PEPt will attempt to reuse an existing
99 * {@link com.sun.corba.se.pept.transport.Connection Connection}. If
100 * one is not found it will create a new one and cache it for future use.
101 *
102 *
103 * @return <code>true</code> if
104 * {@link com.sun.corba.se.pept.transport.Connection Connection}s
105 * created by this <code>ContactInfo</code> should be cached.
106 */
107 public boolean shouldCacheConnection();
109 /**
110 * PEPt uses separate caches for each type of <code>ContactInfo</code>
111 * as given by <code>getConnectionCacheType</code>.
112 *
113 * @return {@link java.lang.String}
114 */
115 public String getConnectionCacheType();
117 /**
118 * Set the
119 * {@link com.sun.corba.se.pept.transport.Outbound.ConnectionCache OutboundConnectionCache}
120 * to be used by this <code>ContactInfo</code>.
121 *
122 * PEPt uses separate caches for each type of <code>ContactInfo</code>
123 * as given by {@link #getConnectionCacheType}.
124 * {@link #setConnectionCache} and {@link #getConnectionCache} support
125 * an optimzation to avoid hashing to find that cache.
126 *
127 * @param connectionCache.
128 */
129 public void setConnectionCache(OutboundConnectionCache connectionCache);
131 /**
132 * Get the
133 * {@link com.sun.corba.se.pept.transport.Outbound.ConnectionCache OutboundConnectionCache}
134 * used by this <code>ContactInfo</code>
135 *
136 * PEPt uses separate caches for each type of <code>ContactInfo</code>
137 * as given by {@link #getConnectionCacheType}.
138 * {@link #setConnectionCache} and {@link #getConnectionCache} support
139 * an optimzation to avoid hashing to find that cache.
140 *
141 * @return
142 * {@link com.sun.corba.se.pept.transport.ConnectionCache ConnectionCache}
143 */
144 public OutboundConnectionCache getConnectionCache();
146 /**
147 * Used to get a
148 * {@link com.sun.corba.se.pept.transport.Connection Connection}
149 * to send and receive messages on the specific <em>transport</em>
150 * represented by this <code>ContactInfo</code>.
151 *
152 * @return
153 * {@link com.sun.corba.se.pept.transport.Connection Connection}
154 */
155 public Connection createConnection();
157 /**
158 * Used to get a
159 * {@link com.sun.corba.se.pept.protocol.MessageMeidator MessageMediator}
160 * to hold internal data for a message to be sent using the specific
161 * encoding, protocol, transport combination represented by this
162 * <code>ContactInfo</code>.
163 *
164 * @return
165 * {@link com.sun.corba.se.pept.protocol.MessageMediator MessageMediator}
166 */
167 public MessageMediator createMessageMediator(Broker broker,
168 ContactInfo contactInfo,
169 Connection connection,
170 String methodName,
171 boolean isOneWay);
173 /**
174 * Used to get a
175 * {@link com.sun.corba.se.pept.protocol.MessageMeidator MessageMediator}
176 * to hold internal data for a message received using the specific
177 * encoding, protocol, transport combination represented by this
178 * <code>ContactInfo</code>.
179 *
180 * @return
181 * {@link com.sun.corba.se.pept.protocol.MessageMeidator MessageMediator}
182 */
183 public MessageMediator createMessageMediator(Broker broker,
184 Connection connection);
186 /**
187 * Used to finish creating a
188 * {@link com.sun.corba.se.pept.protocol.MessageMeidator MessageMediator}
189 * with internal data for a message received using the specific
190 * encoding, protocol, transport combination represented by this
191 * <code>ContactInfo</code>.
192 *
193 * @return
194 * {@link com.sun.corba.se.pept.protocol.MessageMediator MessageMediator}
195 */
196 public MessageMediator finishCreatingMessageMediator(Broker broker,
197 Connection connection,
198 MessageMediator messageMediator);
200 /**
201 * Used to get a
202 * {@link com.sun.corba.se.pept.encoding.InputObject InputObject}
203 * for the specific <em>encoding</em> represented by this
204 * <code>ContactInfo</code>.
205 *
206 * @return
207 * {@link com.sun.corba.se.pept.encoding.InputObject InputObject}
208 */
209 public InputObject createInputObject(Broker broker,
210 MessageMediator messageMediator);
212 /**
213 * Used to get a
214 * {@link com.sun.corba.se.pept.encoding.OutputObject OutputObject}
215 * for the specific <em>encoding</em> represented by this
216 * <code>ContactInfo</code>.
217 *
218 * @return
219 * {@link com.sun.corba.se.pept.encoding.OutputObject OutputObject}
220 */
221 public OutputObject createOutputObject(MessageMediator messageMediator);
223 /**
224 * Used to lookup artifacts associated with this <code>ContactInfo</code>.
225 *
226 * @return the hash value.
227 */
228 public int hashCode();
229 }
231 // End of file.