2005-07-31 06:07:48 +00:00
|
|
|
#ifndef _INCLUDE_JOURNAL_H
|
|
|
|
#define _INCLUDE_JOURNAL_H
|
|
|
|
|
|
|
|
#include "Binary.h"
|
2005-09-18 02:59:36 +00:00
|
|
|
#include "sh_list.h"
|
|
|
|
#include "sh_tinyhash.h"
|
2005-07-31 06:07:48 +00:00
|
|
|
#include "CString.h"
|
|
|
|
|
|
|
|
enum JOp
|
|
|
|
{
|
|
|
|
Journal_Nop=0, //no operation
|
|
|
|
Journal_Clear, //clears, no parameters
|
|
|
|
Journal_Prune, //prunes, two params (start, end, 32bit both)
|
|
|
|
Journal_Insert, //inserts stamp (32), key (8+[]), val (16+[])
|
|
|
|
Journal_Remove, //removes key(8+[])
|
|
|
|
Journal_TotalOps,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum Encode
|
|
|
|
{
|
|
|
|
Encode_Small,
|
|
|
|
Encode_Medium,
|
|
|
|
};
|
|
|
|
|
2005-09-18 02:59:36 +00:00
|
|
|
typedef THash<String,String> VaultMap;
|
2005-07-31 06:07:48 +00:00
|
|
|
|
|
|
|
class Journal
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Journal(const char *file);
|
|
|
|
public:
|
|
|
|
bool Begin();
|
|
|
|
bool End();
|
|
|
|
int Replay(VaultMap *pMap);
|
|
|
|
bool Erase();
|
|
|
|
public:
|
|
|
|
bool Write_Clear();
|
|
|
|
bool Write_Prune(time_t start, time_t end);
|
|
|
|
bool Write_Insert(const char *key, const char *val, time_t stamp);
|
|
|
|
bool Write_Remove(const char *key);
|
|
|
|
private:
|
|
|
|
void WriteOp(JOp op);
|
|
|
|
void WriteInt32(int num);
|
|
|
|
void WriteString(const char *str, Encode enc);
|
|
|
|
private:
|
|
|
|
String m_File;
|
|
|
|
FILE *m_fp;
|
|
|
|
BinaryWriter m_Bw;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //_INCLUDE_JOURNAL_H
|
|
|
|
|