src/share/classes/com/sun/corba/se/pept/transport/ContactInfo.java

Thu, 31 Aug 2017 18:10:36 +0800

author
aoqi
date
Thu, 31 Aug 2017 18:10:36 +0800
changeset 748
6845b95cba6b
parent 158
91006f157c46
parent 0
7ef37b2cdcad
permissions
-rw-r--r--

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.

mercurial