PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::db::PoolEx Klassenreferenz

Datenbank-Pool für multiple Datenbanken. Mehr ...

Öffentliche Methoden

 PoolEx ()
 Konstruktor der Klasse. Mehr ...
 
 ~PoolEx ()
 Destruktor der Klasse. Mehr ...
 
void CheckPool ()
 Datenbank-Pools überprüfen. Mehr ...
 
void ClearPools (bool free=true, bool used=false)
 Verbindungen in den Pools löschen. Mehr ...
 
int CreatePool (int id, const char *name, CAssocArray &connect)
 Neuen Datenbank-Pool definieren. Mehr ...
 
int CreatePool (int id, const char *name, CAssocArray &connect, CAssocArray &options)
 Neuen Datenbank-Pool definieren. Mehr ...
 
int DeletePool (int id)
 Datenbank aus dem Pool löschen. Mehr ...
 
int Destroy (Database *db)
 Datenbankverbindung löschen. Mehr ...
 
DatabaseGet (const char *name, bool wait=false, int ms=0)
 Datenbank-Verbindung anhand ihres Namens aus dem Pool holen. Mehr ...
 
DatabaseGet (int id=0, bool wait=false, int ms=0)
 Datenbank-Verbindung anhand ihrer ID aus dem Pool holen. Mehr ...
 
PoolGetPool (int id)
 Pool anhand seiner ID finden. Mehr ...
 
PoolGetPool (const char *name)
 Pool anhand seines Namens finden. Mehr ...
 
int GetStatus (CAssocArray &status)
 Status sämtlicher Datenbank-Verbindungen auslesen. Mehr ...
 
int Release (Database *db)
 Datenbankverbindung in den Pool zurückgeben. Mehr ...
 
int SetDefaultGrow (int nr)
 Default Grow verändern. Mehr ...
 
int SetDefaultKeepAlive (int seconds)
 Default KeepAlive verändern. Mehr ...
 
int SetDefaultMax (int nr)
 Default Max verändern. Mehr ...
 
int SetDefaultMaxSpare (int nr)
 Default MinSpare verändern. Mehr ...
 
int SetDefaultMin (int nr)
 Default Min verändern. Mehr ...
 
int SetDefaultMinSpare (int nr)
 Default MinSpare verändern. Mehr ...
 
int SetDefaultOption (const CString &Name, const CString &Value)
 Pool-spezifische Option setzen. Mehr ...
 
int SetDefaultOptions (CAssocArray &options)
 Default-Optionen für neue Pools anhand eines Assoziativen Arrays setzen. Mehr ...
 
int SetDefaultTimeout (int seconds)
 Default Timeout verändern. Mehr ...
 
void SetLogfile (CLog *log)
 Logging aktivieren. Mehr ...
 
int SetPoolOption (int id, const CString &Name, const CString &Value)
 Option eines bestimmten Pools setzen. Mehr ...
 
int SetPoolOptions (int id, CAssocArray &options)
 Optionen eines bestimmten Pools anhand eines assoziativen Arrays setzen. Mehr ...
 
int StartPoolCheck (int intervall=10000)
 Überwachungsthread für den Pool starten. Mehr ...
 
int StopPoolCheck ()
 Überwachungsthread stoppen. Mehr ...
 

Private Methoden

PoolFindPoolByName (const char *name)
 Pool anhand seines Namens finden. Mehr ...
 

Private Attribute

CThreadCheckThread
 Bei Aufruf der Funktion PoolEx::StartPoolCheck wird ein eigener Thread gestartet, dessen Pointer in dieser Variablen gespeichert wird. Mehr ...
 
int DefaultGrow
 Gibt an, wieviele neue Connects gleichzeitig erstellt werden sollen, wenn keine freien Connects mehr im Pool sind oder PoolEx::DefaultMinSpare unterschritten wurde. Es wird immer mindestens eine neue Verbindung erstellt, aber nicht mehr als PoolEx::DefaultMaxSpare. Default: 1. Mehr ...
 
int DefaultKeepAlive
 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 ...
 
int DefaultMax
 Gibt an, wieviele Connects maximal geöffnet werden dürfen. Default: 0 (uneingeschränkt) Mehr ...
 
