Skip to content

Commit

Permalink
Use std::unique_ptr for SegmentDataReader instances
Browse files Browse the repository at this point in the history
  • Loading branch information
lalinsky committed Feb 25, 2024
1 parent d1d7f82 commit c432e9c
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/index/index_reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ IndexReader::~IndexReader()
}
}

SegmentDataReader* IndexReader::segmentDataReader(const SegmentInfo& segment)
std::unique_ptr<SegmentDataReader> IndexReader::segmentDataReader(const SegmentInfo& segment)
{
return new SegmentDataReader(m_dir->openFile(segment.dataFileName()), BLOCK_SIZE);
return std::make_unique<SegmentDataReader>(m_dir->openFile(segment.dataFileName()), BLOCK_SIZE);
}

std::vector<SearchResult> IndexReader::search(const std::vector<uint32_t> &hashesIn, int64_t timeoutInMSecs)
Expand Down
2 changes: 1 addition & 1 deletion src/index/index_reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class IndexReader

std::vector<SearchResult> search(const std::vector<uint32_t> &hashes, int64_t timeoutInMSecs = 0);

SegmentDataReader* segmentDataReader(const SegmentInfo& segment);
std::unique_ptr<SegmentDataReader> segmentDataReader(const SegmentInfo& segment);

protected:
DirectorySharedPtr m_dir;
Expand Down
4 changes: 2 additions & 2 deletions src/index/segment_enum.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ namespace Acoustid {
class SegmentEnum
{
public:
SegmentEnum(SegmentIndexSharedPtr index, SegmentDataReader *dataReader)
: m_index(index), m_dataReader(dataReader), m_block(0),
SegmentEnum(SegmentIndexSharedPtr index, std::unique_ptr<SegmentDataReader> &&dataReader)
: m_index(index), m_dataReader(std::move(dataReader)), m_block(0),
m_currentBlock(nullptr)
{}

Expand Down
3 changes: 1 addition & 2 deletions src/index/segment_enum_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@ TEST(SegmentEnumTest, Iterate)
InputStream *indexInput = dir.openFile("segment_0.fii");
InputStream *dataInput = dir.openFile("segment_0.fid");
SegmentIndexSharedPtr index = SegmentIndexReader(indexInput, blockCount).read();
SegmentDataReader *dataReader = new SegmentDataReader(dataInput, 8);

SegmentEnum reader(index, dataReader);
SegmentEnum reader(index, std::make_unique<SegmentDataReader>(dataInput, 8));
ASSERT_TRUE(reader.next());
ASSERT_EQ(200, reader.key());
ASSERT_EQ(300, reader.value());
Expand Down
9 changes: 3 additions & 6 deletions src/index/segment_merger_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,12 @@ TEST(SegmentMergerTest, Iterate)
InputStream *indexInput1 = dir.openFile("segment_0.fii");
InputStream *dataInput1 = dir.openFile("segment_0.fid");
SegmentIndexSharedPtr index1 = SegmentIndexReader(indexInput1, blockCount0).read();
SegmentDataReader *dataReader1 = new SegmentDataReader(dataInput1, 8);
SegmentEnum *reader1 = new SegmentEnum(index1, dataReader1);
SegmentEnum *reader1 = new SegmentEnum(index1, std::make_unique<SegmentDataReader>(dataInput1, 8));

InputStream *indexInput2 = dir.openFile("segment_1.fii");
InputStream *dataInput2 = dir.openFile("segment_1.fid");
SegmentIndexSharedPtr index2 = SegmentIndexReader(indexInput2, blockCount1).read();
SegmentDataReader *dataReader2 = new SegmentDataReader(dataInput2, 8);
SegmentEnum *reader2 = new SegmentEnum(index2, dataReader2);
SegmentEnum *reader2 = new SegmentEnum(index2, std::make_unique<SegmentDataReader>(dataInput2, 8));

SegmentMerger merger(writer);
merger.addSource(reader1);
Expand All @@ -79,8 +77,7 @@ TEST(SegmentMergerTest, Iterate)
InputStream *indexInput = dir.openFile("segment_2.fii");
InputStream *dataInput = dir.openFile("segment_2.fid");
SegmentIndexSharedPtr index = SegmentIndexReader(indexInput, blockCount).read();
SegmentDataReader *dataReader = new SegmentDataReader(dataInput, 8);
SegmentEnum reader(index, dataReader);
SegmentEnum reader(index, std::make_unique<SegmentDataReader>(dataInput, 8));

ASSERT_TRUE(reader.next());
ASSERT_EQ(199, reader.key());
Expand Down
4 changes: 2 additions & 2 deletions src/index/segment_searcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

using namespace Acoustid;

SegmentSearcher::SegmentSearcher(SegmentIndexSharedPtr index, SegmentDataReader *dataReader, uint32_t lastKey)
: m_index(index), m_dataReader(dataReader), m_lastKey(lastKey)
SegmentSearcher::SegmentSearcher(SegmentIndexSharedPtr index, std::unique_ptr<SegmentDataReader> &&dataReader, uint32_t lastKey)
: m_index(index), m_dataReader(std::move(dataReader)), m_lastKey(lastKey)
{
}

Expand Down
2 changes: 1 addition & 1 deletion src/index/segment_searcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class SegmentDataReader;
class SegmentSearcher
{
public:
SegmentSearcher(SegmentIndexSharedPtr index, SegmentDataReader *dataReader, uint32_t lastKey = UINT32_MAX);
SegmentSearcher(SegmentIndexSharedPtr index, std::unique_ptr<SegmentDataReader> &&dataReader, uint32_t lastKey = UINT32_MAX);
virtual ~SegmentSearcher();

void search(const std::vector<uint32_t> &hashes, std::unordered_map<uint32_t, int> &hits);
Expand Down

0 comments on commit c432e9c

Please sign in to comment.