Public Member Functions | Private Types | Private Attributes
FIX::DatabaseConnectionPool< T > Class Template Reference

#include <DatabaseConnectionPool.h>

List of all members.

Public Member Functions

 DatabaseConnectionPool (bool poolConnections)
T * create (const DatabaseConnectionID &id)
bool destroy (T *pConnection)

Private Types

typedef std::pair< T *, int > Connection
typedef std::map
< DatabaseConnectionID,
Connection
Connections

Private Attributes

Connections m_connections
bool m_poolConnections

Detailed Description

template<typename T>
class FIX::DatabaseConnectionPool< T >

Definition at line 35 of file DatabaseConnectionPool.h.


Member Typedef Documentation

template<typename T >
typedef std::pair<T*, int> FIX::DatabaseConnectionPool< T >::Connection [private]

Definition at line 82 of file DatabaseConnectionPool.h.

template<typename T >
typedef std::map<DatabaseConnectionID, Connection> FIX::DatabaseConnectionPool< T >::Connections [private]

Definition at line 84 of file DatabaseConnectionPool.h.


Constructor & Destructor Documentation

template<typename T >
FIX::DatabaseConnectionPool< T >::DatabaseConnectionPool ( bool  poolConnections) [inline]

Definition at line 38 of file DatabaseConnectionPool.h.

  : m_poolConnections( poolConnections ) {}

Member Function Documentation

template<typename T >
T* FIX::DatabaseConnectionPool< T >::create ( const DatabaseConnectionID id) [inline]

Definition at line 41 of file DatabaseConnectionPool.h.

References FIX::DatabaseConnectionPool< T >::m_connections, and FIX::DatabaseConnectionPool< T >::m_poolConnections.

  {
    if( !m_poolConnections )
      return new T( id );

    if( m_connections.find( id ) == m_connections.end() )
    {
      m_connections[id] = Connection
        ( new T(id), 0 );
    }
    m_connections[id].second++;
    return m_connections[id].first;
  }
template<typename T >
bool FIX::DatabaseConnectionPool< T >::destroy ( T *  pConnection) [inline]

Definition at line 55 of file DatabaseConnectionPool.h.

References FIX::DatabaseConnectionPool< T >::m_connections, and FIX::DatabaseConnectionPool< T >::m_poolConnections.

  {
    if( !m_poolConnections )
    {
      delete pConnection;
      return true;
    }

    const DatabaseConnectionID& id = pConnection->connectionID();
    if( m_connections.find( id ) == m_connections.end() )
      return false;

    Connection& connection = m_connections[id];
    if( connection.first != pConnection )
      return false;

    connection.second--;
    if( connection.second == 0 )
    {
      m_connections.erase( id );
      delete pConnection;
    }
    return true;
  }

Member Data Documentation

template<typename T >
Connections FIX::DatabaseConnectionPool< T >::m_connections [private]
template<typename T >
bool FIX::DatabaseConnectionPool< T >::m_poolConnections [private]

The documentation for this class was generated from the following file:

Generated on Mon Jun 23 2014 23:49:39 for QuickFIX by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001