address bot review comments

This commit is contained in:
J. Nick Koston 2025-07-11 17:24:55 -10:00
parent 88049f9801
commit 427560f814
No known key found for this signature in database
2 changed files with 13 additions and 5 deletions

View File

@ -132,15 +132,20 @@ class ProtoVarInt {
uint64_t value_;
};
// Forward declaration for decode_to_message
class ProtoMessage;
class ProtoLengthDelimited {
public:
explicit ProtoLengthDelimited(const uint8_t *value, size_t length) : value_(value), length_(length) {}
std::string as_string() const { return std::string(reinterpret_cast<const char *>(this->value_), this->length_); }
// Non-template method to decode into an existing message instance
/**
* Decode the length-delimited data into an existing ProtoMessage instance.
*
* This method allows decoding without templates, enabling use in contexts
* where the message type is not known at compile time. The ProtoMessage's
* decode() method will be called with the raw data and length.
*
* @param msg The ProtoMessage instance to decode into
*/
void decode_to_message(ProtoMessage &msg) const;
protected:

View File

@ -540,7 +540,10 @@ class MessageType(TypeInfo):
@property
def decode_length(self) -> str:
# For non-template decoding, we need to handle this differently
# Override to return None for message types because we can't use template-based
# decoding when the specific message type isn't known at compile time.
# Instead, we use the non-template decode_to_message() method which allows
# runtime polymorphism through virtual function calls.
return None
@property