source: nrEngine/src/ITask.cpp @ 17

Revision 17, 5.3 KB checked in by art, 12 years ago (diff)
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(){
29                init();
30                setTaskName(_taskName);
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                setTaskName("");
44        }
45       
46        //--------------------------------------------------------------------
47        ITask::~ITask(){
48
49        }
50
51        //--------------------------------------------------------------------
52        bool ITask::operator <  (const ITask &t){
53                return this->_taskOrder < t._taskOrder;
54        }
55
56        //--------------------------------------------------------------------
57        bool ITask::operator == (const ITask &t){
58                return this->_taskOrder == t._taskOrder;
59        }
60
61        //--------------------------------------------------------------------
62        bool ITask::operator <= (const ITask &t){
63                return (*this < t) || (*this == t);
64        }
65
66        //--------------------------------------------------------------------
67        bool ITask::operator >  (const ITask &t){
68                return !(*this <= t) ;
69        }
70
71        //--------------------------------------------------------------------
72        bool ITask::operator >= (const ITask &t){
73                return !(*this < t) || (*this == t);
74        }
75
76        //--------------------------------------------------------------------
77        bool ITask::operator != (const ITask &t){
78                return !(*this == t);
79        }
80
81        //--------------------------------------------------------------------
82        void ITask::setTaskOrder(TaskOrder order){
83                _taskOrder = order;
84                _orderChanged = true;
85        }
86        //--------------------------------------------------------------------
87        void ITask::setTaskType(TaskType type){
88                this->_taskType = type;
89        }
90
91        //--------------------------------------------------------------------
92        void ITask::setTaskID(TaskId id){
93                this->_taskID = id;
94        }
95
96        //--------------------------------------------------------------------
97        void ITask::setTaskState(TaskState state){
98                this->_taskState = state;
99        }
100       
101        //--------------------------------------------------------------------
102        void ITask::setTaskProperty(TaskProperty proper){
103                this->_taskProperty = proper;
104        }
105
106        //--------------------------------------------------------------------
107        void ITask::setTaskName(const ::std::string& name){
108                strncpy(_taskName, name.c_str(), 63);
109        }
110
111        struct _taskSort : std::less<SharedPtr<ITask> >
112        {
113                public:
114                        bool operator () (const SharedPtr<ITask>& a, const SharedPtr<ITask>& b)
115                        {
116                                return (*a) < (*b);
117                        }
118        };
119
120        //--------------------------------------------------------------------
121        Result ITask::addTaskDependency(SharedPtr<ITask> task)
122        {
123                // add the task into the list of dependencies
124                _taskDependencies.push_back(task);
125
126                // sort the dependency list
127                _taskDependencies.sort(_taskSort());
128               
129                // debug info
130                NR_Log(Log::LOG_KERNEL, Log::LL_DEBUG, "Task %s depends now on task %s", getTaskName(), task->getTaskName());
131
132                return OK;
133        }
134       
135        //--------------------------------------------------------------------
136        /*Result ITask::addTaskDependency(TaskId id)
137        {
138                _taskDependencies.push_back(id);
139
140                NR_Log(Log::LOG_KERNEL, Log::LL_DEBUG, "Task %s depends now on task id=%i", getTaskName(), id);
141
142                return OK;
143        }
144
145        //--------------------------------------------------------------------
146        Result ITask::addTaskDependency(const ITask& task)
147        {
148                return addTaskDependency(task.getTaskID());
149        }
150
151        //--------------------------------------------------------------------
152        Result ITask::addTaskDependency(const ITask* pTask)
153        {
154                return addTaskDependency(pTask->getTaskID());
155        }
156        */
157       
158        //--------------------------------------------------------------------
159        void ITask::_noticeSuspend(){
160                onSuspendTask();
161        }
162
163        //--------------------------------------------------------------------
164        void ITask::_noticeResume(){
165                onResumeTask();
166        }
167
168        //--------------------------------------------------------------------
169        void ITask::_noticeUpdate(){
170                updateTask();
171        }
172
173        //--------------------------------------------------------------------
174        void ITask::_noticeStop(){
175                stopTask();
176        }
177
178}; // end namespace
179
Note: See TracBrowser for help on using the repository browser.