Plasma Engine  2.0
Loading...
Searching...
No Matches
ProcessGroup_NoImpl.h
1
5
6#include <Foundation/FoundationInternal.h>
7PL_FOUNDATION_INTERNAL_HEADER
8
9#include <Foundation/System/ProcessGroup.h>
10
11#if PL_ENABLED(PL_SUPPORTS_PROCESSES)
12
13struct plProcessGroupImpl
14{
15 PL_DECLARE_POD_TYPE();
16};
17
18plProcessGroup::plProcessGroup(plStringView sGroupName)
19{
20}
21
22plProcessGroup::~plProcessGroup()
23{
24 TerminateAll().IgnoreResult();
25}
26
27plResult plProcessGroup::Launch(const plProcessOptions& opt)
28{
29 plProcess& process = m_Processes.ExpandAndGetRef();
30 return process.Launch(opt);
31}
32
33plResult plProcessGroup::WaitToFinish(plTime timeout /*= plTime::MakeZero()*/)
34{
35 for (auto& process : m_Processes)
36 {
37 if (process.GetState() != plProcessState::Finished && process.WaitToFinish(timeout).Failed())
38 {
39 return PL_FAILURE;
40 }
41 }
42
43 return PL_SUCCESS;
44}
45
46plResult plProcessGroup::TerminateAll(plInt32 iForcedExitCode /*= -2*/)
47{
48 auto result = PL_SUCCESS;
49 for (auto& process : m_Processes)
50 {
51 if (process.GetState() == plProcessState::Running && process.Terminate().Failed())
52 {
53 result = PL_FAILURE;
54 }
55 }
56
57 return result;
58}
59
60#endif
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12