WSF
ProjectParseThread.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2016 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef PROJECTPARSETHREAD_HPP
13#define PROJECTPARSETHREAD_HPP
14
15#include "Project.hpp"
16#include "UtSemaphore.hpp"
17#include "UtThread.hpp"
18
19namespace wizard
20{
22class ProjectParseThread : public UtThread
23{
24public:
26 ~ProjectParseThread() override = default;
27 void JoinThread();
28
42
43 struct Task
44 {
47 , mScenarioPtr(nullptr)
48 , mTestingParse(false)
49 , mTaskId(-1)
51 {
52 }
53
60 // Inputs:
64 // Outputs:
66
68
70 };
71
72 void Run() override;
73
74 void Abort();
75 bool IsAborting() const { return mAborting; }
76 void SetTask(const Task& aTask);
77 void SetComplete();
78 void SetRunOnCompletion(std::function<void()> onCompletion) { mRunOnCompletion = onCompletion; }
79
80 TaskPhase GetPhase() const { return mParsePhase; }
81
82private:
83 void Reparse(Task* aTaskPtr);
84
85 void Serialize();
86
87 UtSemaphore mSem;
88 volatile TaskPhase mParsePhase;
89
91 volatile bool mThreadExit;
92
93 volatile bool mAborting;
94 Task mCurrentTask;
95 std::function<void()> mRunOnCompletion = []() { /* no-op */ };
96};
97} // namespace wizard
98#endif
void Serialize(BUFF &aBuff, UtVec3d &aVec3)
Definition WsfXIO_SerializeTypes.hpp:217
void Abort()
Definition ProjectParseThread.cpp:82
void JoinThread()
Definition ProjectParseThread.cpp:27
void SetTask(const Task &aTask)
Definition ProjectParseThread.cpp:87
ProjectParseThread()
Definition ProjectParseThread.cpp:19
void Run() override
Definition ProjectParseThread.cpp:35
TaskPhase GetPhase() const
Definition ProjectParseThread.hpp:80
~ProjectParseThread() override=default
TaskPhase
Definition ProjectParseThread.hpp:30
@ cSERIALIZING
Definition ProjectParseThread.hpp:38
@ cSERIALIZE_DONE
Definition ProjectParseThread.hpp:40
@ cPARSE_DONE
Parsing is complete. Transition to this phase is always done by parsing thread.
Definition ProjectParseThread.hpp:36
@ cNOT_WORKING
No parsing is being requested.
Definition ProjectParseThread.hpp:32
@ cPARSING
Parsing has started. Transition to this phase is always done by the main thread.
Definition ProjectParseThread.hpp:34
bool IsAborting() const
Definition ProjectParseThread.hpp:75
void SetRunOnCompletion(std::function< void()> onCompletion)
Definition ProjectParseThread.hpp:78
void SetComplete()
Definition ProjectParseThread.cpp:131
A WSF 'project'. Manages WSF sources files in a WSF project.
Definition Project.hpp:66
Definition Runner.hpp:22
TaskType mTaskType
Definition ProjectParseThread.hpp:59
int mTaskId
Definition ProjectParseThread.hpp:67
std::string mPerformanceTestResults
Definition ProjectParseThread.hpp:65
Project * mScenarioPtr
Definition ProjectParseThread.hpp:61
TaskType
Definition ProjectParseThread.hpp:55
@ cTT_SERIALIZE
Definition ProjectParseThread.hpp:57
@ cTT_PARSE
Definition ProjectParseThread.hpp:56
Task()
Definition ProjectParseThread.hpp:45
bool mTestingParse
True if running a parse test.
Definition ProjectParseThread.hpp:63
int mModificationSequenceNumber
Definition ProjectParseThread.hpp:69
Copyrights Multiple, All Rights Reserved