int DefaultMaxSpare
 Gibt an, wieviele Freie Connects maximal vorgehalten werden sollen. Sind mehr Connects frei, werden diese nach erreichen des Timeouts abgebaut. Default: 0. Mehr ...
 
int DefaultMin
 Gibt an, wieviele Connects mindestens im Pool enthalten sein sollen. Mehr ...
 
int DefaultMinSpare
 Gibt an, wieviele Freie Connects minimal vorgehalten werden sollen. Default: 0. Mehr ...
 
int DefaultTimeout
 Gibt an, nach welcher Zeit in Sekunden eine unbenutzte Verbindung abgebaut werden soll. Default: 300 (5 Minuten) Mehr ...
 
CLogLog
 Pointer auf eine Logklasse, der über die Funktion PoolEx::SetLogfile gesetzt wird. Enthält die Variable einen Wert != 0 ist das Logging aktiviert. Das Logging wird automatich an alle neuen Pools weitervererbt, die nach Aufruf der Funktion angelegt werden. Mehr ...
 
CMutex Mutex
 Ein Muetx, der zur Gewährleistung der Threadsicherheit von allen Funktionen verwendet wird. Mehr ...
 
PoolTree Pools
 Ein AVL-Baum, in dem die einzelnen Pools verwaltet werden. Als Schlüssel wird dabei die Id verwendet. Mehr ...
 

Ausführliche Beschreibung

Include:
#include <ppl6-db.h>
Beschreibung:
Diese Klasse fast beliebig viele einzelne Datenbank-Pools zu einem gemeinsamen Pool zusammen. Eine Datenbank-Verbindung kann dann anhand der ID des Pools oder dessen Namen angefordert werden.
Verwendung:
Um die Klasse verwenden zu können, müssen zunächst die zu verwendeten Datenbanken definiert werden. Dazu wird die Funktion PoolEx::CreatePool mit einer eindeutigen Id, einem Namen und den Connect-Parametern aufgerufen. Für jede Datenbank wird dadurch ein eigener Pool angelegt, der über seine Id oder seinen Namen angesprochen werden kann.
Mittels PoolEx::SetPoolOption oder PoolEx::SetPoolOptions können verschiedene Parameter des jeweiligen Pools verändert werden.
Mit PoolEx::Get kann eine Datenbank-Verbindung aus dem Pool angefordert werden, wobei der Pool selbst dafür sorgt, dass neue Verbindungen automatisch erstellt werden). Mit PoolEx::Release kann die Verbindung wieder in den Pool zurückgegeben werden, mit Pool::Destroy wird sie gelöscht. Das kann zum Beispiel dann sinnvoll sein, wenn die Anwendung festgestellt hat, dass irgendwas nicht in Ordnung ist.
In regelmäßigen Abständen muß die Funktion PoolEx::CheckPool aufgerufen werden, am besten innerhalb eines Überwachungsthreads. Die Funktion prüft die vorhandenen Verbindungen in allen Pools, löscht überflüssige Verbindungen oder baut neue auf, wenn nicht mehr genug freie im Pool vorhanden sind.
Beispiel:
int DB_PoolEx_Example1() {
// Pool erzeugen
// Connect-Parameter für die erste Datenbank festlegen
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 mit den Connect-Parametern anlegen
// Die Datenbank bekommt die ID 1 und den Namen "Hauptdatenbank"
if (!Pool.CreatePool(1,"Hauptdatenbank",param)) {
return;
}
// Connect-Parameter für die zweite Datenbank festlegen
param.Set("type","mysql");
param.Set("host","mysql.example.com");
param.Set("port","4711");
param.Set("user","demo");
param.Set("password","demo");
param.Set("dbname","test");
// Pool mit den Connect-Parametern anlegen.
// Die Datenbank bekommt die ID 2 und den Namen "MySQL_1"
if (!Pool.CreatePool(2,"DB2",param)) {
return;
}
// Verbindung zur ersten Datenbank anhand des Namens holen
ppl6::db::Database *db=Pool.Get("Hauptdatenbank");
if (!db) {
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
return;
}
// Verbindung zur zweiten Datenbank anhand der ID holen
ppl6::db::Database *db=Pool.Get(2);
if (!db) {
return;
}
// Verbindung verwenden
...
// Verbindung an den Pool zurückgeben
if (!Pool.Release(db)) {
return;
}
} // EOF

