Class InboundConnectionCacheBlockingImpl<C extends Connection>
java.lang.Object
com.sun.corba.ee.impl.transport.connection.ConnectionCacheBase<C>
com.sun.corba.ee.impl.transport.connection.InboundConnectionCacheBlockingImpl<C>
- All Implemented Interfaces:
ConnectionCache<C>, InboundConnectionCache<C>
public final class InboundConnectionCacheBlockingImpl<C extends Connection>
extends ConnectionCacheBase<C>
implements InboundConnectionCache<C>
Manage connections that are initiated from another VM.
- Author:
- Ken Cavanaugh
-
Field Summary
FieldsFields inherited from class ConnectionCacheBase
reclaimableConnections -
Constructor Summary
ConstructorsConstructorDescriptionInboundConnectionCacheBlockingImpl(String cacheType, int highWaterMark, int numberToReclaim, long ttl) -
Method Summary
Modifier and TypeMethodDescriptionvoidClose a connection, regardless of whether the connection is busy or not.longNumber of non-idle connections.longTotal number of connections currently managed by the cache.longNumber of idle connections; that is, connections for which the number of get/release or responseReceived/responseProcessed calls are equal.longNumber of idle connections that are reclaimable.voidrequestProcessed(C conn, int numResponsesExpected) Indicate that request processing has been completed for a request received on conn.voidrequestReceived(C conn) Mark a connection as busy because a request is being processed on the connection.voidresponseSent(C conn) Decrement the number of expected responses.protected StringMethods inherited from class ConnectionCacheBase
getCacheType, highWaterMark, numberToReclaim, reclaim, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ConnectionCache
getCacheType, highWaterMark, numberOfBusyConnections, numberOfConnections, numberOfIdleConnections, numberOfReclaimableConnections, numberToReclaim
-
Field Details
-
totalBusy
protected int totalBusy -
totalIdle
protected int totalIdle
-
-
Constructor Details
-
InboundConnectionCacheBlockingImpl
public InboundConnectionCacheBlockingImpl(String cacheType, int highWaterMark, int numberToReclaim, long ttl)
-
-
Method Details
-
thisClassName
- Specified by:
thisClassNamein classConnectionCacheBase<C extends Connection>
-
requestReceived
Description copied from interface:InboundConnectionCacheMark a connection as busy because a request is being processed on the connection. The connection may or may not be previously known to the cache when this method is called. Busy connections cannot be reclaimed. This provides an early indication that a Connection is in use, before we know how many responses still need to be sent on the Connection for this request. This reduces the likelyhood of reclaiming a connection on which we are processing a request.Note that this problem is inherent in a distributed system. We could in any case reclaim a connection AFTER a client has sent a request but BEFORE the request is received. Note that AFTER and BEFORE refer to global time which does not really exist in a distributed system (or at least we want to pretend it is not available). XXX Should we age out connections? This would require actual time stamps, rather than just an LRU queue.
- Specified by:
requestReceivedin interfaceInboundConnectionCache<C extends Connection>- Parameters:
conn- connection to mark as busy
-
requestProcessed
Description copied from interface:InboundConnectionCacheIndicate that request processing has been completed for a request received on conn. This indicates that a Connection that received a request as indicated in a previous call to requestReceived has completed request processing for that request. Responses may still need to be sent. Some number of responses (usually 0 or 1) may be expected ON THE SAME CONNECTION even for an idle connection. We maintain a count of the number of outstanding responses we expect for protocols that return the response on the same connection on which the request was received. This is necessary to prevent reclamation of a Connection that is idle, but still needed to send responses to old requests.- Specified by:
requestProcessedin interfaceInboundConnectionCache<C extends Connection>- Parameters:
conn- connection to mark as completednumResponsesExpected- responses expected
-
responseSent
Decrement the number of expected responses. When a connection is idle and has no expected responses, it can be reclaimed.- Specified by:
responseSentin interfaceInboundConnectionCache<C extends Connection>- Parameters:
conn- connection that response has been sent on
-
close
Close a connection, regardless of whether the connection is busy or not.- Specified by:
closein interfaceConnectionCache<C extends Connection>- Parameters:
conn- connection to close
-
numberOfConnections
public long numberOfConnections()Description copied from interface:ConnectionCacheTotal number of connections currently managed by the cache.- Returns:
- number of connections
-
numberOfIdleConnections
public long numberOfIdleConnections()Description copied from interface:ConnectionCacheNumber of idle connections; that is, connections for which the number of get/release or responseReceived/responseProcessed calls are equal.- Returns:
- number of idle connections
-
numberOfBusyConnections
public long numberOfBusyConnections()Description copied from interface:ConnectionCacheNumber of non-idle connections. Normally, busy+idle==total, but this may not be strictly true due to concurrent updates to the connection cache.- Returns:
- number of non-idle connections
-
numberOfReclaimableConnections
public long numberOfReclaimableConnections()Description copied from interface:ConnectionCacheNumber of idle connections that are reclaimable. Such connections are not in use, and are not waiting to handle any responses.- Returns:
- number of reclaimable idle connections
-