[+] AuIO::ReadAsync

[+] AuIO::WriteAsync
This commit is contained in:
Reece Wilson 2024-02-25 23:30:56 +00:00
parent 7001a97870
commit 42af66c841

View File

@ -18,6 +18,7 @@ namespace Aurora::IO::CompletionGroup
} }
#include "CompletionGroup/ICompletionGroupWorkHandle.hpp" #include "CompletionGroup/ICompletionGroupWorkHandle.hpp"
#include <Aurora/Debug/Debug.hpp>
namespace Aurora::IO namespace Aurora::IO
{ {
@ -93,4 +94,62 @@ namespace Aurora::IO
AURT_ADD_USR_DATA_EXP(this->ToCompletionGroupHandle()); AURT_ADD_USR_DATA_EXP(this->ToCompletionGroupHandle());
}; };
inline bool ReadAsync(const AuSPtr<IAsyncTransaction> &pTransaction,
AuUInt64 uOffset,
const AuSPtr<Memory::MemoryViewWrite> &memoryView,
AuOptional<AuConsumer<AuUInt /*offset*/, AuUInt64 /*length*/>> callback = {},
AuOptional<AuSPtr<CompletionGroup::ICompletionGroup>> pCompletionGroup = {})
{
SysCheckArgNotNull(pTransaction, false);
if (pCompletionGroup)
{
(void)pTransaction->TryAttachToCompletionGroup(pCompletionGroup.Value());
}
if (callback)
{
auto pRet = AuMakeShared<IAsyncFinishedSubscriberFunctional>();
if (!pRet)
{
SysPushErrorMemory();
return false;
}
pRet->OnAsyncFileOpFinishedFunctional = callback.Value();
pTransaction->SetCallback(pRet);
}
return pTransaction->StartRead(uOffset, memoryView);
}
inline bool WriteAsync(const AuSPtr<IAsyncTransaction> &pTransaction,
AuUInt64 uOffset,
const AuSPtr<Memory::MemoryViewRead> &memoryView,
AuOptional<AuConsumer<AuUInt /*offset*/, AuUInt64 /*length*/>> callback = {},
AuOptional<AuSPtr<CompletionGroup::ICompletionGroup>> pCompletionGroup = {})
{
SysCheckArgNotNull(pTransaction, false);
if (pCompletionGroup)
{
(void)pTransaction->TryAttachToCompletionGroup(pCompletionGroup.Value());
}
if (callback)
{
auto pRet = AuMakeShared<IAsyncFinishedSubscriberFunctional>();
if (!pRet)
{
SysPushErrorMemory();
return false;
}
pRet->OnAsyncFileOpFinishedFunctional = callback.Value();
pTransaction->SetCallback(pRet);
}
return pTransaction->StartWrite(uOffset, memoryView);
}
} }