1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-08 06:12:20 +01:00

zero_copy_str

This commit is contained in:
J. Nick Koston
2025-07-21 17:02:01 -10:00
parent b17e2019c7
commit c4ac22286f
12 changed files with 1483 additions and 558 deletions

View File

@@ -269,12 +269,27 @@ enum UpdateCommand : uint32_t {
class InfoResponseProtoMessage : public ProtoMessage {
public:
~InfoResponseProtoMessage() override = default;
std::string object_id{};
const char *object_id_ptr_{nullptr};
size_t object_id_len_{0};
void set_object_id(const char *data, size_t len) {
this->object_id_ptr_ = data;
this->object_id_len_ = len;
}
uint32_t key{0};
std::string name{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
bool disabled_by_default{false};
#ifdef USE_ENTITY_ICON
std::string icon{};
const char *icon_ptr_{nullptr};
size_t icon_len_{0};
void set_icon(const char *data, size_t len) {
this->icon_ptr_ = data;
this->icon_len_ = len;
}
#endif
enums::EntityCategory entity_category{};
#ifdef USE_DEVICES
@@ -332,8 +347,18 @@ class HelloResponse : public ProtoMessage {
#endif
uint32_t api_version_major{0};
uint32_t api_version_minor{0};
std::string server_info{};
std::string name{};
const char *server_info_ptr_{nullptr};
size_t server_info_len_{0};
void set_server_info(const char *data, size_t len) {
this->server_info_ptr_ = data;
this->server_info_len_ = len;
}
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -442,7 +467,12 @@ class DeviceInfoRequest : public ProtoDecodableMessage {
class AreaInfo : public ProtoMessage {
public:
uint32_t area_id{0};
std::string name{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -456,7 +486,12 @@ class AreaInfo : public ProtoMessage {
class DeviceInfo : public ProtoMessage {
public:
uint32_t device_id{0};
std::string name{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
uint32_t area_id{0};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -477,19 +512,54 @@ class DeviceInfoResponse : public ProtoMessage {
#ifdef USE_API_PASSWORD
bool uses_password{false};
#endif
std::string name{};
std::string mac_address{};
std::string esphome_version{};
std::string compilation_time{};
std::string model{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
const char *mac_address_ptr_{nullptr};
size_t mac_address_len_{0};
void set_mac_address(const char *data, size_t len) {
this->mac_address_ptr_ = data;
this->mac_address_len_ = len;
}
const char *esphome_version_ptr_{nullptr};
size_t esphome_version_len_{0};
void set_esphome_version(const char *data, size_t len) {
this->esphome_version_ptr_ = data;
this->esphome_version_len_ = len;
}
const char *compilation_time_ptr_{nullptr};
size_t compilation_time_len_{0};
void set_compilation_time(const char *data, size_t len) {
this->compilation_time_ptr_ = data;
this->compilation_time_len_ = len;
}
const char *model_ptr_{nullptr};
size_t model_len_{0};
void set_model(const char *data, size_t len) {
this->model_ptr_ = data;
this->model_len_ = len;
}
#ifdef USE_DEEP_SLEEP
bool has_deep_sleep{false};
#endif
#ifdef ESPHOME_PROJECT_NAME
std::string project_name{};
const char *project_name_ptr_{nullptr};
size_t project_name_len_{0};
void set_project_name(const char *data, size_t len) {
this->project_name_ptr_ = data;
this->project_name_len_ = len;
}
#endif
#ifdef ESPHOME_PROJECT_NAME
std::string project_version{};
const char *project_version_ptr_{nullptr};
size_t project_version_len_{0};
void set_project_version(const char *data, size_t len) {
this->project_version_ptr_ = data;
this->project_version_len_ = len;
}
#endif
#ifdef USE_WEBSERVER
uint32_t webserver_port{0};
@@ -497,16 +567,36 @@ class DeviceInfoResponse : public ProtoMessage {
#ifdef USE_BLUETOOTH_PROXY
uint32_t bluetooth_proxy_feature_flags{0};
#endif
std::string manufacturer{};
std::string friendly_name{};
const char *manufacturer_ptr_{nullptr};
size_t manufacturer_len_{0};
void set_manufacturer(const char *data, size_t len) {
this->manufacturer_ptr_ = data;
this->manufacturer_len_ = len;
}
const char *friendly_name_ptr_{nullptr};
size_t friendly_name_len_{0};
void set_friendly_name(const char *data, size_t len) {
this->friendly_name_ptr_ = data;
this->friendly_name_len_ = len;
}
#ifdef USE_VOICE_ASSISTANT
uint32_t voice_assistant_feature_flags{0};
#endif
#ifdef USE_AREAS
std::string suggested_area{};
const char *suggested_area_ptr_{nullptr};
size_t suggested_area_len_{0};
void set_suggested_area(const char *data, size_t len) {
this->suggested_area_ptr_ = data;
this->suggested_area_len_ = len;
}
#endif
#ifdef USE_BLUETOOTH_PROXY
std::string bluetooth_mac_address{};
const char *bluetooth_mac_address_ptr_{nullptr};
size_t bluetooth_mac_address_len_{0};
void set_bluetooth_mac_address(const char *data, size_t len) {
this->bluetooth_mac_address_ptr_ = data;
this->bluetooth_mac_address_len_ = len;
}
#endif
#ifdef USE_API_NOISE
bool api_encryption_supported{false};
@@ -575,7 +665,12 @@ class ListEntitiesBinarySensorResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_binary_sensor_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
bool is_status_binary_sensor{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -614,7 +709,12 @@ class ListEntitiesCoverResponse : public InfoResponseProtoMessage {
bool assumed_state{false};
bool supports_position{false};
bool supports_tilt{false};
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
bool supports_stop{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -695,7 +795,12 @@ class FanStateResponse : public StateResponseProtoMessage {
bool oscillating{false};
enums::FanDirection direction{};
int32_t speed_level{0};
std::string preset_mode{};
const char *preset_mode_ptr_{nullptr};
size_t preset_mode_len_{0};
void set_preset_mode(const char *data, size_t len) {
this->preset_mode_ptr_ = data;
this->preset_mode_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -769,7 +874,12 @@ class LightStateResponse : public StateResponseProtoMessage {
float color_temperature{0.0f};
float cold_white{0.0f};
float warm_white{0.0f};
std::string effect{};
const char *effect_ptr_{nullptr};
size_t effect_len_{0};
void set_effect(const char *data, size_t len) {
this->effect_ptr_ = data;
this->effect_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -829,10 +939,20 @@ class ListEntitiesSensorResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_sensor_response"; }
#endif
std::string unit_of_measurement{};
const char *unit_of_measurement_ptr_{nullptr};
size_t unit_of_measurement_len_{0};
void set_unit_of_measurement(const char *data, size_t len) {
this->unit_of_measurement_ptr_ = data;
this->unit_of_measurement_len_ = len;
}
int32_t accuracy_decimals{0};
bool force_update{false};
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
enums::SensorStateClass state_class{};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -869,7 +989,12 @@ class ListEntitiesSwitchResponse : public InfoResponseProtoMessage {
const char *message_name() const override { return "list_entities_switch_response"; }
#endif
bool assumed_state{false};
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -919,7 +1044,12 @@ class ListEntitiesTextSensorResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_text_sensor_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -935,7 +1065,12 @@ class TextSensorStateResponse : public StateResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "text_sensor_state_response"; }
#endif
std::string state{};
const char *state_ptr_{nullptr};
size_t state_len_{0};
void set_state(const char *data, size_t len) {
this->state_ptr_ = data;
this->state_len_ = len;
}
bool missing_state{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -1032,8 +1167,18 @@ class SubscribeHomeassistantServicesRequest : public ProtoDecodableMessage {
};
class HomeassistantServiceMap : public ProtoMessage {
public:
std::string key{};
std::string value{};
const char *key_ptr_{nullptr};
size_t key_len_{0};
void set_key(const char *data, size_t len) {
this->key_ptr_ = data;
this->key_len_ = len;
}
const char *value_ptr_{nullptr};
size_t value_len_{0};
void set_value(const char *data, size_t len) {
this->value_ptr_ = data;
this->value_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -1049,7 +1194,12 @@ class HomeassistantServiceResponse : public ProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "homeassistant_service_response"; }
#endif
std::string service{};
const char *service_ptr_{nullptr};
size_t service_len_{0};
void set_service(const char *data, size_t len) {
this->service_ptr_ = data;
this->service_len_ = len;
}
std::vector<HomeassistantServiceMap> data{};
std::vector<HomeassistantServiceMap> data_template{};
std::vector<HomeassistantServiceMap> variables{};
@@ -1082,8 +1232,18 @@ class SubscribeHomeAssistantStateResponse : public ProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "subscribe_home_assistant_state_response"; }
#endif
std::string entity_id{};
std::string attribute{};
const char *entity_id_ptr_{nullptr};
size_t entity_id_len_{0};
void set_entity_id(const char *data, size_t len) {
this->entity_id_ptr_ = data;
this->entity_id_len_ = len;
}
const char *attribute_ptr_{nullptr};
size_t attribute_len_{0};
void set_attribute(const char *data, size_t len) {
this->attribute_ptr_ = data;
this->attribute_len_ = len;
}
bool once{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -1143,7 +1303,12 @@ class GetTimeResponse : public ProtoDecodableMessage {
#ifdef USE_API_SERVICES
class ListEntitiesServicesArgument : public ProtoMessage {
public:
std::string name{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
enums::ServiceArgType type{};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -1160,7 +1325,12 @@ class ListEntitiesServicesResponse : public ProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_services_response"; }
#endif
std::string name{};
const char *name_ptr_{nullptr};
size_t name_len_{0};
void set_name(const char *data, size_t len) {
this->name_ptr_ = data;
this->name_len_ = len;
}
uint32_t key{0};
std::vector<ListEntitiesServicesArgument> args{};
void encode(ProtoWriteBuffer buffer) const override;
@@ -1312,9 +1482,19 @@ class ClimateStateResponse : public StateResponseProtoMessage {
enums::ClimateAction action{};
enums::ClimateFanMode fan_mode{};
enums::ClimateSwingMode swing_mode{};
std::string custom_fan_mode{};
const char *custom_fan_mode_ptr_{nullptr};
size_t custom_fan_mode_len_{0};
void set_custom_fan_mode(const char *data, size_t len) {
this->custom_fan_mode_ptr_ = data;
this->custom_fan_mode_len_ = len;
}
enums::ClimatePreset preset{};
std::string custom_preset{};
const char *custom_preset_ptr_{nullptr};
size_t custom_preset_len_{0};
void set_custom_preset(const char *data, size_t len) {
this->custom_preset_ptr_ = data;
this->custom_preset_len_ = len;
}
float current_humidity{0.0f};
float target_humidity{0.0f};
void encode(ProtoWriteBuffer buffer) const override;
@@ -1373,9 +1553,19 @@ class ListEntitiesNumberResponse : public InfoResponseProtoMessage {
float min_value{0.0f};
float max_value{0.0f};
float step{0.0f};
std::string unit_of_measurement{};
const char *unit_of_measurement_ptr_{nullptr};
size_t unit_of_measurement_len_{0};
void set_unit_of_measurement(const char *data, size_t len) {
this->unit_of_measurement_ptr_ = data;
this->unit_of_measurement_len_ = len;
}
enums::NumberMode mode{};
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -1442,7 +1632,12 @@ class SelectStateResponse : public StateResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "select_state_response"; }
#endif
std::string state{};
const char *state_ptr_{nullptr};
size_t state_len_{0};
void set_state(const char *data, size_t len) {
this->state_ptr_ = data;
this->state_len_ = len;
}
bool missing_state{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -1541,7 +1736,12 @@ class ListEntitiesLockResponse : public InfoResponseProtoMessage {
bool assumed_state{false};
bool supports_open{false};
bool requires_code{false};
std::string code_format{};
const char *code_format_ptr_{nullptr};
size_t code_format_len_{0};
void set_code_format(const char *data, size_t len) {
this->code_format_ptr_ = data;
this->code_format_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -1594,7 +1794,12 @@ class ListEntitiesButtonResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_button_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -1622,7 +1827,12 @@ class ButtonCommandRequest : public CommandProtoMessage {
#ifdef USE_MEDIA_PLAYER
class MediaPlayerSupportedFormat : public ProtoMessage {
public:
std::string format{};
const char *format_ptr_{nullptr};
size_t format_len_{0};
void set_format(const char *data, size_t len) {
this->format_ptr_ = data;
this->format_len_ = len;
}
uint32_t sample_rate{0};
uint32_t num_channels{0};
enums::MediaPlayerFormatPurpose purpose{};
@@ -2219,10 +2429,20 @@ class VoiceAssistantRequest : public ProtoMessage {
const char *message_name() const override { return "voice_assistant_request"; }
#endif
bool start{false};
std::string conversation_id{};
const char *conversation_id_ptr_{nullptr};
size_t conversation_id_len_{0};
void set_conversation_id(const char *data, size_t len) {
this->conversation_id_ptr_ = data;
this->conversation_id_len_ = len;
}
uint32_t flags{0};
VoiceAssistantAudioSettings audio_settings{};
std::string wake_word_phrase{};
const char *wake_word_phrase_ptr_{nullptr};
size_t wake_word_phrase_len_{0};
void set_wake_word_phrase(const char *data, size_t len) {
this->wake_word_phrase_ptr_ = data;
this->wake_word_phrase_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -2358,8 +2578,18 @@ class VoiceAssistantAnnounceFinished : public ProtoMessage {
};
class VoiceAssistantWakeWord : public ProtoMessage {
public:
std::string id{};
std::string wake_word{};
const char *id_ptr_{nullptr};
size_t id_len_{0};
void set_id(const char *data, size_t len) {
this->id_ptr_ = data;
this->id_len_ = len;
}
const char *wake_word_ptr_{nullptr};
size_t wake_word_len_{0};
void set_wake_word(const char *data, size_t len) {
this->wake_word_ptr_ = data;
this->wake_word_len_ = len;
}
std::vector<std::string> trained_languages{};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -2480,7 +2710,12 @@ class ListEntitiesTextResponse : public InfoResponseProtoMessage {
#endif
uint32_t min_length{0};
uint32_t max_length{0};
std::string pattern{};
const char *pattern_ptr_{nullptr};
size_t pattern_len_{0};
void set_pattern(const char *data, size_t len) {
this->pattern_ptr_ = data;
this->pattern_len_ = len;
}
enums::TextMode mode{};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -2497,7 +2732,12 @@ class TextStateResponse : public StateResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "text_state_response"; }
#endif
std::string state{};
const char *state_ptr_{nullptr};
size_t state_len_{0};
void set_state(const char *data, size_t len) {
this->state_ptr_ = data;
this->state_len_ = len;
}
bool missing_state{false};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -2641,7 +2881,12 @@ class ListEntitiesEventResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_event_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
std::vector<std::string> event_types{};
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
@@ -2658,7 +2903,12 @@ class EventResponse : public StateResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "event_response"; }
#endif
std::string event_type{};
const char *event_type_ptr_{nullptr};
size_t event_type_len_{0};
void set_event_type(const char *data, size_t len) {
this->event_type_ptr_ = data;
this->event_type_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -2676,7 +2926,12 @@ class ListEntitiesValveResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_valve_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
bool assumed_state{false};
bool supports_position{false};
bool supports_stop{false};
@@ -2782,7 +3037,12 @@ class ListEntitiesUpdateResponse : public InfoResponseProtoMessage {
#ifdef HAS_PROTO_MESSAGE_DUMP
const char *message_name() const override { return "list_entities_update_response"; }
#endif
std::string device_class{};
const char *device_class_ptr_{nullptr};
size_t device_class_len_{0};
void set_device_class(const char *data, size_t len) {
this->device_class_ptr_ = data;
this->device_class_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP
@@ -2802,11 +3062,36 @@ class UpdateStateResponse : public StateResponseProtoMessage {
bool in_progress{false};
bool has_progress{false};
float progress{0.0f};
std::string current_version{};
std::string latest_version{};
std::string title{};
std::string release_summary{};
std::string release_url{};
const char *current_version_ptr_{nullptr};
size_t current_version_len_{0};
void set_current_version(const char *data, size_t len) {
this->current_version_ptr_ = data;
this->current_version_len_ = len;
}
const char *latest_version_ptr_{nullptr};
size_t latest_version_len_{0};
void set_latest_version(const char *data, size_t len) {
this->latest_version_ptr_ = data;
this->latest_version_len_ = len;
}
const char *title_ptr_{nullptr};
size_t title_len_{0};
void set_title(const char *data, size_t len) {
this->title_ptr_ = data;
this->title_len_ = len;
}
const char *release_summary_ptr_{nullptr};
size_t release_summary_len_{0};
void set_release_summary(const char *data, size_t len) {
this->release_summary_ptr_ = data;
this->release_summary_len_ = len;
}
const char *release_url_ptr_{nullptr};
size_t release_url_len_{0};
void set_release_url(const char *data, size_t len) {
this->release_url_ptr_ = data;
this->release_url_len_ = len;
}
void encode(ProtoWriteBuffer buffer) const override;
void calculate_size(uint32_t &total_size) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP