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

#include <DatabaseConnectionPool.h>

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, ConnectionConnections
 

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

◆ Connection

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

Definition at line 82 of file DatabaseConnectionPool.h.

◆ Connections

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

Definition at line 84 of file DatabaseConnectionPool.h.

Constructor & Destructor Documentation

◆ DatabaseConnectionPool()

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

Definition at line 38 of file DatabaseConnectionPool.h.

39  : m_poolConnections( poolConnections ) {}

Member Function Documentation

◆ create()

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.

42  {
43  if( !m_poolConnections )
44  return new T( id );
45 
46  if( m_connections.find( id ) == m_connections.end() )
47  {
49  ( new T(id), 0 );
50  }
51  m_connections[id].second++;
52  return m_connections[id].first;
53  }
std::pair< T *, int > Connection

◆ destroy()

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.

56  {
57  if( !m_poolConnections )
58  {
59  delete pConnection;
60  return true;
61  }
62 
63  const DatabaseConnectionID& id = pConnection->connectionID();
64  if( m_connections.find( id ) == m_connections.end() )
65  return false;
66 
67  Connection& connection = m_connections[id];
68  if( connection.first != pConnection )
69  return false;
70 
71  connection.second--;
72  if( connection.second == 0 )
73  {
74  m_connections.erase( id );
75  delete pConnection;
76  }
77  return true;
78  }
std::pair< T *, int > Connection

Member Data Documentation

◆ m_connections

template<typename T >
Connections FIX::DatabaseConnectionPool< T >::m_connections
private

◆ m_poolConnections

template<typename T >
bool FIX::DatabaseConnectionPool< T >::m_poolConnections
private

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

Generated on Wed Aug 28 2019 14:13:46 for QuickFIX by doxygen 1.8.13 written by Dimitri van Heesch, © 1997-2001