84 lines
1.4 KiB
C++
84 lines
1.4 KiB
C++
#ifndef KERNEL_H_
|
|
#define KERNEL_H_
|
|
|
|
#include "Referenced.h"
|
|
|
|
#include <vector>
|
|
#include <iostream>
|
|
#include <exception>
|
|
#include <list>
|
|
|
|
namespace BlueCore
|
|
{
|
|
|
|
class Kernel;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class KernelTask : public Referenced
|
|
{
|
|
protected:
|
|
|
|
~KernelTask()
|
|
{
|
|
}
|
|
|
|
public:
|
|
|
|
KernelTask()
|
|
{
|
|
}
|
|
|
|
virtual void tick()
|
|
{
|
|
}
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class Kernel : public Referenced
|
|
{
|
|
private:
|
|
|
|
struct KernelTaskContainer
|
|
{
|
|
ref_ptr<KernelTask> _Task;
|
|
int _Priority;
|
|
|
|
KernelTaskContainer(KernelTask* task, int priority) :
|
|
_Task(task), _Priority(priority)
|
|
{
|
|
}
|
|
|
|
bool operator <(const KernelTaskContainer& other) const
|
|
{
|
|
return (_Priority > other._Priority);
|
|
}
|
|
};
|
|
|
|
std::list<KernelTaskContainer> _Tasks;
|
|
std::list<KernelTaskContainer> _AddedTasks;
|
|
std::list<KernelTask*> _RemovedTasks;
|
|
bool _Changed;
|
|
bool _Clear;
|
|
|
|
protected:
|
|
|
|
~Kernel()
|
|
{
|
|
}
|
|
|
|
public:
|
|
|
|
Kernel();
|
|
|
|
void addTask(KernelTask* task, int priority);
|
|
void removeTask(KernelTask* task);
|
|
void removeAllTasks();
|
|
void setTaskPriority(KernelTask* task, int priority);
|
|
bool tick();
|
|
};
|
|
|
|
} // namespace BlueCore
|
|
|
|
#endif /*KERNEL_H_*/
|
|
|