source: nrEngine/src/ITask.cpp @ 35

Revision 35, 5.2 KB checked in by art, 13 years ago (diff)

Big changes in resource managment system. Interface functions were renamed.
Resource loading is now done throughthe resource and not through the loader.

Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13
14//----------------------------------------------------------------------------------
15// Includes
16//----------------------------------------------------------------------------------
17#include "ITask.h"
18#include "Log.h"
19
20namespace nrEngine{
21
22        //--------------------------------------------------------------------
23        ITask::ITask() : IThread(){
24                init();
25        }
26
27        //--------------------------------------------------------------------
28        ITask::ITask(const std::string& name) : IThread(), _taskName(name)
29        {
30                init();
31        }
32
33        //--------------------------------------------------------------------
34        void ITask::init(){
35                _taskCanKill = false;
36                _taskOrder = ORDER_NORMAL;
37                _taskID = 0;
38                _taskState = TASK_STOPPED;
39                _orderChanged = false;
40                _taskType = TASK_USER;
41                _taskGraphColor = 0;
42                _taskProperty = TASK_NONE;
43        }
44       
45        //--------------------------------------------------------------------
46        ITask::~ITask(){
47
48        }
49
50        //--------------------------------------------------------------------
51        bool ITask::operator <  (const ITask &t){
52                return this->_taskOrder < t._taskOrder;
53        }
54
55        //--------------------------------------------------------------------
56        bool ITask::operator == (const ITask &t){
57                return this->_taskOrder == t._taskOrder;
58        }
59
60        //--------------------------------------------------------------------
61        bool ITask::operator <= (const ITask &t){
62                return (*this < t) || (*this == t);
63        }
64
65        //--------------------------------------------------------------------
66        bool ITask::operator >  (const ITask &t){
67                return !(*this <= t) ;
68        }
69
70        //--------------------------------------------------------------------
71        bool ITask::operator >= (const ITask &t){
72                return !(*this < t) || (*this == t);
73        }
74
75        //--------------------------------------------------------------------
76        bool ITask::operator != (const ITask &t){
77                return !(*this == t);
78        }
79
80        //--------------------------------------------------------------------
81        void ITask::setTaskOrder(TaskOrder order){
82                _taskOrder = order;
83                _orderChanged = true;
84        }
85        //--------------------------------------------------------------------
86        void ITask::setTaskType(TaskType type){
87                this->_taskType = type;
88        }
89
90        //--------------------------------------------------------------------
91        void ITask::setTaskID(TaskId id){
92                this->_taskID = id;
93        }
94
95        //--------------------------------------------------------------------
96        void ITask::setTaskState(TaskState state){
97                this->_taskState = state;
98        }
99       
100        //--------------------------------------------------------------------
101        void ITask::setTaskProperty(TaskProperty proper){
102                this->_taskProperty = proper;
103        }
104
105        //--------------------------------------------------------------------
106        void ITask::setTaskName(const std::string& name){
107                _taskName = name;
108        }
109
110        struct _taskSort : std::less<SharedPtr<ITask> >
111        {
112                public:
113                        bool operator () (const SharedPtr<ITask>& a, const SharedPtr<ITask>& b)
114                        {
115                                return (*a) < (*b);
116                        }
117        };
118
119        //--------------------------------------------------------------------
120        Result ITask::addTaskDependency(SharedPtr<ITask> task)
121        {
122                // add the task into the list of dependencies
123                _taskDependencies.push_back(task);
124
125                // sort the dependency list
126                _taskDependencies.sort(_taskSort());
127               
128                // debug info
129                NR_Log(Log::LOG_KERNEL, Log::LL_DEBUG, "Task %s depends now on task %s", getTaskName(), task->getTaskName());
130
131                return OK;
132        }
133       
134        //--------------------------------------------------------------------
135        /*Result ITask::addTaskDependency(TaskId id)
136        {
137                _taskDependencies.push_back(id);
138
139                NR_Log(Log::LOG_KERNEL, Log::LL_DEBUG, "Task %s depends now on task id=%i", getTaskName(), id);
140
141                return OK;
142        }
143
144        //--------------------------------------------------------------------
145        Result ITask::addTaskDependency(const ITask& task)
146        {
147                return addTaskDependency(task.getTaskID());
148        }
149
150        //--------------------------------------------------------------------
151        Result ITask::addTaskDependency(const ITask* pTask)
152        {
153                return addTaskDependency(pTask->getTaskID());
154        }
155        */
156       
157        //--------------------------------------------------------------------
158        void ITask::_noticeSuspend(){
159                onSuspendTask();
160        }
161
162        //--------------------------------------------------------------------
163        void ITask::_noticeResume(){
164                onResumeTask();
165        }
166
167        //--------------------------------------------------------------------
168        void ITask::_noticeUpdate(){
169                updateTask();
170        }
171
172        //--------------------------------------------------------------------
173        void ITask::_noticeStop(){
174                stopTask();
175        }
176
177}; // end namespace
178
Note: See TracBrowser for help on using the repository browser.