[*] Global build regressions caused by addd4080

This commit is contained in:
Reece Wilson 2023-09-15 18:08:02 +01:00
parent d49d4ad4fc
commit d0fb19f87e
7 changed files with 31 additions and 32 deletions

View File

@ -36,7 +36,7 @@ namespace Aurora::Async
// old sewage to be cleaned up // old sewage to be cleaned up
static bool gBOriginal; static bool gBOriginal;
static AuWorkerPId_t gMainThread; static AuOptionalEx<AuWorkerPId_t> gMainThread;
void StartSched2(); void StartSched2();
static void SchedNextTime(AuUInt64 uNSAbs); static void SchedNextTime(AuUInt64 uNSAbs);
@ -171,7 +171,7 @@ namespace Aurora::Async
{ {
if (!AuExchange(gLockedPump, true)) if (!AuExchange(gLockedPump, true))
{ {
NewWorkItem(gMainThread, AuMakeShared<BasicWorkStdFunc>(PumpSysThread))->Dispatch(); NewWorkItem(gMainThread.value(), AuMakeShared<BasicWorkStdFunc>(PumpSysThread))->Dispatch();
} }
SchedNextTime(AuMSToNS<AuUInt64>(gRuntimeConfig.async.dwLegacyMainThreadSystemTickMS) + AuTime::SteadyClockNS()); SchedNextTime(AuMSToNS<AuUInt64>(gRuntimeConfig.async.dwLegacyMainThreadSystemTickMS) + AuTime::SteadyClockNS());
@ -197,12 +197,11 @@ namespace Aurora::Async
AUKN_SYM void SetMainThreadForSysPumpScheduling(AuWorkerPId_t pid) AUKN_SYM void SetMainThreadForSysPumpScheduling(AuWorkerPId_t pid)
{ {
if (!pid) if (!pid.pool)
{ {
gRuntimeConfig.async.bEnableLegacyTicks = gBOriginal; gRuntimeConfig.async.bEnableLegacyTicks = gBOriginal;
gMainThread = AuWorkerPId_t(AuAsync::GetSharedAsyncApp(), AuWorkerId_t {0, 0}); AuResetMember(gMainThread);
Console::Commands::UpdateDispatcher(gMainThread); Console::Commands::UpdateDispatcher(gMainThread);
return; return;
} }

View File

@ -480,7 +480,7 @@ namespace Aurora::Async
auto pWorker = GetCurrentWorkerPId().pool; auto pWorker = GetCurrentWorkerPId().pool;
if (!pWorker) if (!pWorker)
{ {
pWorker = AuUnsafeRaiiToShared(gAsyncApp); pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
} }
return AuMakeShared<WorkItem>(ToInternal(pWorker).get(), WorkerPId_t { pWorker , worker }, task); return AuMakeShared<WorkItem>(ToInternal(pWorker).get(), WorkerPId_t { pWorker , worker }, task);
@ -504,7 +504,7 @@ namespace Aurora::Async
if (!pWorker) if (!pWorker)
{ {
pWorker = AuUnsafeRaiiToShared(gAsyncApp); pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
} }
return AuMakeSharedThrow<FuncWorker>(ToInternal(pWorker).get(), worker, AuMove(func)); return AuMakeSharedThrow<FuncWorker>(ToInternal(pWorker).get(), worker, AuMove(func));
@ -528,7 +528,7 @@ namespace Aurora::Async
if (!pWorker) if (!pWorker)
{ {
pWorker = AuUnsafeRaiiToShared(gAsyncApp); pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
} }
return AuMakeSharedThrow<WorkItem>(ToInternal(pWorker).get(), worker, task); return AuMakeSharedThrow<WorkItem>(ToInternal(pWorker).get(), worker, task);
@ -539,7 +539,7 @@ namespace Aurora::Async
auto pWorker = GetCurrentWorkerPId().pool; auto pWorker = GetCurrentWorkerPId().pool;
if (!pWorker) if (!pWorker)
{ {
pWorker = AuUnsafeRaiiToShared(gAsyncApp); pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
} }
return AuMakeShared<WorkItem>((IThreadPoolInternal *)ToInternal(pWorker).get(), WorkerPId_t {}, AuSPtr<IWorkItemHandler>{}); return AuMakeShared<WorkItem>((IThreadPoolInternal *)ToInternal(pWorker).get(), WorkerPId_t {}, AuSPtr<IWorkItemHandler>{});
} }
@ -560,7 +560,7 @@ namespace Aurora::Async
{ {
return nullptr; return nullptr;
} }
auto priv = reinterpret_cast<Async::WorkPriv *>(this->task_->GetPrivateData()); auto priv = reinterpret_cast<Async::WorkPriv *>(this->task_->GetPrivateData());
if (!priv) if (!priv)
{ {

View File

@ -23,10 +23,10 @@ namespace Aurora::Console::Commands
static AuHashMap<AuString, Command> gCommands; static AuHashMap<AuString, Command> gCommands;
static AuList<Hooks::LineHook_cb> gLineCallbacks; static AuList<Hooks::LineHook_cb> gLineCallbacks;
static AuList<CommandDispatch> gPendingCommands; static AuList<CommandDispatch> gPendingCommands;
static AuThreadPrimitives::Mutex gMutex; static AuMutex gMutex;
static AuThreadPrimitives::Mutex gPendingCommandsMutex; static AuMutex gPendingCommandsMutex;
static Async::WorkerPId_t gCommandDispatcher; static AuOptionalEx<AuWorkerPId_t> gCommandDispatcher;
struct Command struct Command
{ {
AuString tag; AuString tag;
@ -44,7 +44,7 @@ namespace Aurora::Console::Commands
eAsync eAsync
}; };
static bool Dispatch(const AuString &string, EDispatchType type, Async::WorkerPId_t workerId) static bool Dispatch(const AuString &string, EDispatchType type, AuOptionalEx<AuWorkerPId_t> workerId)
{ {
Parse::ParseResult res; Parse::ParseResult res;
AuSPtr<ICommandSubscriber> callback; AuSPtr<ICommandSubscriber> callback;
@ -102,9 +102,9 @@ namespace Aurora::Console::Commands
{ {
callback->OnCommand(res.result); callback->OnCommand(res.result);
} }
else else if (workerId)
{ {
Async::NewWorkFunction(workerId, [=]() -> void Async::NewWorkFunction(workerId.value(), [=]() -> void
{ {
callback->OnCommand(res.result); callback->OnCommand(res.result);
}); });
@ -146,7 +146,7 @@ namespace Aurora::Console::Commands
return Dispatch(string, EDispatchType::eAsync, id); return Dispatch(string, EDispatchType::eAsync, id);
} }
void UpdateDispatcher(AuOptional<Async::WorkerPId_t> target) void UpdateDispatcher(AuOptionalEx<AuWorkerPId_t> target)
{ {
AU_LOCK_GUARD(gMutex); AU_LOCK_GUARD(gMutex);
AU_LOCK_GUARD(gPendingCommandsMutex); AU_LOCK_GUARD(gPendingCommandsMutex);
@ -161,7 +161,7 @@ namespace Aurora::Console::Commands
} }
} }
gCommandDispatcher = target.value(); gCommandDispatcher = target;
} }
static void DispatchCommandsFromThis(const AuList<CommandDispatch> &commands) static void DispatchCommandsFromThis(const AuList<CommandDispatch> &commands)
@ -180,7 +180,7 @@ namespace Aurora::Console::Commands
} }
else else
{ {
NewWorkItem(gCommandDispatcher, AuMakeShared<Async::BasicWorkStdFunc>(func))->Dispatch()->BlockUntilComplete(); NewWorkItem(gCommandDispatcher.value(), AuMakeShared<Async::BasicWorkStdFunc>(func))->Dispatch()->BlockUntilComplete();
} }
} }

