PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::db::SinglePool Klassenreferenz

Klasse zur Verwaltung von Datenbank-Verbindungen. Mehr ...

Öffentliche Methoden

 SinglePool ()
 
 ~SinglePool ()
 
void checkPool ()
 
void clearFreePool (bool destroy=false)
 
void clearUsedPool (bool destroy=false)
 
void destroy (Database *db)
 
Databaseget (bool wait=false, int ms=0)
 
void getStatus (AssocArray &status)
 
void release (Database *db)
 
void setConnectParams (const AssocArray &connect)
 
void setGrowth (int num)
 
void setId (int id)
 
void setIdleTimeout (int seconds)
 
void setKeepAliveIntervall (int seconds)
 
void setLogger (Logger &logger)
 
void setMaximumSize (int num)
 
void setMaxSpare (int num)
 
void setMinimumSize (int num)
 
void setMinSpare (int num)
 
void setName (const String &Name)
 

Private Methoden

void calcHash (String &hash, const AssocArray &param)
 
DatabasenewDB ()
 

Private Attribute

AssocArray ConnectParam
 Enthält eine Kopie der Connect-Parameter, die über die Funktion Pool::SetConnectParams gesetzt werden. Mehr ...
 
std::list< Database * > Free
 Eine Liste, die alle derzeit freien Datenbank-Connects enthält. Mehr ...
 
int Grow
 Gibt an, wieviele neue Connects gleichzeitig erstellt werden sollen, wenn keine freien Connects mehr im Pool sind oder Pool::MinSpare unterschritten wurde. Es wird immer mindestens eine neue Verbindung erstellt, aber nicht mehr als Pool::MaxSpare. Default: 1. Mehr ...
 
String Hash
 Ein MD5-Hash über die Connect-Parameter, der bei Aufruf der Funktion Pool::SetConnectParams gebildet wird. Mehr ...
 
int Id
 Eine eindeutige Id, die bei Verwendung des Pools durch die Klasse PoolEx vergeben wird. Mehr ...
 
int IdleTimeout
 
bool IsInit
 Wird auf true gesetzt, wenn die Connect-Parameter über die Funktion Pool::SetConnectParams übergeben wurden. Mehr ...
 
int KeepAlive
 Gibt an, nach wieviel Sekunden ein Ping an eine freie Datenbank-Verbindung geschickt werden soll, um sicherzustellen, dass die Verbindung aufrecht erhalten bleibt. Ein Wert von 0 bedeutet, dass kein KeepAlive geschickt wird. Default: 60 (1 Minute). Mehr ...
 
double LastCheck
 Wird von der Klasse PoolEx verwendet und enthält den Timestamp der letzten Überprüfung des Pools. Mehr ...
 
LoggerLog
 Pointer auf eine Logklasse, der über die Funktion Pool::SetLogfile gesetzt wird. Enthält die Variable einen Wert != 0 ist das Logging aktiviert. Mehr ...
 
int Max
 Gibt an, wieviele Connects maximal geöffnet werden dürfen. Default: 0 (uneingeschränkt) Mehr ...
 
int MaxSpare
 Gibt an, wieviele Freie Connects maximal vorgehalten werden sollen. Sind mehr Connects frei, werden diese nach erreichen des Timeouts abgebaut. Default: 0. Mehr ...
 
int Min
 Gibt an, wieviele Connects mindestens im Pool enthalten sein sollen. Mehr ...
 
int MinSpare
 Gibt an, wieviele Freie Connects minimal vorgehalten werden sollen. Default: 0. Mehr ...
 
String Name
 Der Name des Pools, der über die Funktion Pool::SetName festgelegt werden kann. Mehr ...
 
Mutex PoolMutex
 
std::list< Database * > Used
 Eine Liste, die alle gerade in Verwendung befindlichen Datenbank-Connects enthält. Mehr ...
 

Ausführliche Beschreibung

