24#include <unordered_map>
33template <
typename Connection>
46 void append(
const std::shared_ptr<Connection>& connection) {
47 std::unique_lock<std::mutex> lock(
mutex_);
48 list_.try_emplace(connection.get(), connection);
56 void remove(
const std::shared_ptr<Connection>& connection) {
66 std::unique_lock<std::mutex> lock(
mutex_);
67 list_.erase(connection);
74 std::unique_lock<std::mutex> lock(
mutex_);
75 for (
const auto& pair :
list_) {
76 const auto connection = pair.second.lock();
78 connection->async_close();
85 std::unordered_map<Connection*, std::weak_ptr<Connection>>
list_{};
void append(const std::shared_ptr< Connection > &connection)
Add a connection.
void remove(Connection *connection)
Remove a connection.
void async_close_all()
Asynchronously close all connections.
std::unordered_map< Connection *, std::weak_ptr< Connection > > list_
List of connections.
void remove(const std::shared_ptr< Connection > &connection)
Remove a connection.
ConnectionList()=default
Constructor.
Namespace of transport of messages.