mirror of
https://github.com/EvernodeXRPL/hpcore.git
synced 2026-04-29 15:37:59 +00:00
Basic consensus implementation (#45)
Consensus for user connections, user inputs, contract outputs and time.
This commit is contained in:
@@ -24,6 +24,7 @@ ssl::context ctx{ssl::context::tlsv13};
|
||||
* Map key: User socket session id (<ip:port>)
|
||||
*/
|
||||
std::unordered_map<std::string, usr::connected_user> users;
|
||||
std::mutex users_mutex; // Mutex for users access race conditions.
|
||||
|
||||
/**
|
||||
* Holds set of connected user session ids and public keys for lookups.
|
||||
@@ -219,7 +220,10 @@ int add_user(sock::socket_session<user_outbound_message> *session, const std::st
|
||||
return -1;
|
||||
}
|
||||
|
||||
users.emplace(sessionid, usr::connected_user(session, pubkey));
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(users_mutex);
|
||||
users.emplace(sessionid, usr::connected_user(session, pubkey));
|
||||
}
|
||||
|
||||
// Populate sessionid map so we can lookup by user pubkey.
|
||||
sessionids[pubkey] = sessionid;
|
||||
@@ -246,7 +250,11 @@ int remove_user(const std::string &sessionid)
|
||||
|
||||
usr::connected_user &user = itr->second;
|
||||
|
||||
sessionids.erase(user.pubkey);
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(users_mutex);
|
||||
sessionids.erase(user.pubkey);
|
||||
}
|
||||
|
||||
users.erase(itr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user