From 5f7d90aea72bc134092768d7e1f4254e58b9cba3 Mon Sep 17 00:00:00 2001 From: Tyagiquamar Date: Sun, 4 Oct 2026 00:58:10 +0530 Subject: [PATCH] Receiver: return bool from receive() to reflect onReceive handler status Signed-off-by: Tyagiquamar --- modules/CppBenchmark.cmake | 3 ++- proto/fbe_protocol.cpp | 17 ++++++++++------- proto/fbe_protocol.h | 2 +- source/generator_cpp.cpp | 19 +++++++++++-------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/modules/CppBenchmark.cmake b/modules/CppBenchmark.cmake index 3464e7ee2..26f4ca1f3 100644 --- a/modules/CppBenchmark.cmake +++ b/modules/CppBenchmark.cmake @@ -1,4 +1,4 @@ -if(NOT TARGET cppbenchmark) +if(NOT TARGET cppbenchmark AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CppBenchmark/CMakeLists.txt") # Module flag set(CPPBENCHMARK_MODULE Y) @@ -10,3 +10,4 @@ if(NOT TARGET cppbenchmark) set_target_properties(cppbenchmark PROPERTIES FOLDER "modules/CppBenchmark") endif() + diff --git a/proto/fbe_protocol.cpp b/proto/fbe_protocol.cpp index d0a51703b..d5cbfbdc1 100644 --- a/proto/fbe_protocol.cpp +++ b/proto/fbe_protocol.cpp @@ -24,14 +24,14 @@ size_t Sender::send_serialized(size_t serialized) return sent; } -void Receiver::receive(const void* data, size_t size) +bool Receiver::receive(const void* data, size_t size) { if (size == 0) - return; + return false; assert((data != nullptr) && "Invalid buffer!"); if (data == nullptr) - return; + return false; // Storage buffer uint8_t* buffer1 = _buffer->data(); @@ -118,13 +118,13 @@ void Receiver::receive(const void* data, size_t size) } if (!message_size_found) - return; + return false; // Check the message full size size_t min_size = _final ? (4 + 4) : (4 + 4 + 4 + 4); assert((message_size >= min_size) && "Invalid receive data!"); if (message_size < min_size) - return; + return false; // Try to receive message body bool message_found = false; @@ -237,7 +237,7 @@ void Receiver::receive(const void* data, size_t size) message_size_copied = true; } - return; + return false; } [[maybe_unused]] uint32_t fbe_struct_size; @@ -257,7 +257,8 @@ void Receiver::receive(const void* data, size_t size) } // Handle the message - onReceive(fbe_struct_type, message_buffer, message_size); + if (!onReceive(fbe_struct_type, message_buffer, message_size)) + return false; // Reset the storage buffer _buffer->reset(); @@ -268,6 +269,8 @@ void Receiver::receive(const void* data, size_t size) offset1 = _buffer->size(); size1 = _buffer->size(); } + + return true; } } // namespace FBE diff --git a/proto/fbe_protocol.h b/proto/fbe_protocol.h index bfaadfa77..0725800b6 100644 --- a/proto/fbe_protocol.h +++ b/proto/fbe_protocol.h @@ -95,7 +95,7 @@ class Receiver void reset() noexcept { _buffer->reset(); } // Receive data - void receive(const void* data, size_t size); + bool receive(const void* data, size_t size); protected: // Receive message handler diff --git a/source/generator_cpp.cpp b/source/generator_cpp.cpp index 3e1634eeb..1c6e7e40b 100644 --- a/source/generator_cpp.cpp +++ b/source/generator_cpp.cpp @@ -5035,7 +5035,7 @@ class Receiver void reset() noexcept { _buffer->reset(); } // Receive data - void receive(const void* data, size_t size); + bool receive(const void* data, size_t size); protected: // Receive message handler @@ -5065,14 +5065,14 @@ class Receiver void GeneratorCpp::GenerateFBEReceiver_Source() { std::string code = R"CODE( -void Receiver::receive(const void* data, size_t size) +bool Receiver::receive(const void* data, size_t size) { if (size == 0) - return; + return false; assert((data != nullptr) && "Invalid buffer!"); if (data == nullptr) - return; + return false; // Storage buffer uint8_t* buffer1 = _buffer->data(); @@ -5159,13 +5159,13 @@ void Receiver::receive(const void* data, size_t size) } if (!message_size_found) - return; + return false; // Check the message full size size_t min_size = _final ? (4 + 4) : (4 + 4 + 4 + 4); assert((message_size >= min_size) && "Invalid receive data!"); if (message_size < min_size) - return; + return false; // Try to receive message body bool message_found = false; @@ -5278,7 +5278,7 @@ void Receiver::receive(const void* data, size_t size) message_size_copied = true; } - return; + return false; } [[maybe_unused]] uint32_t fbe_struct_size; @@ -5298,7 +5298,8 @@ void Receiver::receive(const void* data, size_t size) } // Handle the message - onReceive(fbe_struct_type, message_buffer, message_size); + if (!onReceive(fbe_struct_type, message_buffer, message_size)) + return false; // Reset the storage buffer _buffer->reset(); @@ -5309,6 +5310,8 @@ void Receiver::receive(const void* data, size_t size) offset1 = _buffer->size(); size1 = _buffer->size(); } + + return true; } )CODE";