view include/TaskManager/TaskManagerImpl.h @ 199:1fd0107ebb25 draft

add SceneGraph(ieshoot), add SystemSceneGraph(Camera)
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Mon, 26 Jan 2009 14:02:45 +0900 (2009-01-26)
parents 028ffc9c0375
children 3fc86ddf5d1c
line wrap: on
line source
#ifndef INCLUDED_TASK_MANAGER_IMPL
#define INCLUDED_TASK_MANAGER_IMPL

#ifndef INCLUDED_MAIL_MANAGER
#  include "MailManager.h"
#endif

#ifndef INCLUDED_BUFFER_MANAGER
#  include "BufferManager.h"
#endif

#ifndef INCLUDED_LIST_DATA
#  include "ListData.h"
#endif

class TaskManagerImpl {
public:
    /* constructor */
    TaskManagerImpl(int num = 1);
    virtual ~TaskManagerImpl(void) {}

    /* variables */
    int machineNum;
    TaskQueuePtr activeTaskQueue;
    TaskQueuePtr waitTaskQueue;
    BufferManager *bufferManager;

    /* functions */
    // system
    virtual void init(void) = 0;
    virtual void run(void) = 0;
    virtual void append_activeTask(HTaskPtr);
    virtual void append_waitTask(HTaskPtr);

    void check_task_finish(HTaskPtr task);
    void notify_wait_taskQueue(HTaskPtr depend, TaskQueuePtr list);
    TaskQueuePtr remove_taskQueue(TaskQueuePtr list, TaskQueuePtr task);
    TaskQueuePtr remove_taskQueue_eq_task(TaskQueuePtr list, HTaskPtr task);
    void remove_taskQueue_all(TaskQueuePtr list);
    void wakeup_waitTask(void);

    void systask_init(void);

    // user
    HTaskPtr create_task(int cmd);
    void set_task_depend(HTaskPtr master, HTaskPtr slave);
    void spawn_task(HTaskPtr);
    void set_task_cpu(HTaskPtr, CPU_TYPE);
    virtual void* allocate(int size) = 0;
};
#endif