Merge remote-tracking branch 'origin/message_creator_ram' into integration

This commit is contained in:
J. Nick Koston
2025-06-25 23:54:37 +02:00
2 changed files with 14 additions and 14 deletions

View File

@@ -1902,13 +1902,13 @@ void APIConnection::process_batch_() {
uint16_t APIConnection::MessageCreator::operator()(EntityBase *entity, APIConnection *conn, uint32_t remaining_size,
bool is_single, uint16_t message_type) const {
if (has_tagged_string_ptr()) {
if (has_tagged_string_ptr_()) {
// Handle string-based messages
switch (message_type) {
#ifdef USE_EVENT
case EventResponse::MESSAGE_TYPE: {
auto *e = static_cast<event::Event *>(entity);
return APIConnection::try_send_event_response(e, *get_string_ptr(), conn, remaining_size, is_single);
return APIConnection::try_send_event_response(e, *get_string_ptr_(), conn, remaining_size, is_single);
}
#endif
default:

View File

@@ -505,15 +505,15 @@ class APIConnection : public APIServerConnection {
// Destructor
~MessageCreator() {
if (has_tagged_string_ptr()) {
delete get_string_ptr();
if (has_tagged_string_ptr_()) {
delete get_string_ptr_();
}
}
// Copy constructor
MessageCreator(const MessageCreator &other) {
if (other.has_tagged_string_ptr()) {
auto *str = new std::string(*other.get_string_ptr());
if (other.has_tagged_string_ptr_()) {
auto *str = new std::string(*other.get_string_ptr_());
data_.tagged = reinterpret_cast<uintptr_t>(str) | 1;
} else {
data_ = other.data_;
@@ -527,12 +527,12 @@ class APIConnection : public APIServerConnection {
MessageCreator &operator=(const MessageCreator &other) {
if (this != &other) {
// Clean up current string data if needed
if (has_tagged_string_ptr()) {
delete get_string_ptr();
if (has_tagged_string_ptr_()) {
delete get_string_ptr_();
}
// Copy new data
if (other.has_tagged_string_ptr()) {
auto *str = new std::string(*other.get_string_ptr());
if (other.has_tagged_string_ptr_()) {
auto *str = new std::string(*other.get_string_ptr_());
data_.tagged = reinterpret_cast<uintptr_t>(str) | 1;
} else {
data_ = other.data_;
@@ -544,8 +544,8 @@ class APIConnection : public APIServerConnection {
MessageCreator &operator=(MessageCreator &&other) noexcept {
if (this != &other) {
// Clean up current string data if needed
if (has_tagged_string_ptr()) {
delete get_string_ptr();
if (has_tagged_string_ptr_()) {
delete get_string_ptr_();
}
// Move data
data_ = other.data_;
@@ -561,10 +561,10 @@ class APIConnection : public APIServerConnection {
private:
// Check if this contains a string pointer
bool has_tagged_string_ptr() const { return (data_.tagged & 1) != 0; }
bool has_tagged_string_ptr_() const { return (data_.tagged & 1) != 0; }
// Get the actual string pointer (clears the tag bit)
std::string *get_string_ptr() const { return reinterpret_cast<std::string *>(data_.tagged & ~uintptr_t(1)); }
std::string *get_string_ptr_() const { return reinterpret_cast<std::string *>(data_.tagged & ~uintptr_t(1)); }
union {
MessageCreatorPtr ptr;