MultiplexedSocket: lock in getChannelList
Change-Id: I377ca001dbc1821b3b22dfc83d7b2677cc344477
diff --git a/src/multiplexed_socket.cpp b/src/multiplexed_socket.cpp
index 9c1f952..b34bf07 100644
--- a/src/multiplexed_socket.cpp
+++ b/src/multiplexed_socket.cpp
@@ -1214,17 +1214,15 @@
std::vector<std::map<std::string, std::string>>
MultiplexedSocket::getChannelList() const
{
+ std::lock_guard<std::mutex> lkSockets(pimpl_->socketsMutex);
std::vector<std::map<std::string, std::string>> channelsList;
-
+ channelsList.reserve(pimpl_->sockets.size());
for (const auto& [_, channel] : pimpl_->sockets) {
- if (channel) {
- std::map<std::string, std::string> channelMap;
- channelMap["channel"] = std::to_string(channel->channel());
- channelMap["channelName"]= channel->name();
- channelsList.emplace_back(std::move(channelMap));
- }
+ channelsList.emplace_back(std::map<std::string, std::string> {
+ {"id", fmt::format("{:x}", channel->channel())},
+ {"name", channel->name()},
+ });
}
-
return channelsList;
}