| 116 | } |
| 117 | |
| 118 | std::string EncodeHeader(const Message& message) { |
| 119 | std::ostringstream oss; |
| 120 | oss << "version=" << message.version |
| 121 | << '\t' << "channel=" << Escape(ChannelToString(message.channel)) |
| 122 | << '\t' << "kind=" << Escape(KindToString(message.kind)) |
| 123 | << '\t' << "type=" << Escape(message.type) |
| 124 | << '\t' << "vm_id=" << Escape(message.vm_id) |
| 125 | << '\t' << "request_id=" << message.request_id; |
| 126 | |
| 127 | for (const auto& [key, value] : message.fields) { |
| 128 | oss << '\t' << Escape(key) << '=' << Escape(value); |
| 129 | } |
| 130 | |
| 131 | if (!message.payload.empty()) { |
| 132 | oss << '\t' << "payload_size=" << message.payload.size(); |
| 133 | } |
| 134 | |
| 135 | oss << '\n'; |
| 136 | return oss.str(); |
| 137 | } |
| 138 | |
| 139 | std::string Encode(const Message& message) { |
| 140 | std::string out = EncodeHeader(message); |
no test coverage detected