#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 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 >::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; } */