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.

42 {
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 }

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

◆ destroy()

template<typename T >
bool FIX::DatabaseConnectionPool< T >::destroy ( T *  pConnection)
inline

Definition at line 55 of file DatabaseConnectionPool.h.

56 {
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 }

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

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 Mon Oct 14 2024 06:04:44 for QuickFIX by doxygen 1.9.8 written by Dimitri van Heesch, © 1997-2001