/** @page engine_controller Engine Controller module @section Overview Engine Controller module provides encapsulated multi-thread environment plus its control.
@image html overview_engine_controller.png "Software architecture of Engine Controller module" It uses an internal object called "Task", and it contains - A pointer to a user-registered function - Input/output parameters of the function and relationship to other Tasks Engine Controller provides two kinds of Tasks - Sync and Async. - Sync Tasks return after execution finish. - Async Tasks return before execution finish, and afterwards call user-specified callback when the execution finished. User need to define and register expected Tasks in advnace before using it.
And by registering queueing rule connected to user Tasks, user may control their processing order.
For example, precedent condition such as "Task B should be executed after Task A has finished." can be specified. Engine Controller module has following sub implementations with each corresponding roles.
- Task generator
Provides APIs to generate and register Task object, and to register between-Tasks relationship called "Queuing rule".
- Task Manager
Manages user-registered Tasks and their relationship with other Tasks internally.
- Task Executor
Executes/cancels user-registerd Tasks on demand.
*/