From 7ddca21fdb798123239eab9daa390e2702afdff7 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 10 十月 2025 18:02:19 +0800
Subject: [PATCH] 1.ProcessStart和ProcessEnd加调上层时加上SlotNo, 状态也关联到SlotNo, 因为多腔可能 并行工作。 2.加入曲线采集服务端到项目中。

---
 SourceCode/Bond/DAQBridge/buffer/BufferManager.h |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/DAQBridge/buffer/BufferManager.h b/SourceCode/Bond/DAQBridge/buffer/BufferManager.h
new file mode 100644
index 0000000..564e16b
--- /dev/null
+++ b/SourceCode/Bond/DAQBridge/buffer/BufferManager.h
@@ -0,0 +1,72 @@
+#pragma once
+#include "SampleBuffer.h"
+#include <unordered_map>
+#include <memory>
+#include <shared_mutex>
+#include <string>
+#include <atomic>
+#include <vector>
+
+class BufferManager {
+public:
+    struct ChannelStat {
+        uint32_t id;
+        size_t   size;
+        int64_t  earliestTs;
+        int64_t  latestTs;
+    };
+
+public:
+    BufferManager(uint32_t id, std::string name, RetentionPolicy defaultPolicy = {});
+
+    // 标识
+    uint32_t id() const { return id_; }
+    std::string name() const;
+    void rename(const std::string& newName);
+
+    // 采集控制
+    void start();
+    void stop();
+    bool isRunning() const { return running_.load(); }
+    void clearAll();
+
+    // 数据写读
+    void push(uint32_t channelId, int64_t ts_ms, double v);
+    std::vector<Sample> getSince(uint32_t channelId, int64_t tsExclusive, size_t maxCount = 4096) const;
+    std::vector<Sample> getRange(uint32_t channelId, int64_t from_ts, int64_t to_ts, size_t maxCount = 4096) const;
+
+    // 策略
+    void setDefaultPolicy(const RetentionPolicy& p, bool applyToExisting = false);
+    void setPolicy(uint32_t channelId, const RetentionPolicy& p);
+    RetentionPolicy getPolicy(uint32_t channelId) const;
+
+    // 通道管理
+    std::vector<uint32_t> listChannels() const;
+
+    // ===== 新增:通道(曲线)名称 =====
+    void setChannelName(uint32_t channelId, const std::string& name); // 设置/更新
+    std::string getChannelName(uint32_t channelId) const;             // 若未设置,返回 "Ch-<id>"
+    struct ChannelInfo { uint32_t id; std::string name; };
+    std::vector<ChannelInfo> listChannelInfos() const;                // 方便 UI 列表
+
+    std::vector<ChannelStat> listChannelStats() const;
+    // 单个通道
+    ChannelStat getChannelStat(uint32_t channelId) const;
+private:
+    SampleBuffer& getOrCreate(uint32_t channelId);
+
+    mutable std::shared_mutex mtx_;
+    std::unordered_map<uint32_t, std::unique_ptr<SampleBuffer>> map_;
+
+    // ===== 新增:通道名称表 =====
+    std::unordered_map<uint32_t, std::string> channelNames_;
+
+    uint32_t id_;
+    std::string name_;
+    RetentionPolicy defPolicy_;
+    std::atomic<bool> running_{ false };
+
+
+
+
+};

--
Gitblit v1.9.3