All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.atomikos.datasource.pool.XPooledConnection Maven / Gradle / Ivy

There is a newer version: 6.0.0
Show newest version
/**
 * Copyright (C) 2000-2020 Atomikos 
 *
 * LICENSE CONDITIONS
 *
 * See http://www.atomikos.com/Main/WhichLicenseApplies for details.
 */

package com.atomikos.datasource.pool;


/**
 * A pooling-capable object wrapping a physical connection to an underlying resource.
 */
public interface XPooledConnection 
{
	
	/**
	 * Is the connection available to be taken out of the pool ? 
	 * @return 
	 */
	boolean isAvailable();
	
	
	/**
	 * Can the connection be recycled (if not available) for the calling thread? 
	 * @return
	 */
	public boolean canBeRecycledForCallingThread();
	
	/**
	 * Destroy the pooled connection by closing the underlying physical connection.
	 */
	void destroy(boolean reap);
	
	/**
	 * Get the last time the connection was acquired.
	 * @return
	 */
	long getLastTimeAcquired();
	
	/**
	 * Get the last time the connection was released, i.e. the last time when
	 * it has become available.
	 * @return
	 */
	long getLastTimeReleased();
	
	/**
	 * Create a disposable connection object that acts a controller for
	 * the pooled connection. What exactly a connection object is depends
	 * on the implementation. Calling this method will also clear any
	 * flags set by markAsBeingAcquiredIfAvailable.
	 * 
	 * @return
	 * @throws CreateConnectionException 
	 */
	ConnectionType createConnectionProxy() throws CreateConnectionException;
	
	/**
	 * Is the pooled connection broken ? 
	 * @return
	 */
	boolean isErroneous();
	
	/**
	 * Get the moment when the connection was created.
	 * @return
	 */
	long getCreationTime();
	
	void registerXPooledConnectionEventListener(XPooledConnectionEventListener listener);
	
	void unregisterXPooledConnectionEventListener(XPooledConnectionEventListener listener);

	/**
	 * Attempt to claim this connection for use.
	 * 
	 * @return True if the connection is available, and could be claimed for the caller of this method. 
	 * In that case, it is up to the caller to call createConnectionProxy at a later time (which will in turn trigger 
	 * a round-trip to the resource if there is any testQuery set) or the pool will be leaking.
	 */
	boolean markAsBeingAcquiredIfAvailable();


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy