Handle incoming requests from php backend and forward them to actual workers, also handle answers from workers which has to be saved to the central database. (possibly files can be transfered through QM).
Program which executes and evaluates tasks given by QM. Its internally divided into net part (communication with QM) and evaluation part which evaluates task itself.
* **Submission** - It corresponds with job. But logically submission is larger term enclosing user submit of exercise (solution) and all other information which are needed for evaluation.
* **Job** - Basically structure which is transfered from QM (Aka. one request from QM is job). Internally set of tasks. Job itself has configuration which includes all information about this one submission.
* **Task** - Atomic piece of work which can execute external program or some internal command.
* **Tests** - Tests are divided into groups which belongs to tasks, one task can have one or more test files. These test files can be send to standard input or just be there for the use from program.