diff --git a/src/Client Console/Client.cpp b/src/Client Console/Client.cpp index f243577..3eb8505 100644 --- a/src/Client Console/Client.cpp +++ b/src/Client Console/Client.cpp @@ -27,7 +27,7 @@ Client::~Client() noexcept = default; void Client::init(std::string_view ip, std::string_view port) { m_tcp_client = std::make_unique(m_io, boost::asio::ip::tcp::resolver(m_io).resolve(ip, port)); - ///m_udp_client = std::make_unique(m_io, boost::asio::ip::udp::resolver(m_io).resolve(ip, port)); + m_udp_client = std::make_unique(m_io, boost::asio::ip::udp::resolver(m_io).resolve(ip, port)); m_thread = std::thread{ [this]() { m_io.run(); } }; } diff --git a/src/Network/Protocols/CommandMessageProtocol.hpp b/src/Network/Protocols/CommandMessageProtocol.hpp index 324bc44..aaabc54 100644 --- a/src/Network/Protocols/CommandMessageProtocol.hpp +++ b/src/Network/Protocols/CommandMessageProtocol.hpp @@ -27,6 +27,7 @@ class CommandMessageProtocol public: inline constexpr CommandMessageProtocol() noexcept; + [[nodiscard]] inline auto get_data() noexcept { return (gsl::span{ m_data }); } [[nodiscard]] inline const auto get_data() const noexcept { return (gsl::span{ m_data }); } [[nodiscard]] inline auto get_body() noexcept { return (gsl::span{ m_data }.subspan()); } @@ -51,9 +52,23 @@ class CommandMessageProtocol using CMPROTO = CommandMessageProtocol; +/*! + * \brief Constructs message "SUCCESS" + * + * \return Message + * + * \exception ??? + */ [[nodiscard]] std::unique_ptr make_success_msg(); +/*! + * \brief Constructs message "FAILURE" + * + * \return Message + * + * \exception ??? + */ [[nodiscard]] std::unique_ptr make_failure_msg(); diff --git a/src/Network/TCP/TCPConnection.cpp b/src/Network/TCP/TCPConnection.cpp index 5b98e68..8b687f3 100644 --- a/src/Network/TCP/TCPConnection.cpp +++ b/src/Network/TCP/TCPConnection.cpp @@ -23,15 +23,11 @@ TCPConnection::~TCPConnection() noexcept = default; /*************************************************************************************************************************************************************************************************************/ void TCPConnection::write(std::unique_ptr &&msg) { - std::cout << '1' << '(' << msg->get_data().data() << ')' << std::endl; - boost::asio::post(m_io, [this, msg{ std::move(msg) }]() mutable { - std::cout << '2' << '(' << msg->get_data().data() << ')' << std::endl; const bool write_in_progress{ !m_write_msgs.empty() }; m_write_msgs.push_back(std::move(msg)); - std::cout << '3' << '(' << m_write_msgs.front()->get_data().data() << ')' << std::endl; if (!write_in_progress) write(); }); diff --git a/src/Network/UDP/UDPClient.cpp b/src/Network/UDP/UDPClient.cpp index 6040b7b..a40002d 100644 --- a/src/Network/UDP/UDPClient.cpp +++ b/src/Network/UDP/UDPClient.cpp @@ -9,19 +9,20 @@ #include "..\Protocols\ImageMessageProtocol.hpp" #include "..\..\Service\Debugger.hpp" +/*************************************************************************************************************************************************************************************************************/ UDPClient::UDPClient(boost::asio::io_context &io_context, const boost::asio::ip::udp::resolver::results_type &endpoint) : m_io { io_context }, m_endpoint{ *endpoint } { } - -void UDPClient::send(const std::shared_ptr &msg) +/*************************************************************************************************************************************************************************************************************/ +void UDPClient::start(std::unique_ptr &&msg) { std::thread t( - [this, &msg]() + [this, msg{ std::move(msg) }]() { std::unique_ptr client{ std::make_unique(m_io, m_endpoint) }; - client->send(msg); + //client->send(std::move(msg)); std::shared_ptr imsg{ std::make_shared() }; while (true) diff --git a/src/Network/UDP/UDPClient.hpp b/src/Network/UDP/UDPClient.hpp index 066e043..e7b193a 100644 --- a/src/Network/UDP/UDPClient.hpp +++ b/src/Network/UDP/UDPClient.hpp @@ -10,9 +10,8 @@ class UDPClient : private boost::noncopyable { public: UDPClient(boost::asio::io_context &io_context, const boost::asio::ip::udp::resolver::results_type &endpoint); - ~UDPClient() noexcept = default; - void send(const std::shared_ptr &msg); + void start(std::unique_ptr &&msg); private: boost::asio::io_context &m_io; diff --git a/src/Network/UDP/UDPParticipiant.cpp b/src/Network/UDP/UDPParticipiant.cpp index 5dabecd..ccad30a 100644 --- a/src/Network/UDP/UDPParticipiant.cpp +++ b/src/Network/UDP/UDPParticipiant.cpp @@ -15,18 +15,14 @@ UDPParticipiant::UDPParticipiant(boost::asio::io_context &io_context, const boos // m_socket.set_option(boost::asio::socket_base::broadcast(true)); } -#pragma warning(suppress : 26415 26418) -// warning C26415: Smart pointer parameter 'msg' is used only to access contained pointer. Use T* or T& instead (r.30). -// warning C26418: Shared pointer parameter 'msg' is not copied or moved. Use T* or T& instead (r.36). -void UDPParticipiant::send(const std::shared_ptr &msg) +/*************************************************************************************************************************************************************************************************************/ +void UDPParticipiant::send(std::unique_ptr &&msg) { while(m_socket.send_to(boost::asio::buffer(msg->get_data().data(), msg->get_length()), m_endpoint) != msg->get_length()); } -#pragma warning(suppress : 26415 26418) -// warning C26415: Smart pointer parameter 'msg' is used only to access contained pointer. Use T* or T& instead (r.30). -// warning C26418: Shared pointer parameter 'msg' is not copied or moved. Use T* or T& instead (r.36). -void UDPParticipiant::recv(const std::shared_ptr &msg) +/*************************************************************************************************************************************************************************************************************/ +void UDPParticipiant::recv(std::unique_ptr &msg) { while(m_socket.receive_from(boost::asio::buffer(msg->get_data().data(), msg->get_length()), m_endpoint) != msg->get_length()); diff --git a/src/Network/UDP/UDPParticipiant.hpp b/src/Network/UDP/UDPParticipiant.hpp index 55406a7..87b0857 100644 --- a/src/Network/UDP/UDPParticipiant.hpp +++ b/src/Network/UDP/UDPParticipiant.hpp @@ -16,8 +16,8 @@ class UDPParticipiant : private boost::noncopyable UDPParticipiant(boost::asio::io_context &io_context, const boost::asio::ip::udp::endpoint &endpoint); - void send(const std::shared_ptr &msg); - void recv(const std::shared_ptr &msg); + void send(std::unique_ptr &&msg); + void recv(std::unique_ptr &msg); void send(const std::shared_ptr &msg); void recv(const std::shared_ptr &msg); diff --git a/src/Service/Log.hpp b/src/Service/Log.hpp index db10690..e2a129b 100644 --- a/src/Service/Log.hpp +++ b/src/Service/Log.hpp @@ -11,7 +11,7 @@ * * \param[in] filename Formated string for the name of log file * - * \exception + * \exception ??? */ void InitLog(const std::string_view filename);