Initial
This commit is contained in:
64
nntp/MSGLOG.CPP
Normal file
64
nntp/MSGLOG.CPP
Normal file
@@ -0,0 +1,64 @@
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user