コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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);
}