TEST_F(SegmentIndexWriterTest, Write) { SegmentIndexWriter writer(stream); writer.addItem(2); writer.addItem(3); writer.addItem(4); writer.addItem(5); writer.addItem(6); writer.addItem(7); writer.addItem(8); writer.addItem(9); writer.close(); FSInputStream *input = FSInputStream::open(stream->fileName()); ASSERT_EQ(2, input->readInt32()); ASSERT_EQ(3, input->readInt32()); ASSERT_EQ(4, input->readInt32()); ASSERT_EQ(5, input->readInt32()); ASSERT_EQ(6, input->readInt32()); ASSERT_EQ(7, input->readInt32()); ASSERT_EQ(8, input->readInt32()); ASSERT_EQ(9, input->readInt32()); delete input; }
InputStream *FSDirectory::openFile(const QString &name) { QMutexLocker locker(&m_mutex); QString path = filePath(name); FSFileSharedPtr file = m_openInputFiles.value(path).toStrongRef(); FSInputStream *input; if (file.isNull()) { m_openInputFiles.remove(path); input = FSInputStream::open(path); m_openInputFiles.insert(path, input->file()); } else { input = new FSInputStream(file); } return input; }
InputStream *FSDirectory::openFile(const QString &name) { QMutexLocker locker(&m_mutex); QString path = filePath(name); FSFileSharedPtr file = m_openInputFiles.value(path); if (m_mmap) { if (file.isNull()) { MMapInputStream* input = MMapInputStream::open(path); m_openInputFiles.insert(path, input->file()); return input; } return new MMapInputStream(file); } if (file.isNull()) { FSInputStream* input = FSInputStream::open(path); m_openInputFiles.insert(path, input->file()); return input; } return new FSInputStream(file); }