Source Code
|
Path:
|
Files:
main.cpp
This is the entry point of the process. This method will return zero
if the execution was successful.
-
The first step of the main method is to block all signals for this thread and all child threads. It is necessary that only the
signalhandlerthread can react on signals. -
The next step is the initialization of logging. This step is basically reading the configuration files and is configuring the logging settings at runtime.
-
Afterwards the initialization of the logging is supposed to be successfully done. This is checked by the if statement.
-
The following step is to create the application object and call the run method of it.
application.h / application.cpp
application.h
The file application.h gives the definition of the application class.
The application.cpp is providing the implementation of the class
defined in the application.h file.
Constructor
The constructor of the application class is
basically performing the initialization of the process. In this case the
signalhandler thread is started. You could for example add the parsing
of arguments, some configuration files or read some persistent data at
this point.
Destructor
The destructor is setting the member variable
exit_requested_ to true. This member variable can be used to
identify that the destruction of this object was triggered. So, you
could terminate the tasks you are currently performing.
SIGTERM or SIGINT
Afterwards the destructor is checking if exit was requested by sending
SIGTERM or SIGINT. If not the termination of the signal handler
thread is triggered to shut down the application. Finally, the
destructor will wait till all threads have joined (Here just the signal
handler thread). Here you can add the logic to persist some data before
shutting down.
|
Do not use this to store safety critical (ASIL related) information. |
StartSignalHandlerThread
The method StartSignalHandlerThread is basically just starting the
signal handler thread, setting its name, and returning an
ara::core::Result object containing either the process id or the
corresponding error.
Run
The Run method is the logic of the application.
-
If the application is reaching this point and the initialization went well it is reporting the application state
kRunningto theExecutionmanager. -
Afterwards the example is printing a log message.
-
As a last step the application state
kTerminatingis reported to theExecutionmanager.
SignalHandlerThread
The SignalHandlerThread method is describing the behavior of the
signal handler thread.
This thread is basically just waiting for any signal. If the signal is
either SIGINT or SIGTERM the application is supposed to shut down.
This is triggered by setting the member variable
exit_requested_ to true.
If another signal was received it will be ignored and the thread will wait for another arriving signal.
hello_world_error_domain.h / hello_world_error_domain.cpp
|
This is an example on how you can use the |
The hello_world_error_domain.h file is giving the
definition of the HelloWorldErrorDomain class.
The hello_world_error_domain.cpp is providing the
implementation of the class defined in
hello_world_error_domain.h file.
This class is describing an ErrorDomain and is used to identify if an
error occurred during the startup of the SignalHandlerThread.