Include:
#include <ppl7-db.h>
Beschreibung:
Mit dieser Klasse können beliebig viele Connects zu einer bestimmten Datenbank innerhalb eines Pools verwaltet werden.
Verwendung:
Bevor der Pool verwendet werden kann, muss er zunächst einmal wissen, welche Datenbank er verwenden soll. Dazu muss die Funktion SinglePool::setConnectParams mit den entsprechenden Parametern in einem assoziativen Array aufgerufen werden. Die möglichen Parameter sind dabei die gleichen, wie beim Aufruf der Funktion Database::connect.
Nach der Initialisierung können anschließend mit der Funktion SinglePool::get Datenbank-Verbindungen aus dem Pool geholt werden (der Pool sorgt selbst dafür, dass neue Verbindungen automatisch erstellt werden) und mit SinglePool::release wieder in den Pool zurückgegeben werden. Mit SinglePool::destroy kann eine Verbindung auch gelöscht werden, was zum Beispiel dann sinnvoll ist, wenn die Anwendung festgestellt hat, dass irgendwas nicht in Ordnung ist.
In regelmäßigen Abständen muß die Funktion SinglePool::checkPool aufgerufen werden. Die Funktion prüft die vorhandenen Verbindungen, löscht überflüssige Verbindungen oder baut neue auf, wenn nicht mehr genug freie im Pool vorhanden sind.
Beispiel:
int DB_Pool_Example1() {
// Connect-Parameter festlegen
ppl6::CAssocArray param;
param.Set("type","sybase");
param.Set("host","database.example.com");
param.Set("port","1234");
param.Set("user","demo");
param.Set("password","demo");
param.Set("dbname","test");
// Pool erzeugen
ppl6::db::Pool Pool;
// Pool mit den Connect-Parametern initialisieren
if (!Pool.SetConnectParams(param)) {
ppl6::PrintError();
return;
}
// Verbindung aus dem Pool holen
ppl6::db::Database *db=Pool.Get();
if (!db) {
ppl6::PrintError();
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
ppl6::PrintError();
return;
}
} // EOF

Beschreibung der Konstruktoren und Destruktoren

ppl7::db::SinglePool::SinglePool ( )
ppl7::db::SinglePool::~SinglePool ( )

Dokumentation der Elementfunktionen

void ppl7::db::SinglePool::calcHash ( String hash,
const AssocArray param 
)
private
void ppl7::db::SinglePool::checkPool ( )
void ppl7::db::SinglePool::clearFreePool ( bool  destroy = false)
void ppl7::db::SinglePool::clearUsedPool ( bool  destroy = false)
void ppl7::db::SinglePool::destroy ( Database db)
Database* ppl7::db::SinglePool::get ( bool  wait = false,
int  ms = 0 
)
void ppl7::db::SinglePool::getStatus ( AssocArray status)
Database* ppl7::db::SinglePool::newDB ( )
private
void ppl7::db::SinglePool::release ( Database db)
void ppl7::db::SinglePool::setConnectParams ( const AssocArray connect)
void ppl7::db::SinglePool::setGrowth ( int  num)
void ppl7::db::SinglePool::setId ( int  id)
void ppl7::db::SinglePool::setIdleTimeout ( int  seconds)
void ppl7::db::SinglePool::setKeepAliveIntervall ( int  seconds)
void ppl7::db::SinglePool::setLogger ( Logger logger)
void ppl7::db::SinglePool::setMaximumSize ( int  num)
void ppl7::db::SinglePool::setMaxSpare ( int  num)
void ppl7::db::SinglePool::setMinimumSize ( int  num)
void ppl7::db::SinglePool::setMinSpare ( int  num)
void ppl7::db::SinglePool::setName ( const String Name)

Dokumentation der Datenelemente

ppl7::db::SinglePool::ConnectParam
private
ppl7::db::SinglePool::Free
private
ppl7::db::SinglePool::Grow
private
ppl7::db::SinglePool::Hash
private
ppl7::db::SinglePool::Id
private
int ppl7::db::SinglePool::IdleTimeout
private
ppl7::db::SinglePool::IsInit
private
ppl7::db::SinglePool::KeepAlive
private
ppl7::db::SinglePool::LastCheck
private
ppl7::db::SinglePool::Log
private
ppl7::db::SinglePool::Max
private
ppl7::db::SinglePool::MaxSpare
private
ppl7::db::SinglePool::Min
private
ppl7::db::SinglePool::MinSpare
private
ppl7::db::SinglePool::Name
private
Mutex ppl7::db::SinglePool::PoolMutex
private
ppl7::db::SinglePool::Used
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: