/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: LSSemaphore.NT.hpp Date: 2021-10-1 Author: Reece ***/ #pragma once #include "LSHandle.hpp" namespace Aurora::IO::Loop { struct LSSemaphore : ILSSemaphore, virtual LSHandle { LSSemaphore(); LSSemaphore(HANDLE handle); ~LSSemaphore(); bool TryInit(AuUInt32 initialCount = 0); bool AddOne() override; bool AddMany(AuUInt32 uCount) override; bool ILSSemaphore::IsSignaled() override; bool ILSSemaphore::WaitOn(AuUInt32 timeout) override; ELoopSource ILSSemaphore::GetType() override; }; }