Fix missing protobuf message dump for batched messages with very verbose logging (#9206)

This commit is contained in:
J. Nick Koston 2025-06-26 03:57:41 +02:00 committed by GitHub
parent 79e3d2b2d7
commit f029f4f20e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 136 additions and 130 deletions

View File

@ -276,6 +276,11 @@ uint16_t APIConnection::encode_message_to_buffer(ProtoMessage &msg, uint16_t mes
// Encode directly into buffer // Encode directly into buffer
msg.encode(buffer); msg.encode(buffer);
#ifdef HAS_PROTO_MESSAGE_DUMP
// Log the message for VV debugging
conn->log_send_message_(msg.message_name(), msg.dump());
#endif
// Calculate actual encoded size (not including header that was already added) // Calculate actual encoded size (not including header that was already added)
size_t actual_payload_size = shared_buf.size() - size_before_encode; size_t actual_payload_size = shared_buf.size() - size_before_encode;

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ class APIServerConnectionBase : public ProtoService {
template<typename T> bool send_message(const T &msg) { template<typename T> bool send_message(const T &msg) {
#ifdef HAS_PROTO_MESSAGE_DUMP #ifdef HAS_PROTO_MESSAGE_DUMP
this->log_send_message_(T::message_name(), msg.dump()); this->log_send_message_(msg.message_name(), msg.dump());
#endif #endif
return this->send_message_(msg, T::MESSAGE_TYPE); return this->send_message_(msg, T::MESSAGE_TYPE);
} }

View File

@ -335,6 +335,7 @@ class ProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP #ifdef HAS_PROTO_MESSAGE_DUMP
std::string dump() const; std::string dump() const;
virtual void dump_to(std::string &out) const = 0; virtual void dump_to(std::string &out) const = 0;
virtual const char *message_name() const { return "unknown"; }
#endif #endif
protected: protected:

View File

@ -886,7 +886,7 @@ def build_message_type(
public_content.append("#ifdef HAS_PROTO_MESSAGE_DUMP") public_content.append("#ifdef HAS_PROTO_MESSAGE_DUMP")
snake_name = camel_to_snake(desc.name) snake_name = camel_to_snake(desc.name)
public_content.append( public_content.append(
f'static constexpr const char *message_name() {{ return "{snake_name}"; }}' f'const char *message_name() const override {{ return "{snake_name}"; }}'
) )
public_content.append("#endif") public_content.append("#endif")
@ -1356,7 +1356,7 @@ def main() -> None:
hpp += " template<typename T>\n" hpp += " template<typename T>\n"
hpp += " bool send_message(const T &msg) {\n" hpp += " bool send_message(const T &msg) {\n"
hpp += "#ifdef HAS_PROTO_MESSAGE_DUMP\n" hpp += "#ifdef HAS_PROTO_MESSAGE_DUMP\n"
hpp += " this->log_send_message_(T::message_name(), msg.dump());\n" hpp += " this->log_send_message_(msg.message_name(), msg.dump());\n"
hpp += "#endif\n" hpp += "#endif\n"
hpp += " return this->send_message_(msg, T::MESSAGE_TYPE);\n" hpp += " return this->send_message_(msg, T::MESSAGE_TYPE);\n"
hpp += " }\n\n" hpp += " }\n\n"