Fix linter warnings

This commit is contained in:
badaix 2025-01-18 21:22:33 +01:00
parent 9c9ebaead8
commit ab5318fea4
3 changed files with 28 additions and 6 deletions

2
.gitignore vendored
View file

@ -66,5 +66,7 @@ compile_commands.json
notes.txt
sanitizer-suppressions.txt
snapserver.conf
certs
server/etc/certs
extras/package/debian/snap*.debhelper.log

View file

@ -29,6 +29,7 @@
#include <boost/asio/write.hpp>
// standard headers
#include <cstdint>
#include <iostream>
@ -91,8 +92,8 @@ bool PendingRequest::operator<(const PendingRequest& other) const
ClientConnection::ClientConnection(boost::asio::io_context& io_context, const ClientSettings::Server& server)
: strand_(boost::asio::make_strand(io_context.get_executor())), resolver_(strand_), socket_(strand_), reqId_(1), server_(server)
ClientConnection::ClientConnection(boost::asio::io_context& io_context, ClientSettings::Server server)
: strand_(boost::asio::make_strand(io_context.get_executor())), resolver_(strand_), socket_(strand_), reqId_(1), server_(std::move(server))
{
base_msg_size_ = base_message_.getSize();
buffer_.resize(base_msg_size_);
@ -247,10 +248,11 @@ void ClientConnection::sendRequest(const msg::message_ptr& message, const chrono
boost::asio::post(strand_, [this, message, timeout, handler]()
{
pendingRequests_.erase(
std::remove_if(pendingRequests_.begin(), pendingRequests_.end(), [](std::weak_ptr<PendingRequest> request) { return request.expired(); }),
std::remove_if(pendingRequests_.begin(), pendingRequests_.end(), [](const std::weak_ptr<PendingRequest>& request) { return request.expired(); }),
pendingRequests_.end());
unique_ptr<msg::BaseMessage> response(nullptr);
if (++reqId_ >= 10000)
static constexpr uint16_t max_req_id = 10000;
if (++reqId_ >= max_req_id)
reqId_ = 1;
message->id = reqId_;
auto request = make_shared<PendingRequest>(strand_, reqId_, handler);

View file

@ -83,10 +83,11 @@ private:
class ClientConnection
{
public:
/// Result callback with boost::error_code
using ResultHandler = std::function<void(const boost::system::error_code&)>;
/// c'tor
ClientConnection(boost::asio::io_context& io_context, const ClientSettings::Server& server);
ClientConnection(boost::asio::io_context& io_context, ClientSettings::Server server);
/// d'tor
virtual ~ClientConnection();
@ -122,6 +123,7 @@ public:
});
}
/// @return MAC address of the client
std::string getMacAddress();
/// async get the next message
@ -129,26 +131,42 @@ public:
void getNextMessage(const MessageHandler<msg::BaseMessage>& handler);
protected:
/// Send next pending message from messages_
void sendNext();
/// Base message holding the received message
msg::BaseMessage base_message_;
/// Receive buffer
std::vector<char> buffer_;
/// Size of a base message (= message header)
size_t base_msg_size_;
/// Strand to serialize send/receive
boost::asio::strand<boost::asio::any_io_executor> strand_;
/// TCP resolver
tcp::resolver resolver_;
/// TCP socket
tcp::socket socket_;
/// List of pending requests, waiting for a response (Message::refersTo)
std::vector<std::weak_ptr<PendingRequest>> pendingRequests_;
/// unique request id to match a response
uint16_t reqId_;
/// Server settings (host and port)
ClientSettings::Server server_;
/// A pending request
struct PendingMessage
{
PendingMessage(const msg::message_ptr& msg, ResultHandler handler) : msg(msg), handler(handler)
/// C'tor
PendingMessage(msg::message_ptr msg, ResultHandler handler) : msg(std::move(msg)), handler(std::move(handler))
{
}
/// Pointer to the request
msg::message_ptr msg;
/// Response handler
ResultHandler handler;
};
/// Pending messages to be sent
std::deque<PendingMessage> messages_;
};