From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 22 十月 2025 14:24:34 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/DAQBridge/buffer/BufferRegistry.cpp | 35 +++++++++++++++++++++++++++++++++++
1 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/DAQBridge/buffer/BufferRegistry.cpp b/SourceCode/Bond/DAQBridge/buffer/BufferRegistry.cpp
new file mode 100644
index 0000000..19e76ef
--- /dev/null
+++ b/SourceCode/Bond/DAQBridge/buffer/BufferRegistry.cpp
@@ -0,0 +1,35 @@
+// BufferRegistry.cpp
+#include "BufferRegistry.h"
+
+BufferManager& BufferRegistry::getOrCreate(uint32_t managerId, const std::string& name, const RetentionPolicy& defPolicy) {
+ std::unique_lock lk(mtx_);
+ auto it = managers_.find(managerId);
+ if (it != managers_.end()) return *it->second;
+ auto bm = std::make_unique<BufferManager>(managerId, name, defPolicy);
+ auto& ref = *bm;
+ managers_[managerId] = std::move(bm);
+ return ref;
+}
+
+std::vector<uint32_t> BufferRegistry::listManagers() const {
+ std::shared_lock lk(mtx_);
+ std::vector<uint32_t> ids; ids.reserve(managers_.size());
+ for (auto& kv : managers_) ids.push_back(kv.first);
+ return ids;
+}
+
+BufferManager* BufferRegistry::find(uint32_t managerId) {
+ std::shared_lock lk(mtx_);
+ auto it = managers_.find(managerId);
+ return (it == managers_.end()) ? nullptr : it->second.get();
+}
+const BufferManager* BufferRegistry::find(uint32_t managerId) const {
+ std::shared_lock lk(mtx_);
+ auto it = managers_.find(managerId);
+ return (it == managers_.end()) ? nullptr : it->second.get();
+}
+
+void BufferRegistry::remove(uint32_t managerId) {
+ std::unique_lock lk(mtx_);
+ managers_.erase(managerId);
+}
--
Gitblit v1.9.3