Refactor MultiDiskAdaptor::closeFile() and add assert for debugging

pull/364/head
Tatsuhiro Tsujikawa 2015-03-22 18:38:50 +09:00
parent b324be70ad
commit d03c7b32c6
1 changed files with 9 additions and 7 deletions

View File

@ -141,6 +141,7 @@ std::unique_ptr<DiskWriterEntry> createDiskWriterEntry
void MultiDiskAdaptor::resetDiskWriterEntries() void MultiDiskAdaptor::resetDiskWriterEntries()
{ {
assert(openedDiskWriterEntries_.empty());
diskWriterEntries_.clear(); diskWriterEntries_.clear();
if(getFileEntries().empty()) { if(getFileEntries().empty()) {
return; return;
@ -271,18 +272,19 @@ void MultiDiskAdaptor::openExistingFile()
void MultiDiskAdaptor::closeFile() void MultiDiskAdaptor::closeFile()
{ {
size_t n = 0; for(auto& dwent : openedDiskWriterEntries_) {
openedDiskWriterEntries_.clear(); auto& dw = dwent->getDiskWriter();
for(auto& dwent : diskWriterEntries_) { // required for unit test
if(dwent->isOpen()) { if (!dw) {
++n; continue;
dwent->closeFile();
} }
dw->closeFile();
} }
auto& openedFileCounter = getOpenedFileCounter(); auto& openedFileCounter = getOpenedFileCounter();
if(openedFileCounter) { if(openedFileCounter) {
openedFileCounter->reduceNumOfOpenedFile(n); openedFileCounter->reduceNumOfOpenedFile(openedDiskWriterEntries_.size());
} }
openedDiskWriterEntries_.clear();
} }
namespace { namespace {