View File

@ -9,7 +9,7 @@
namespace Aurora::Console::Commands namespace Aurora::Console::Commands
{ {
void UpdateDispatcher(AuOptional<Async::WorkerPId_t> target); void UpdateDispatcher(AuOptionalEx<Async::WorkerPId_t> target);
void PumpCommands(); void PumpCommands();
void RunCommandFunction(const AuFunction<void()> &func); void RunCommandFunction(const AuFunction<void()> &func);
} }

View File

@ -75,7 +75,7 @@ namespace Aurora::IO
if (asyncWorker) if (asyncWorker)
{ {
AuAtomicAdd(&AuStaticCast<AuAsync::ThreadPool>(asyncWorker.pool)->uAtomicIOProcessors, 1u); AuAtomicAdd(&AuStaticCast<AuAsync::ThreadPool>(asyncWorker.value().pool)->uAtomicIOProcessors, 1u);
} }
return true; return true;
@ -633,9 +633,9 @@ namespace Aurora::IO
void IOProcessor::AddTimerLS() void IOProcessor::AddTimerLS()
{ {
if (asyncWorker) if (auto optWorker = this->asyncWorker)
{ {
AuAtomicAdd(&AuStaticCast<AuAsync::ThreadPool>(asyncWorker.pool)->uAtomicIOProcessorsWorthlessSources, 1u); AuAtomicAdd(&AuStaticCast<AuAsync::ThreadPool>(optWorker.value().pool)->uAtomicIOProcessorsWorthlessSources, 1u);
} }
this->ToQueue()->SourceAdd(this->timers.pLsTicker); this->ToQueue()->SourceAdd(this->timers.pLsTicker);
@ -647,7 +647,7 @@ namespace Aurora::IO
{ {
if (!this->pWorkItem) if (!this->pWorkItem)
{ {
this->pWorkItem = this->asyncWorker.pool->NewWorkItem(this->asyncWorker, AuSharedFromThis()); this->pWorkItem = this->asyncWorker.value().pool->NewWorkItem(this->asyncWorker.value(), AuSharedFromThis());
} }
this->pWorkItem->SetSchedTimeNs(this->refreshRateNs); this->pWorkItem->SetSchedTimeNs(this->refreshRateNs);
@ -688,15 +688,15 @@ namespace Aurora::IO
queue->SourceRemove(this->timers.pLsTicker); queue->SourceRemove(this->timers.pLsTicker);
if (asyncWorker) if (auto optWorker = this->asyncWorker)
{ {
AuAtomicSub(&AuStaticCast<AuAsync::ThreadPool>(asyncWorker.pool)->uAtomicIOProcessorsWorthlessSources, 1u); AuAtomicSub(&AuStaticCast<AuAsync::ThreadPool>(optWorker.value().pool)->uAtomicIOProcessorsWorthlessSources, 1u);
} }
} }
bool IOProcessor::IsAsync() bool IOProcessor::IsAsync()
{ {
return bool(this->asyncWorker.pool); return bool(this->asyncWorker);
} }
bool IOProcessor::IsTickOnly() bool IOProcessor::IsTickOnly()
@ -869,9 +869,9 @@ namespace Aurora::IO
void IOProcessor::ReleaseAllWatches() void IOProcessor::ReleaseAllWatches()
{ {
if (asyncWorker) if (auto optWorker = this->asyncWorker)
{ {
AuAtomicSub(&AuStaticCast<AuAsync::ThreadPool>(asyncWorker.pool)->uAtomicIOProcessors, 1u); AuAtomicSub(&AuStaticCast<AuAsync::ThreadPool>(optWorker.value().pool)->uAtomicIOProcessors, 1u);
} }
RemoveTimer(); RemoveTimer();

View File

@ -107,7 +107,7 @@ namespace Aurora::IO
IOProcessorItems items; IOProcessorItems items;
IOProcessorTimers timers; IOProcessorTimers timers;
AuAsync::WorkerPId_t asyncWorker; AuOptionalEx<AuAsync::WorkerPId_t> asyncWorker;
AuSPtr<AuAsync::IWorkItem> pWorkItem; AuSPtr<AuAsync::IWorkItem> pWorkItem;
AuThreadPrimitives::MutexUnique_t mutex; AuThreadPrimitives::MutexUnique_t mutex;

View File

@ -105,7 +105,7 @@ namespace Aurora::IO::Net
AuSPtr<Waiter> temp; AuSPtr<Waiter> temp;
auto pid = AuAsync::GetCurrentWorkerPId(); auto pid = AuAsync::GetCurrentWorkerPId();
if (pid) if (pid.pool)
{ {
temp = AuMakeShared<Waiter>(work, callback, pid); temp = AuMakeShared<Waiter>(work, callback, pid);
} }