Beschreibung der Konstruktoren und Destruktoren

ppl6::db::PoolEx::PoolEx ( )
Beschreibung:
Der Destruktor initialisiert verschiedene Variablen, wie Timeout, KeepAlive. Diese können mit folgenden Funktionen überschrieben werden:
ppl6::db::PoolEx::~PoolEx ( )

Dokumentation der Elementfunktionen

void ppl6::db::PoolEx::CheckPool ( )
Beschreibung:
Diese Funktion sollte regelmäßig innerhalb eines Überwachungsthreads aufgerufen werden, um die in den einzelnen Pools vorhandenen Verbindungen zu überprüfen und zu expiren. Die Funktion schickt dabei an alle unbenutzen Verbindungen einen Ping (siehe Pool::SetKeepAlive) und löscht Verbindungen, die nicht mehr reagieren.
Beinhaltet der Pool sehr viele unbenutzte Verbindungen, wird empfohlen diese Funktion innerhalb eines eigenen Threads zu starten, damit weitere Funktionen nicht blockiert werden.
Die Funktion wird auch verwendet, wenn PoolEx::StartPoolCheck aufgerufen wird.
void ppl6::db::PoolEx::ClearPools ( bool  free = true,
bool  used = false 
)
Beschreibung:
Mit dieser Funktion werden Verbindungen in den definierten Pools gelöscht. Abhängig von den gesetzten Parametern werden entweder nur freie Verbindungen, benutzte Verbindungen oder beides gelöscht.
Parameter
[in]freeOptionales Flag, was angibt, ob die freien Verbindungen gelöscht werden sollen (Default=true)
[in]usedOptionales Flag, was angibt, ob die benutzten Verbindungen gelöscht werden sollen. Es wird davon abgeraten, in Benutzung befindliche Verbindungen zu löschen, da es dadurch zum Programmabsturz oder unvorhersehbarem Verhalten kommen kann. (Default=false)
int ppl6::db::PoolEx::CreatePool ( int  id,
const char *  name,
CAssocArray connect 
)
Beschreibung:
Mit dieser Funktion wird ein neuer Datenbank-Pool definiert. Jeder Datenbank muss dabei eine eindeutige ID und ein eindeutiger Name zugeordnet werden, sowie die Connect- Parameter und optionale zusätzliche Optionen.
Parameter
[in]idEindeutige ID der Datenbank. Ist eine ID bereits vorhanden, werden die alten Daten überschrieben. Die ID "0" hat eine besondere Bedeutung. Sie definiert quasi eine Default-Datenbank, die immer dann verwendet wird, wnn die Funktion Pool::Get ohne Parameter oder mit NULL aufgerufen wird.
[in]nameEin eindeutiger Name für diese Datenbank.
[in]connectDie Connect-Parameter in einem Assoziativen Array, wie sie von der Funktion ppl6::db::Connect unterstützt werden.
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
Bemerkungen
Die Funktion kann im laufenden Betrieb mehrfach für die gleiche Datenbank aufgerufen werden. Die alten Daten werden dabei überschrieben. Sofern sich die Connect-Parameter ändern, werden alle Connects im Free-Pool sofort gelöscht, Connects, die in Benutzung sind, werden nach deren Freigabe gelöscht. Neu angeforderte Connects werden mit den neuen Parametern erstellt.
Zu beachten
Der neue Pool wird mit den Default-Optionen konfiguriert, die über die "SetDefault..."-Funktionen dieser Klasse gesetzt wurden. Durch Aufruf der Funktionen PoolEx::SetPoolOption und PoolEx::SetPoolOptions können diese individuell angepasst werden.
int ppl6::db::PoolEx::CreatePool ( int  id,
const char *  name,
CAssocArray connect,
CAssocArray options 
)
Beschreibung:
Mit dieser Funktion wird ein neuer Datenbank-Pool definiert. Jeder Datenbank muss dabei eine eindeutige ID und ein eindeutiger Name zugeordnet werden, sowie die Connect- Parameter und optionale zusätzliche Optionen.
Parameter
[in]idEindeutige ID der Datenbank. Ist eine ID bereits vorhanden, werden die alten Daten überschrieben. Die ID "0" hat eine besondere Bedeutung. Sie definiert quasi eine Default-Datenbank, die immer dann verwendet wird, wnn die Funktion Pool::Get ohne Parameter oder mit NULL aufgerufen wird.
[in]nameEin eindeutiger Name für diese Datenbank.
[in]connectDie Connect-Parameter in einem Assoziativen Array, wie sie von der Funktion ppl6::db::Connect unterstützt werden.
[in]optionsZusätzliche Optionen für den Pool in einem Assoziativen Array. Die Möglichen Optionen sind der Funktion PoolEx:SetPoolOptions zu entnehmen
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
Bemerkungen
Die Funktion kann im laufenden Betrieb mehrfach für die gleiche Datenbank aufgerufen werden. Die alten Daten werden dabei überschrieben. Sofern sich die Connect-Parameter ändern, werden alle Connects im Free-Pool sofort gelöscht, Connects, die in Benutzung sind, werden nach deren Freigabe gelöscht. Neu angeforderte Connects werden mit den neuen Parametern erstellt.
Zu beachten
Der neue Pool wird mit den Default-Optionen konfiguriert, die über die "SetDefault..."-Funktionen dieser Klasse gesetzt wurden. Durch Aufruf der Funktionen PoolEx::SetPoolOption und PoolEx::SetPoolOptions können diese individuell angepasst werden.
int ppl6::db::PoolEx::DeletePool ( int  id)
Beschreibung:
Mit dieser Funktion wird eine Datenbank aus dem Pool gelöscht. Dabei werden sämtliche noch vorhandenen Connects ebenfalls gelöscht, egal ob frei oder in Benutzung. Die Funktion ist daher im laufenden Betrieb mit Vorsicht zu genießen.
Parameter
[in]idDie Id des Datenbank-Pools, der gelöscht werden soll
Rückgabe
Bei Erfolg gibt die Funktion true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::Destroy ( Database db)
Beschreibung:
Mit dieser Funktion wird eine zuvor mit Pool::Get geholte Verbindung getrennt und aus dem Pool gelöscht.
Parameter
[in]dbPointer auf eine Datenbankverbindung. Diese muss zuvor mit der Funktion Pool::Get geholt worden sein.
Rückgabe
Konnte die Verbindung erfolgreich gelöscht werden, liefert die Funktion true (1) zurück, sonst false (0). Ein Fehler kann nur auftreten, wenn die Verbindung nicht aus dem gleichen Pool stammt.
Pool * ppl6::db::PoolEx::FindPoolByName ( const char *  name)
private
Beschreibung:
Eine interne Funktion, um einen bestimmten Pool anhand seines Namens zu finden.
Parameter
[in]nameName des gesuchten Pools
Rückgabe
Liefert einen Pointer auf den gesuchten Pool zurück, oder NULL, wenn kein passender Pool gefunden wurde.
Database * ppl6::db::PoolEx::Get ( const char *  name,
bool  wait = false,
int  ms = 0 
)
Beschreibung:
Die Funktion sucht zuerst den passenden Pool und holt dort entweder einen freien Connect heraus oder erstellt einen neuen Connect. Dazu muss die entsprechenden Datenbank vorher mit PoolEx::CreatePool definiert worden sein.
Parameter
[in]namePointer auf den Namen der Datenbank-Verbindung. Mit PoolEx::DefineDatabase muss zuvor eine passende Datenbank definiert worden sein.
[in]waitOptionales Flag, das angibt, ob die Funktion warten soll, wenn das Maximum an Connects für diesen Pool bereits erreicht ist.
[in]msEin optionaler Wert, der in Kombination mit dem wait-Flag angibt, wieviele Millisekunden gewartet werden soll, bevor mit einem Timeout abgebrochen wird.
Rückgabe
Die Funktion liefert einen Pointer auf die Datenbank-Verbindung zurück oder NULL im Fehlerfall.
Bemerkungen
Die Verbindung muss nach Gebrauch entweder mit der Funktion PoolEx::Release zurück in den Pool gegeben oder mit PoolEx::Destroy gelöscht werden. Falls kein Wartungsthread läuft, der die Funktion CheckPool aufruft, kann das Handle auch einfach mit "delete" gelöscht werden, es wird jedoch empfohlen die Destroy-Funktion zu verwenden.
Zu beachten
Aus Performancegründen sollte die Funktion statt mit dem Namen der Datenbank mit deren ID aufgerufen werden, da dies etwas schneller ist.
Database * ppl6::db::PoolEx::Get ( int  id = 0,
bool  wait = false,
int  ms = 0 
)
Beschreibung:
Die Funktion sucht zuerst den passenden Pool und holt dort entweder einen freien Connect heraus oder erstellt einen neuen Connect. Dazu muss die entsprechenden Datenbank vorher mit PoolEx::CreatePool definiert worden sein.
Parameter
[in]idID der Datenbank, die mit Pool::DefineDatabase definiert wurde.
[in]waitOptionales Flag, das angibt, ob die Funktion warten soll, wenn das Maximum an Connects für diesen Pool bereits erreicht ist.
[in]msEin optionaler Wert, der in Kombination mit dem wait-Flag angibt, wieviele Millisekunden gewartet werden soll, bevor mit einem Timeout abgebrochen wird.
Rückgabe
Die Funktion liefert einen Pointer auf die Datenbank-Verbindung zurück oder NULL im Fehlerfall.
Bemerkungen
Die Verbindung muss nach Gebrauch entweder mit der Funktion PoolEx::Release zurück in den Pool gegeben oder mit PoolEx::Destroy gelöscht werden. Falls kein Wartungsthread läuft, der die Funktion CheckPool aufruft, kann das Handle auch einfach mit "delete" gelöscht werden, es wird jedoch empfohlen die Destroy-Funktion zu verwenden.
Pool * ppl6::db::PoolEx::GetPool ( int  id)
Beschreibung:
Mit dieser Funktion kann ein bestimmter Pool anhand seiner ID gefunden werden.
Parameter
[in]idID des gesuchten Pools
Rückgabe
Liefert einen Pointer auf den gesuchten Pool zurück, oder NULL, wenn kein passender Pool gefunden wurde.
Pool * ppl6::db::PoolEx::GetPool ( const char *  name)
Beschreibung:
Mit dieser Funktion kann ein bestimmter Pool anhand seines Namens gefunden werden. Sie ruft intern die Funktion PoolEx::FindPoolByName auf.
Parameter
[in]nameName des gesuchten Pools
Rückgabe
Liefert einen Pointer auf den gesuchten Pool zurück, oder NULL, wenn kein passender Pool gefunden wurde.
int ppl6::db::PoolEx::GetStatus ( CAssocArray status)
Beschreibung:
Mit dieser Funktion kann der Status sämtlicher Datenbank-Verbindungen ausgelesen und in das übergebene assoziative Array status gespeichert werden.
Parameter
[out]statusEin assoziatives Array, in dem der Status aller Connects gespeichert werden soll
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0
int ppl6::db::PoolEx::Release ( Database db)
Beschreibung:
Mit dieser Funktion wird eine zuvor mit Pool::Get geholte Verbindung wieder zurück in den Pool gestellt.
Parameter
[in]dbPointer auf eine Datenbankverbindung. Diese muss zuvor mit der Funktion Pool::Get geholt worden sein.
Rückgabe
Konnte die Verbindung erfolgreich in den Pool zurückgestellt werden, liefert die Funktion true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::SetDefaultGrow ( int  nr)
Beschreibung:
Legt fest, wieviele Datenbank-Connects gleichzeitig aufgebaut werden sollen, wenn ein neuer Connect angefordert wird, aber keine freien Connects im Pool sind, oder wenn MinSpare unterschritten wird.
Parameter
[in]nrAnzahl Connects
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultKeepAlive ( int  seconds)
Beschreibung:
Um die Verbindung zur Datenbank aufrecht zu erhalten, schickt die Funktion Pool::CheckPool bei regelmäßigem Aufruf innerhalb eines Wartungsthreads einen Ping an die Datenbank. Besteht die Verbindung noch, wird sie weiter aufrecht erhalten, war der Ping nicht erfolgreich, wird sie gelöscht.
Parameter
[in]secondsAnzahl Sekunden, nach denen ein KeepAlive auftreten soll.
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultMax ( int  nr)
Beschreibung:
Legt den Default für die maximale Anzahl Connects zur Datenbank fest.
Parameter
[in]nrAnzahl Connects. Ein Wert von 0 bedeutet "keine Limitierung".
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultMaxSpare ( int  nr)
Beschreibung:
Legt den Default für die maximale Anzahl freier Connects zur Datenbank fest.
Parameter
[in]nrAnzahl Connects
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultMin ( int  nr)
Beschreibung:
Legt den Default für die minimale Anzahl Connects zur Datenbank fest.
Parameter
[in]nrAnzahl Connects
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultMinSpare ( int  nr)
Beschreibung:
Legt den Default für die minimale Anzahl freier Connects zur Datenbank fest.
Parameter
[in]nrAnzahl Connects
Rückgabe
Die Funktion liefert immer true (1) zurück.
int ppl6::db::PoolEx::SetDefaultOption ( const CString Name,
const CString Value 
)
Beschreibung:
Mit dieser Funktion können die Default-Optionen für neue Pools gesetzt werden. Folgende Optionen können verändert werden:
  • min: Gibt an, wieviele Connects mindestens im Pool enthalten sein sollen. Default = 0
  • max: Gibt an, wieviele Connects maximal geöffnet werden dürfen. Default = 0 = uneingeschränkt
  • minspare: Gibt an, wieviele freie Connects minimal vorgehalten werden sollen. Default = 0
  • maxspare: Gibt an, wieviele freie Connects maximal vorgehalten werden sollen. Sin mehr Connects frei, werden diese nach erreichen des Timeouts abgebaut. Default = 0
  • grow: Gibt an, wieviele neue Connects gleichzeitig erstellt werden sollen, wenn keine freien Connects mehr im Pool sind oder MinSpare unterschritten wurde. Es wird immer mindestens eine neue Verbindung erstellt, aber nicht mehr als maxspare. Default = 1
  • timeout: Gibt an, nach welcher Zeit in Sekunden eine unbenutzte Verbindung abgebaut werden soll. Default = 300 (5 Minuten)
  • 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).
