| 184 | BlockCache::~BlockCache() { regionManager_.drain(); } |
| 185 | |
| 186 | std::unique_ptr<CombinedEntryManager> BlockCache::createCombinedEntryManager( |
| 187 | const Config& config) { |
| 188 | if (config.useCombinedEntryBlock && |
| 189 | config.indexConfig.isFixedSizeIndexEnabled()) { |
| 190 | // Let's use one stream per each mutex for the index |
| 191 | uint64_t numStreams = FixedSizeIndex::getTotalShardCount( |
| 192 | FixedSizeIndex::getTotalBucketCount( |
| 193 | config.indexConfig.getNumChunks(), |
| 194 | config.indexConfig.getNumBucketsPerChunkPower()), |
| 195 | config.indexConfig.getNumBucketsPerMutex()); |
| 196 | |
| 197 | // Currently, FixedSizeIndex and CombinedEntryManager will support shm |
| 198 | // persistence only |
| 199 | return std::make_unique<CombinedEntryManager>( |
| 200 | numStreams, CombinedEntryBlock::kDefaultSize - sizeof(EntryDesc), |
| 201 | (config.persistParams.useShm) |
| 202 | ? (config.persistParams.shmManager.has_value() |
| 203 | ? &(config.persistParams.shmManager.value().get()) |
| 204 | : nullptr) |
| 205 | : nullptr, |
| 206 | config.name, bindThis(&BlockCache::onWriteCombinedEntryBlock, *this), |
| 207 | bindThis(&BlockCache::onReadCombinedEntryBlock, *this)); |
| 208 | } else { |
| 209 | return nullptr; |
| 210 | } |
| 211 | } |
| 212 | |
| 213 | BlockCache::BlockCache(Config&& config) |
| 214 | : BlockCache{std::move(config.validate()), ValidConfigTag{}} {} |
nothing calls this directly
no test coverage detected