amxmodx/dlls/nvault/nvault.h
2005-07-23 16:57:21 +00:00

65 lines
1.3 KiB
C++
Executable File

#ifndef _INCLUDE_NVAULT_H
#define _INCLUDE_NVAULT_H
#include "sdk/CString.h"
#include "hash.h"
/**
* (C)2005 David "BAILOPAN" Anderson
* Licensed under the GNU General Public License, version 2
*
* Vault implementation using a Hash Table
*/
/**
* Vault file format:
* Headers
* uint32_t - nVLT
* uint8_t - sizeof(time_t)
* uint32_t - key size (will be used in future maybe)
* uint32_t - number of hashes stored
* Data
* uint32_t - key hash
* uint32_t - # of keys in this hash
* Data
* uint32_t - Time
* uint8_t - Characters in key
* uint16_t - Characters in value
* char[] - Key
* char[] - Value
*/
#define VAULT_MAGIC 0x6E564C54
class Vault
{
public:
Vault(const char *name);
~Vault();
enum VaultError
{
Vault_Ok=0,
Vault_ReadFail,
Vault_BadMagic,
};
public:
bool WriteToFile();
VaultError ReadFromFile();
public:
void Store(const char *key, const char *value, bool temporary=true);
void Store(const char *key, const char *value, time_t stamp);
size_t Prune(time_t begin, time_t end, bool all=false);
HashTable::htNode *Find(const char *key);
bool KeyExists(const char *key);
void Clear();
void EraseKey(const char *key);
const char *GetFileName();
private:
void _WriteHeaders(FILE *fp, uint32_t hashes);
private:
String m_File;
HashTable *m_Vault;
};
#endif //_INCLUDE_NVAULT_H