Wesnothd Connection: clarified data queues' nature by wrapping them in std::queue

I kept the underlying container an std::list like before.
This commit is contained in:
Charles Dang 2019-08-05 17:22:07 +11:00
parent 2051e7fc5b
commit 1e9d649271
2 changed files with 10 additions and 6 deletions

View file

@ -182,7 +182,7 @@ void wesnothd_connection::send_data(const configr_of& request)
// TODO: should I capture a shared_ptr for this?
io_service_.post([this, buf_ptr]() {
DBG_NW << "In wesnothd_connection::send_data::lambda\n";
send_queue_.push_back(buf_ptr);
send_queue_.push(buf_ptr);
if(send_queue_.size() == 1) {
send();
@ -248,7 +248,7 @@ void wesnothd_connection::handle_write(const boost::system::error_code& ec, std:
MPTEST_LOG;
DBG_NW << "Written " << bytes_transferred << " bytes.\n";
send_queue_.pop_front();
send_queue_.pop();
if(ec) {
{
@ -332,7 +332,7 @@ void wesnothd_connection::handle_read(const boost::system::error_code& ec, std::
{
std::lock_guard<std::mutex> lock(recv_queue_mutex_);
recv_queue_.emplace_back(std::move(data));
recv_queue_.emplace(std::move(data));
}
recv();
@ -395,7 +395,7 @@ bool wesnothd_connection::receive_data(config& result)
std::lock_guard<std::mutex> lock(recv_queue_mutex_);
if(!recv_queue_.empty()) {
result.swap(recv_queue_.front());
recv_queue_.pop_front();
recv_queue_.pop();
return true;
}
}

View file

@ -40,6 +40,7 @@
#include <list>
#include <thread>
#include <mutex>
#include <queue>
class config;
enum class loading_stage;
@ -159,8 +160,11 @@ private:
void send();
void recv();
std::list<std::shared_ptr<boost::asio::streambuf>> send_queue_;
std::list<config> recv_queue_;
template<typename T>
using data_queue = std::queue<T, std::list<T>>;
data_queue<std::shared_ptr<boost::asio::streambuf>> send_queue_;
data_queue<config> recv_queue_;
std::mutex recv_queue_mutex_;