#include "MessageIdStore.h"
MessageIdStore::MessageIdStore() {
insertsSinceLastSave = 0;
}
bool MessageIdStore::insert( string data ) {
p = msgidSet.insert(data);
insertsSinceLastSave++;
if ( insertsSinceLastSave > 10 ) {
saveSetToFile( (char *)(filename->c_str()) );
insertsSinceLastSave = 0;
}
return p.second;
}
void MessageIdStore::deleteMessageId( char *data ) {
string *s1 = new string(data);
msgidSet.erase(*s1);
}
#include <fstream.h>
void MessageIdStore::saveSetToFile(char *filename) {
// Prepend "." to filname
char *dotfilename = new char[ strlen(filename) + 2]; dotfilename[0] = 0;
strcpy(dotfilename, ".");
strcat(dotfilename, filename);
ofstream file(dotfilename);
set<string, less<string> >::iterator i = msgidSet.begin();
for (; i != msgidSet.end(); ++i)
file << *i << endl;
file.close();
}
void MessageIdStore::loadSetFromFile( char *filename ) {
// Prepend "." to filname
char *dotfilename = new char[ strlen(filename) + 2]; dotfilename[0] = 0;
strcpy(dotfilename, ".");
strcat(dotfilename, filename);
ifstream file(dotfilename);
string s;
if( file.fail() )
return; // File could not be opened
while( file >> s ) {// insert all msgid's from the file
// cout << "QQQ" << s << "WWW" << endl;
if( s != "")
msgidSet.insert(s);
}
file.close();
}
void MessageIdStore::setFilename( char *fn ) {
filename = new string(fn);
}
/*
int main () {
MessageIdStore *mis = new MessageIdStore();
char *text = "sdsss"; char *text2 = strdup(text); text2[1] = 'a';
bool p;
p = mis->addMessageId (text);
if (p)
cout << "Inserted new element " << endl;
else
cout << "Existing element = " << endl;
p = mis->addMessageId (text2);
if (p)
cout << "Inserted new element " << endl;
else
cout << "Existing element = " << endl;
mis->saveSetToFile("test");
return 0;
}
*/
syntax highlighted by Code2HTML, v. 0.9.1