Parameter
[in]NameEin String, der den Namen der Option enthält.
[in]ValueEin String mit dem Wert der Option.
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::SetDefaultOptions ( CAssocArray options)
Beschreibung:
Mit dieser Funktion können die Default-Optionen für neue Pools mittels eines Assoziativen Arrays gesetzt werden. Dabei wird das Array durchwandert und für jedes Element die Funktion PoolEx::SetDefaultOption aufgerufen
Parameter
[in]optionsEin Assoziatives Array mit den zu setzenden Default-Werten. Die möglichen Werte sind in der Funktion PoolEx::SetDefaultOption beschrieben.
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::SetDefaultTimeout ( int  seconds)
Beschreibung:
Mit dieser Funktion kann der Timeout für unbenutzte Verbindungen im Pool verändert werden. Die Funktion Pool::CheckPool prüft bei regelmäßigem Aufruf innerhalb eines Wartungsthreads, ob der Timeout erreicht ist und löscht die Verbindung, falls dies der Fall ist.
Parameter
[in]secondsAnzahl Sekunden, nach denen der Timeout auftreten soll.
Rückgabe
Die Funktion liefert immer true (1) zurück.
void ppl6::db::PoolEx::SetLogfile ( CLog log)
Beschreibung:
Mit dieser Funktion wird das Logging der Klasse aktiviert oder deaktiviert. Ist es aktiviert, schreibt jeder Funktionsaufruf eine oder mehrere Zeilen in die angegebene Logfile-Klasse. Außerdem wird das Logging automatich an alle neuen Pools weitervererbt, die nach Aufruf dieser Funktion angelegt werden.
Parameter
[in]logPointer auf eine Klasse vom Typ CLog, um das Logging zu aktivieren, oder NULL um es zu deaktivieren.
int ppl6::db::PoolEx::SetPoolOption ( int  id,
const CString Name,
const CString Value 
)
Beschreibung:
Mit dieser Funktion können Optionen eines bestimmten Pools gesetzt werden. Die möglichen Optionen sind in der Funktion Pool::SetOption dokumentiert.
Parameter
[in]idDie Id des gewünschten Pools
[in]NameEin String, der den Namen der Option enthält.
[in]ValueEin String mit dem Wert der Option.
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::SetPoolOptions ( int  id,
CAssocArray options 
)
Beschreibung:
Mit dieser Funktion können Optionen eines bestimmten Pools mittels eines Assoziativen Arrays gesetzt werden. Dabei wird das Array durchwandert und für jedes Element die Funktion Pool::SetOption aufgerufen
Parameter
[in]idDie Id des gewünschten Pools
[in]optionsEin Assoziatives Array mit zusätzlichen Optionen für die Verwaltung des Pools. Dieses kann folgende Werte enthalten:
  • min: Gibt an, wieviele Connects mindestens im Pool enthalten sein sollen. Default = 0
  • max: Gibt an, wieviele Connects maximal geöffnet werden dürfen. Default = 0 = uneingeschränkt
  • minspare: Gibt an, wieviele Freie Connects minimal vorgehalten werden sollen. Default = 0
  • maxspare: Gibt an, wieviele Freie Connects maximal vorgehalten werden sollen. Sind mehr Connects frei, werden diese nach Erreichen des Timeouts abgebaut. Default = 0
  • grow: Gibt an, wieviele neue Connects gleichzeitig erstellt werden sollen, wenn keine freien Connects mehr im Pool sind oder MinSpare unterschritten wurde. Es wird immer mindestens eine neue Verbindung erstellt, aber nicht mehr als maxspare. Default = 1
  • timeout: Gibt an, nach welcher Zeit in Sekunden eine unbenutzte Verbindung abgebaut werden soll. Default = 300 (5 Minuten)
  • 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).
