20 #include <shared_mutex> 37 std::lock_guard<std::shared_mutex> lock(mutex_);
38 connections_.insert(std::move(connection));
48 std::lock_guard<std::shared_mutex> lock(mutex_);
49 connections_.erase(connection);
63 if (packet ==
nullptr)
65 throw std::invalid_argument(
"Given packet pointer is null.");
71 ss <<
"received " <<
str(*packet) <<
" source ";
74 if (connection ==
nullptr)
86 std::shared_lock<std::shared_mutex> lock(mutex_);
87 std::shared_ptr<const Packet> shared = std::move(packet);
89 for (
auto it = connections_.begin(); it != connections_.end();)
92 if (
auto connection = it->lock())
94 connection->send(shared);
100 it = connections_.erase(it);
std::string str(const T &object)
static void log(std::string message)
TEST_VIRTUAL void send(std::unique_ptr< const Packet > packet)
void connection(std::weak_ptr< Connection > connection)
static unsigned int level()
TEST_VIRTUAL void remove(const std::weak_ptr< Connection > &connection)
TEST_VIRTUAL void add(std::weak_ptr< Connection > connection)