Files
Work/nntp/MSGLOG.CPP
2024-08-07 09:16:27 -04:00

65 lines
1.4 KiB
C++

#include <nntp/msglog.hpp>
#include <nntp/resource.hpp>
#include <fileio/fileio.hpp>
MessageLog::MessageLog(void)
: mStrMessageLogPostFix(STRING_MESSAGELOGPOSTFIX)
{
mFileIO=::new FileIO;
mFileIO.disposition(PointerDisposition::Delete);
}
MessageLog::~MessageLog()
{
close();
}
BOOL MessageLog::setLog(const String &pathFileName)
{
String strLine;
mFileIO->close();
mMasterList.remove();
if(pathFileName.isNull())return FALSE;
mPathFileName=pathFileName+strMessageLogPostFix();
mFileIO->open(mPathFileName,FileIO::GenericRead,FileIO::FileShareRead,FileIO::OpenAlways,FileIO::Archive);
if(!mFileIO->isOkay())return FALSE;
while(mFileIO->readLine(strLine))mMasterList.insert(strLine);
mFileIO->close();
return TRUE;
}
void MessageLog::close(void)
{
flush();
mMasterList.remove();
}
void MessageLog::flush(void)
{
Block<MsgID> msgIDBlock;
mFileIO->close();
if(!mMasterList.leaves())return;
mFileIO->open(mPathFileName,FileIO::GenericWrite,FileIO::FileShareWrite,FileIO::CreateAlways,FileIO::Normal);
mMasterList.treeItems(msgIDBlock);
for(int itemIndex=0;itemIndex<msgIDBlock.size();itemIndex++)mFileIO->writeLine(msgIDBlock[itemIndex]);
mFileIO->flush();
mFileIO->close();
}
BOOL MessageLog::searchItem(MsgID &someMsgID)
{
return mMasterList.searchItem(someMsgID);
}
void MessageLog::insert(const MsgID &someMsgID)
{
mMasterList.insert(someMsgID);
}
BOOL MessageLog::isOkay(void)
{
return mFileIO->isOkay();
}