Rückgabe
Die Funktion liefert bei Erfolg true (1) zurück, sonst false (0).
int ppl6::db::PoolEx::StartPoolCheck ( int  intervall = 10000)
Beschreibung:
Mit Aufruf dieseer Funktion wird ein eigener Überwachungsthread für diesen Pool gestartet. Dieser tut nichts anderes als alle paar Sekunden die Funktion PoolEx:CheckPool aufzurufen.
Parameter
[in]intervallEin Optionaler Parameter, der das Interavall in Millisekunden angibt, in dem die CheckPool-Funktion aufgerufen werden soll. Der Defauklt ist 10000 (=10 Sekunden)
Rückgabe
Bei Erfolg liefert die Funktion true (1) zurück, im Fehlerfall false (0).
Bemerkungen
Die Funktion kann mehrfach aufgerufen werden, um das Intervall nachträglich zu ändern.
int ppl6::db::PoolEx::StopPoolCheck ( )
Beschreibung:
Mit dieser Funktion wird ein zuvor gestarteter Überwachungsthread für diesen Pool wieder gestoppt.
Rückgabe
Die Funktion liefert immer true (1) zurück.
Siehe auch
PoolEx::StartPoolCheck

Dokumentation der Datenelemente

ppl6::db::PoolEx::CheckThread
private
ppl6::db::PoolEx::DefaultGrow
private
ppl6::db::PoolEx::DefaultKeepAlive
private
ppl6::db::PoolEx::DefaultMax
private
ppl6::db::PoolEx::DefaultMaxSpare
private
ppl6::db::PoolEx::DefaultMin
private
ppl6::db::PoolEx::DefaultMinSpare
private
ppl6::db::PoolEx::DefaultTimeout
private
ppl6::db::PoolEx::Log
private
ppl6::db::PoolEx::Mutex
private
ppl6::db::PoolEx::Pools
private

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