Deployment
A deployment is the process of initialising an architecture, creating threads corresponding to components, and synchronizing and strating these threads.
A Deployment is then the main entry point of your MAUVE application. You can create a deployment either as a plain C++ executable, or as a library that will be loaded using the Scala Deployer.
Deployment Processes
The following code defines a deployment process that can be built as an executable:
int main(int argc, char** argv) {
int r = ::mauve::runtime::main(argc, argv);
if (r > 0) return r;
auto archi = new MyArchitecture();
auto depl = mk_abstract_deployer(archi);
archi->configure();
depl->create_tasks();
depl->activate();
depl->start();
depl->loop();
depl->stop();
archi->cleanup();
return 0;
}
The first line calls an helper function, mauve::runtime::main
, that provides
options to load configuration files (logging and property configurations).
Then an architecture objet archi is created, and bind to a deployer depl using mk_abstract_deployer
.
The deployement steps are then to:
- configure the architecture (
archi->configure()
) - create component tasks (
depl->create_tasks()
) - activate component tasks (
depl->activate()
) - start the component tasks (
depl->start()
) - suspend the deployer execution while the architecture components execute (
depl->loop()
)
If the process is terminated (using a signal for instance), then steps to cleanly end the deployment are:
- stopping the component tasks (
depl->stop()
) - cleaning the architecture (
archi->cleanup()
)
Scala Deployment
Documentation In Progress