Lua: Implement most API functions

This commit is contained in:
Lion Kortlepel
2021-09-16 19:00:13 +02:00
parent 1c80a4deb7
commit 968d9ff999
6 changed files with 168 additions and 19 deletions

View File

@@ -1,7 +1,9 @@
#include "Client.h"
#include "CustomAssert.h"
#include "TServer.h"
#include <memory>
#include <optional>
// FIXME: add debug prints
@@ -100,3 +102,19 @@ int TClient::SecondsSinceLastPing() {
.count();
return int(seconds);
}
std::optional<std::weak_ptr<TClient>> GetClient(TServer& Server, int ID) {
std::optional<std::weak_ptr<TClient>> MaybeClient { std::nullopt };
Server.ForEachClient([&](std::weak_ptr<TClient> CPtr) -> bool {
ReadLock Lock(Server.GetClientMutex());
if (!CPtr.expired()) {
auto C = CPtr.lock();
if (C->GetID() == ID) {
MaybeClient = CPtr;
return false;
}
}
return true;
});
return MaybeClient;
}