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/proto/ProtocolCodec.h |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/DAQBridge/proto/ProtocolCodec.h b/SourceCode/Bond/DAQBridge/proto/ProtocolCodec.h
new file mode 100644
index 0000000..308898f
--- /dev/null
+++ b/SourceCode/Bond/DAQBridge/proto/ProtocolCodec.h
@@ -0,0 +1,49 @@
+#pragma once
+#include "Protocol.h"
+
+namespace Proto {
+
+	// 大端工具
+	void put_u16(std::vector<uint8_t>& v, uint16_t x);
+	void put_u32(std::vector<uint8_t>& v, uint32_t x);
+	void put_u64(std::vector<uint8_t>& v, uint64_t x);
+	uint16_t get_u16(const uint8_t* p);
+	uint32_t get_u32(const uint8_t* p);
+	uint64_t get_u64(const uint8_t* p);
+	void     put_f64_be(std::vector<uint8_t>& v, double d);
+	double   get_f64_be(const uint8_t* p);
+
+	// 帮助:peek cmd
+	uint16_t peek_cmd(const std::vector<uint8_t>& frame);
+
+	// 编码(构帧:头 + dataId + len + body + 尾)
+	std::vector<uint8_t> encodeRequestVersion(const ReqVersion& req);
+	std::vector<uint8_t> encodeResponseVersion(const RspVersion& rsp);
+	std::vector<uint8_t> encodeRequestMachines(const ReqMachines& req);
+	std::vector<uint8_t> encodeResponseMachines(const RspMachines& rsp);
+	std::vector<uint8_t> encodeRequestStats(const ReqStats& req);
+	std::vector<uint8_t> encodeResponseStats(const RspStats& rsp);
+	std::vector<uint8_t> encodeRequestSince(const ReqSince& req);
+	std::vector<uint8_t> encodeResponseSince(const RspSince& rsp);
+	std::vector<uint8_t> encodeRequestSinceAll(const ReqSinceAll& req);
+	std::vector<uint8_t> encodeResponseSinceAll(const RspSinceAll& rsp);
+	std::vector<uint8_t> encodeRequestBatchInfo(const ReqBatchInfo& req);
+	std::vector<uint8_t> encodeResponseBatchInfo(const RspBatchInfo& rsp);
+
+	// 解码
+	bool decodeRequestVersion(const std::vector<uint8_t>& frame, ReqVersion& out);
+	bool decodeResponseVersion(const std::vector<uint8_t>& frame, RspVersion& out);
+	bool decodeRequestMachines(const std::vector<uint8_t>& frame, ReqMachines& out);
+	bool decodeResponseMachines(const std::vector<uint8_t>& frame, RspMachines& out);
+	bool decodeRequestStats(const std::vector<uint8_t>& frame, ReqStats& out);
+	bool decodeResponseStats(const std::vector<uint8_t>& frame, RspStats& out);
+	bool decodeRequestSince(const std::vector<uint8_t>& frame, ReqSince& out);
+	bool decodeResponseSince(const std::vector<uint8_t>& frame, RspSince& out);
+	bool decodeRequestSinceAll(const std::vector<uint8_t>& frame, ReqSinceAll& out);
+	bool decodeResponseSinceAll(const std::vector<uint8_t>& frame, RspSinceAll& out);
+	bool decodeRequestBatchInfo(const std::vector<uint8_t>& frame, ReqBatchInfo& out);
+	bool decodeResponseBatchInfo(const std::vector<uint8_t>& frame, RspBatchInfo& out);
+	std::vector<uint8_t> encodeResponseError(const RspError& rsp);
+	bool decodeResponseError(const std::vector<uint8_t>& frame, RspError& out);
+
+} // namespace Proto

--
Gitblit v1.9.3