/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: WaitSingle.NT.cpp Date: 2021-10-1 Author: Reece ***/ #include #include "WaitSingle.hpp" namespace Aurora::Loop { bool WaitSingleGeneric::WaitForAtleastOne(const AuList &handles, AuUInt &one) { if (handles.empty()) { return {}; } if (handles.size() == 1) { return WaitForSingleObjectEx(reinterpret_cast(handles.at(0)), 0, true) == WAIT_OBJECT_0; } else { AuList ntHandles; ntHandles.reserve(handles.size()); for (const auto &handle : handles) { ntHandles.push_back(reinterpret_cast(handle)); } return WaitForMultipleObjectsEx(ntHandles.size(), ntHandles.data(), false, 0, true) >= WAIT_OBJECT_0; } } void WaitSingleGeneric::OnPresleep() { } void WaitSingleGeneric::OnFinishSleep() { } ELoopSource WaitSingleGeneric::GetType() { return ELoopSource::eSourceInternalReserved1; } }