-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProcessManager.cpp
More file actions
executable file
·99 lines (78 loc) · 2.44 KB
/
ProcessManager.cpp
File metadata and controls
executable file
·99 lines (78 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Copyright 2006-12 HumaNature Studios Inc.
#include "CorePch.h"
#include "ProcessManager.h"
#include "Process.h"
#include "ProcessEvent.h"
DEFINE_SINGLETON_TYPE(core, ProcessManager);
namespace core {
ProcessManager::ProcessManager()
: mReportProcesses(false)
{
}
ProcessManager::~ProcessManager()
{
}
void ProcessManager::initialize()
{
Bind::Member(mReportProcesses, this, "TrackProcesses")
.comment("Enables/Disables tracking of processes.")
.isBootOnly(false);
}
void ProcessManager::finalize()
{
Unbind::Host(this);
}
void ProcessManager::update(float)
{
ProcessList::iterator i, e;
if(mReportProcesses)
{
i = mRunningProcesses.begin();
e = mRunningProcesses.end();
for(; i != e; ++i)
{
Process* process = *i;
reportInfo("Active Processes", process->getReportName());
}
}
if(!mDeadProcesses.empty())
{
i = mDeadProcesses.begin();
e = mDeadProcesses.end();
for(; i != e; ++i)
{
Process* process = *i;
SafeDelete(process);
}
mDeadProcesses.clear();
}
}
void ProcessManager::addProcessToList(Process* process, ProcessList& processList)
{
ProcessList::iterator processIterator = std::find(processList.begin(), processList.end(), process);
if(processIterator == processList.end())
{
processList.push_back(process);
}
}
void ProcessManager::removeProcessFromList(Process* process, ProcessList& processList)
{
ProcessList::iterator processIterator = std::find(processList.begin(), processList.end(), process);
if(processIterator != processList.end())
{
processList.erase(processIterator);
}
}
void ProcessManager::addProcess(Process* process)
{
addProcessToList(process, mRunningProcesses);
}
void ProcessManager::removeProcess(Process* process)
{
removeProcessFromList(process, mRunningProcesses);
if(process->mDeleteOnEnd)
{
addProcessToList(process, mDeadProcesses);
}
}
} // namespace core