Cinnamon RenderServer - Introduction
An introduction to the Cinnamon RenderServer
The Cinnamon RenderServer is a separate process that may run on the main server or its own machine. It searches the configured repositories for render tasks, downloads the required Cinnamon objects from the repository and renders them in the target format. The RenderServer does not provide transformation functions by itself but relies on external programs to do the real work.
The render process
The user creates a render task, which is a cinnamon object of type RenderTask. This object contains in its custom metadata field the required parameters for the render process. The RenderServer searches the configured repositories for open tasks and for each one found starts the corresponding external program which is defined in the configuration file. The external code is supplied with the id of the Cinnamon object and the name of the repository. It connects to the Cinnamon server through a client library (currently, both .NET or Java libraries are available) and retrieves the task object. Then it performs the rendering and attaches the result to the task object. Afterwards, it makes the necessary changes to the tasks object type and updates the format info etc. After a successful render task is finished, the task object has been transformed into a new rendition. In case something goes wrong, the process will add any error messages as metadata to the task object.
If the RenderServer process is terminated while some tasks are still active, it will reset all unfinished tasks (with lifecycle status "rendering") to new during the next start phase, so the render tasks can redo them correctly.

