86 std::multiset<Event> mElements;
87 std::mutex mElementsMutex;
91 bool mThreadRunning =
false;
93 template<
bool First = true>
95 std::unique_lock guard(mElementsMutex);
97 if (!mElements.empty() && mElements.begin()->Id == mNextId) {
98 mThreadRunning =
true;
99 auto item = mElements.extract(mElements.begin());
101 EventInternal(item.value());
102 mThreadRunning =
false;
105 if constexpr (First) {
111 void EventInternal(Event& pElem);
Definition EventSequencer.h:12
void ProcessEvent(cbtevent *pEv, ag *pSrc, ag *pDst, const char *pSkillname, uint64_t pId, uint64_t pRevision)
Definition EventSequencer.cpp:6
virtual ~EventSequencer()
Definition EventSequencer.cpp:49
EventSequencer(EventSequencer &&pOther) noexcept=delete
bool EventsPending() const
Definition EventSequencer.cpp:23
EventSequencer & operator=(EventSequencer &&pOther) noexcept=delete
EventSequencer(const EventSequencer &pOther)=delete
void Shutdown()
Definition EventSequencer.cpp:78
std::function< uintptr_t(cbtevent *ev, ag *src, ag *dst, const char *skillname, uint64_t id, uint64_t revision)> CallbackSignature
Definition EventSequencer.h:14
void Reset()
Definition EventSequencer.cpp:27
EventSequencer & operator=(const EventSequencer &pOther)=delete
Definition ArcdpsExtension.h:10
Definition EventSequencer.h:25
uint64_t Id
Definition EventSequencer.h:41
std::strong_ordering operator<=>(const Event &pOther) const
Definition EventSequencer.h:44
const char * Skillname
Definition EventSequencer.h:40
std::string NameStorage
Definition EventSequencer.h:31
Event(cbtevent *pEv, ag *pSrc, ag *pDst, const char *pSkillname, uint64_t pId, uint64_t pRevision)
Definition EventSequencer.h:48
bool Present
Definition EventSequencer.h:27
uint64_t Revision
Definition EventSequencer.h:42
Definition arcdps_structs_slim.h:320
const char * name
Definition arcdps_structs_slim.h:321
Definition arcdps_structs_slim.h:289