// BufferRegistry.h
|
#pragma once
|
#include "BufferManager.h"
|
#include <unordered_map>
|
#include <memory>
|
#include <shared_mutex>
|
|
class BufferRegistry {
|
public:
|
// »ñÈ¡/´´½¨Ä³Ì¨»úÆ÷µÄ BufferManager
|
BufferManager& getOrCreate(uint32_t managerId, const std::string& name, const RetentionPolicy& defPolicy = {});
|
|
// ²éѯ
|
std::vector<uint32_t> listManagers() const;
|
BufferManager* find(uint32_t managerId);
|
const BufferManager* find(uint32_t managerId) const;
|
|
// ÒÆ³ýÒ»¸ö¹ÜÀíÆ÷£¨¿ÉÑ¡£©
|
void remove(uint32_t managerId);
|
|
private:
|
mutable std::shared_mutex mtx_;
|
std::unordered_map<uint32_t, std::unique_ptr<BufferManager>> managers_;
|
};
|