31 lines
754 B
C++
31 lines
754 B
C++
|
/***
|
||
|
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
||
|
|
||
|
File: Arrow.hpp
|
||
|
Date: 2022-02-03
|
||
|
Author: Reece
|
||
|
***/
|
||
|
#pragma once
|
||
|
|
||
|
namespace Aurora::Grug
|
||
|
{
|
||
|
struct Arrow;
|
||
|
using GrugReport_f = void(*)(Arrow *);
|
||
|
|
||
|
struct Arrow
|
||
|
{
|
||
|
AuThreadPrimitives::SpinLock spinSemaphore;
|
||
|
bool bPermitRunAhead;
|
||
|
GrugThread thread;
|
||
|
GrugReport_f pCallback;
|
||
|
GrugReport_f pCallbackRunaway;
|
||
|
};
|
||
|
|
||
|
void HurlArrow(Arrow *pArrow, GrugReport_f pCallback, GrugReport_f pCallbackRunaway);
|
||
|
void ArrowWait(Arrow *pArrow);
|
||
|
void ArrowThreadAsyncSafe(Arrow *pArrow);
|
||
|
void HurlRaiseProblematicEvent(Arrow *pArrow);
|
||
|
void HurlFatalEvent(Arrow *pArrow);
|
||
|
|
||
|
void DequeueOneArrow();
|
||
|
}
|