This commit is contained in:
2025-05-09 17:53:03 +09:00
parent 914cfcba32
commit df35dd43c1

View File

@@ -188,15 +188,27 @@ void ClientManager::processUsersListResponsePacket(UsersListResponsePacket users
else else
userNames = std::unordered_map<Snowflake, std::string>(); userNames = std::unordered_map<Snowflake, std::string>();
auto promise = std::promise<std::unordered_map<Snowflake, std::string>>(); auto userNamesPromise = std::promise<std::unordered_map<Snowflake, std::string>>();
userNames_ = promise.get_future(); userNames_ = userNamesPromise.get_future();
std::unordered_map<std::string, Snowflake> findUserId;
if (findUserId_.valid() && findUserId_.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
findUserId = findUserId_.get();
else
findUserId = std::unordered_map<std::string, Snowflake>();
auto findUserIdPromise = std::promise<std::unordered_map<std::string, Snowflake>>();
findUserId_ = findUserIdPromise.get_future();
Snowflake userId; Snowflake userId;
::memcpy(&userId.snowflake, usersListResponsePacket.__data.userId, sizeof(Snowflake)); ::memcpy(&userId.snowflake, usersListResponsePacket.__data.userId, sizeof(Snowflake));
std::string userName((char*)usersListResponsePacket.__data.name, usersListResponsePacket.__data.packetLength - (sizeof(std::uint16_t) * 7)); std::string userName((char*)usersListResponsePacket.__data.name, usersListResponsePacket.__data.packetLength - (sizeof(std::uint16_t) * 7));
userNames[userId] = userName; userNames[userId] = userName;
findUserId[userName] = userId;
promise.set_value(userNames); userNamesPromise.set_value(userNames);
findUserIdPromise.set_value(findUserId);
spdlog::info("{}", userName); spdlog::info("{}", userName);
} }