68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
{# 序列化器模板 #}
|
|
{% if part == 'header' %}
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
/**
|
|
* 序列化器
|
|
* 将{{ target_message.full_name }}消息序列化为字节流
|
|
*/
|
|
class Serializer {
|
|
public:
|
|
Serializer();
|
|
|
|
// 序列化
|
|
std::vector<uint8_t> serialize(
|
|
const {{ target_message.system_name }}{{ target_message.message_type }}& message);
|
|
|
|
private:
|
|
{% if serialization.value == 'json' %}
|
|
// JSON序列化
|
|
std::string serializeJson(
|
|
const {{ target_message.system_name }}{{ target_message.message_type }}& message);
|
|
{% endif %}
|
|
};
|
|
|
|
{% else %}
|
|
#include "serializer.h"
|
|
#include <sstream>
|
|
|
|
{% if serialization.value == 'json' %}
|
|
#include <nlohmann/json.hpp>
|
|
using json = nlohmann::json;
|
|
{% endif %}
|
|
|
|
Serializer::Serializer() {
|
|
}
|
|
|
|
std::vector<uint8_t> Serializer::serialize(
|
|
const {{ target_message.system_name }}{{ target_message.message_type }}& message) {
|
|
|
|
{% if serialization.value == 'json' %}
|
|
std::string json_str = serializeJson(message);
|
|
return std::vector<uint8_t>(json_str.begin(), json_str.end());
|
|
{% else %}
|
|
// 默认二进制序列化
|
|
std::vector<uint8_t> buffer;
|
|
// TODO: 实现二进制序列化逻辑
|
|
return buffer;
|
|
{% endif %}
|
|
}
|
|
|
|
{% if serialization.value == 'json' %}
|
|
std::string Serializer::serializeJson(
|
|
const {{ target_message.system_name }}{{ target_message.message_type }}& message) {
|
|
|
|
json j;
|
|
|
|
{% for field in target_message.fields %}
|
|
j["{{ field.name }}"] = message.{{ field.name }};
|
|
{% endfor %}
|
|
|
|
return j.dump();
|
|
}
|
|
{% endif %}
|
|
{% endif %}
|