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 */ 25 26 package com.sun.corba.se.pept.transport; 27 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; 34 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(); 55 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(); 65 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(); 77 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(); 92 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(); 108 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(); 116 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); 130 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(); 145 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(); 156 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); 172 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); 185 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); 199 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); 211 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); 222 223 /** 224 * Used to lookup artifacts associated with this <code>ContactInfo</code>. 225 * 226 * @return the hash value. 227 */ 228 public int hashCode(); 229 } 230 231 // End of file.