From 926cce1eac5a33ecf0fb1d921bd36430d0745948 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Tue, 13 May 2025 21:41:53 -0500 Subject: [PATCH] Level2MessageFactory clang-tidy cleanup --- .../wsr88d/rda/level2_message_factory.hpp | 24 +++------- .../wsr88d/rda/level2_message_factory.cpp | 46 +++++++++---------- 2 files changed, 27 insertions(+), 43 deletions(-) diff --git a/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp b/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp index 7359e72b..ac2b8234 100644 --- a/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp +++ b/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp @@ -2,28 +2,19 @@ #include -namespace scwx -{ -namespace wsr88d -{ -namespace rda +namespace scwx::wsr88d::rda { struct Level2MessageInfo { - std::shared_ptr message; - bool headerValid; - bool messageValid; - - Level2MessageInfo() : - message(nullptr), headerValid(false), messageValid(false) - { - } + std::shared_ptr message {nullptr}; + bool headerValid {false}; + bool messageValid {false}; }; class Level2MessageFactory { -private: +public: explicit Level2MessageFactory() = delete; ~Level2MessageFactory() = delete; @@ -33,7 +24,6 @@ private: Level2MessageFactory(Level2MessageFactory&&) noexcept = delete; Level2MessageFactory& operator=(Level2MessageFactory&&) noexcept = delete; -public: struct Context; static std::shared_ptr CreateContext(); @@ -41,6 +31,4 @@ public: std::shared_ptr& ctx); }; -} // namespace rda -} // namespace wsr88d -} // namespace scwx +} // namespace scwx::wsr88d::rda diff --git a/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp index a659b734..b253cdf8 100644 --- a/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp +++ b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp @@ -15,20 +15,16 @@ #include #include -namespace scwx -{ -namespace wsr88d -{ -namespace rda +namespace scwx::wsr88d::rda { static const std::string logPrefix_ = "scwx::wsr88d::rda::level2_message_factory"; static const auto logger_ = util::Logger::Create(logPrefix_); -typedef std::function(Level2MessageHeader&&, - std::istream&)> - CreateLevel2MessageFunction; +using CreateLevel2MessageFunction = + std::function(Level2MessageHeader&&, + std::istream&)>; static const std::unordered_map create_ {{1, DigitalRadarData::Create}, @@ -44,15 +40,12 @@ static const std::unordered_map struct Level2MessageFactory::Context { Context() : - messageData_ {}, - bufferedSize_ {}, - messageBuffer_ {messageData_}, - messageBufferStream_ {&messageBuffer_} + messageBuffer_ {messageData_}, messageBufferStream_ {&messageBuffer_} { } - std::vector messageData_; - size_t bufferedSize_; + std::vector messageData_ {}; + std::size_t bufferedSize_ {}; util::vectorbuf messageBuffer_; std::istream messageBufferStream_; bool bufferingData_ {false}; @@ -78,13 +71,16 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is, if (info.headerValid) { - if (header.message_size() == 65535) + if (header.message_size() == std::numeric_limits::max()) { + // A message size of 65535 indicates a message with a single segment. + // The size is specified in the bytes normally reserved for the segment + // number and total number of segments. segment = 1; totalSegments = 1; dataSize = (static_cast(header.number_of_message_segments()) - << 16) + + << 16) + // NOLINT(cppcoreguidelines-avoid-magic-numbers) header.message_segment_number(); } else @@ -145,14 +141,16 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is, logger_->debug("Bad size estimate, increasing size"); // Estimate remaining size - uint16_t remainingSegments = - std::max(totalSegments - segment + 1, 100u); - size_t remainingSize = remainingSegments * dataSize; + static const std::uint16_t kMinRemainingSegments_ = 100u; + std::uint16_t remainingSegments = std::max( + totalSegments - segment + 1, kMinRemainingSegments_); + std::size_t remainingSize = remainingSegments * dataSize; ctx->messageData_.resize(ctx->bufferedSize_ + remainingSize); } - is.read(ctx->messageData_.data() + ctx->bufferedSize_, dataSize); + is.read(&ctx->messageData_[ctx->bufferedSize_], + static_cast(dataSize)); ctx->bufferedSize_ += dataSize; if (is.eof()) @@ -166,7 +164,7 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is, else if (segment == totalSegments) { ctx->messageBuffer_.update_read_pointers(ctx->bufferedSize_); - header.set_message_size(static_cast( + header.set_message_size(static_cast( ctx->bufferedSize_ / 2 + Level2MessageHeader::SIZE)); messageStream = &ctx->messageBufferStream_; @@ -188,7 +186,7 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is, else if (info.headerValid) { // Seek to the end of the current message - is.seekg(dataSize, std::ios_base::cur); + is.seekg(static_cast(dataSize), std::ios_base::cur); } if (info.message == nullptr) @@ -199,6 +197,4 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is, return info; } -} // namespace rda -} // namespace wsr88d -} // namespace scwx +} // namespace scwx::wsr88d::rda