home *** CD-ROM | disk | FTP | other *** search
- // =================================================================
- // Dbarray.cpp
- // =================================================================
- // Harold Kasperink / John Dekker
- // Dr. Dobb's Journal 1997
- // =================================================================
- // Multithreaded Database Array Singleton class
- // =================================================================
- #ifndef _DBARRAY_H_
- #define _DBARRAY_H_
-
- #include "dbase.h"
- #define MAX_NR_DBASES 15
-
- class CArrayDbase
- {
- private:
- static CArrayDbase *g_pDbArray; // Pointer to global database connection
- static CMutex g_mtxArray; // Mutex to make sure only one reserve/release at a time
- CDbase* m_pDbases[MAX_NR_DBASES]; // Array of database connections
- int m_nNrDbases; // Number of database connections
- char* m_pszUsr; // User name
- char* m_pszPsswd; // User password
- char* m_pszDb; // Database connect string
- int m_nCurCon; // Current connection
- int m_nDbUsage[MAX_NR_DBASES]; // Usage status indicator
- boolean m_bPrint; // Print usage flag
-
- public:
- CArrayDbase(int nNrConnections, const char *szUsr, const char *szPasswd, const char *szDB);
- virtual ~CArrayDbase();
-
- // Get pointer to free database connection
- // and reserve database connnection
- static CDbase* ReserveDbase();
-
- // Release database connection
- static void ReleaseDbase(CDbase &dbase);
-
- private:
- // Set connect information
- void ConnectInfo(const char *szUsr, const char *szPasswd, const char *szDB);
- void DeleteConnectInfo();
-
- static void Lock();
- static void Unlock();
- };
-
- #endif
-