65 lines
1.4 KiB
C++
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();
|
|
}
|