| author | Scott Ehlert <ds@alliedmods.net> |
| Mon May 14 21:29:17 2007 +0000 (2007-05-14) | |
| changeset 794 | 5947b0ee60bb |
| parent 667 | 0347227ef615 |
| child 858 | b783a611f604 |
| permissions | -rw-r--r-- |
| dvander@667 | 1 |
/** |
| dvander@667 | 2 |
* vim: set ts=4 : |
| dvander@667 | 3 |
* =============================================================== |
| dvander@667 | 4 |
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. |
| dvander@667 | 5 |
* =============================================================== |
| dvander@667 | 6 |
* |
| dvander@667 | 7 |
* This file is not open source and may not be copied without explicit |
| dvander@667 | 8 |
* written permission of AlliedModders LLC. This file may not be redistributed |
| dvander@667 | 9 |
* in whole or significant part. |
| dvander@667 | 10 |
* For information, see LICENSE.txt or http://www.sourcemod.net/license.php |
| dvander@667 | 11 |
* |
| dvander@667 | 12 |
* Version: $Id$ |
| dvander@667 | 13 |
*/ |
| dvander@667 | 14 |
|
| dvander@666 | 15 |
#ifndef _INCLUDE_DATABASE_MANAGER_H_ |
| dvander@666 | 16 |
#define _INCLUDE_DATABASE_MANAGER_H_ |
| dvander@666 | 17 |
|
| dvander@666 | 18 |
#include <IDBDriver.h> |
| dvander@666 | 19 |
#include <IHandleSys.h> |
| dvander@666 | 20 |
#include "sm_globals.h" |
| dvander@666 | 21 |
#include <sh_vector.h> |
| dvander@666 | 22 |
|
| dvander@666 | 23 |
using namespace SourceHook; |
| dvander@666 | 24 |
|
| dvander@666 | 25 |
struct db_driver |
| dvander@666 | 26 |
{ |
| dvander@666 | 27 |
IDBDriver *driver; |
| dvander@666 | 28 |
IdentityToken_t *ident; |
| dvander@666 | 29 |
HandleType_t htDatabase; |
| dvander@666 | 30 |
HandleType_t htQuery; |
| dvander@666 | 31 |
Handle_t hDriver; |
| dvander@666 | 32 |
}; |
| dvander@666 | 33 |
|
| dvander@666 | 34 |
class DBManager : |
| dvander@666 | 35 |
public IDBManager, |
| dvander@666 | 36 |
public SMGlobalClass, |
| dvander@666 | 37 |
public IHandleTypeDispatch |
| dvander@666 | 38 |
{ |
| dvander@666 | 39 |
const char *GetInterfaceName(); |
| dvander@666 | 40 |
unsigned int GetInterfaceVersion(); |
| dvander@666 | 41 |
public: //SMGlobalClass |
| dvander@666 | 42 |
void OnSourceModAllInitialized(); |
| dvander@666 | 43 |
public: //IHandleTypeDispatch |
| dvander@666 | 44 |
void OnHandleDestroy(HandleType_t type, void *object); |
| dvander@666 | 45 |
public: //IDBManager |
| dvander@666 | 46 |
void AddDriver(IDBDriver *pDriver, IdentityToken_t *ident); |
| dvander@666 | 47 |
void RemoveDriver(IDBDriver *pDriver); |
| dvander@666 | 48 |
const DatabaseInfo *FindDatabaseConf(const char *name); |
| dvander@666 | 49 |
bool Connect(const char *name, IDBDriver **pdr, IDatabase **pdb, bool persistent); |
| dvander@666 | 50 |
unsigned int GetDriverCount(); |
| dvander@666 | 51 |
IDBDriver *GetDriver(unsigned int index, IdentityToken_t **pToken=NULL); |
| dvander@666 | 52 |
public: |
| dvander@666 | 53 |
db_driver *GetDriverInfo(unsigned int index); |
| dvander@666 | 54 |
private: |
| dvander@666 | 55 |
CVector<db_driver *> m_drivers; |
| dvander@666 | 56 |
HandleType_t m_DriverType; |
| dvander@666 | 57 |
HandleType_t m_DatabaseType; |
| dvander@666 | 58 |
HandleType_t m_QueryType; |
| dvander@666 | 59 |
}; |
| dvander@666 | 60 |
|
| dvander@666 | 61 |
extern DBManager g_DBMan; |
| dvander@666 | 62 |
|
| dvander@666 | 63 |
#endif //_INCLUDE_DATABASE_MANAGER_H_ |