CommRaT 2.0.0
C++20 Real-Time Messaging Framework
Loading...
Searching...
No Matches
module_main.hpp File Reference
#include <commrat/commrat.hpp>
#include <commrat/module/module_config.hpp>
#include <commrat/platform/threading.hpp>
#include <rfl.hpp>
#include <rfl/json.hpp>
#include <csignal>
#include <cstdlib>
#include <iostream>
#include <atomic>
#include <string>

Go to the source code of this file.

Namespaces

namespace  commrat
 CommRaT - Modern C++ Real-Time Communication Framework.
 

Macros

#define COMMRAT_MODULE_MAIN(ModuleType, Registry)
 Macro for creating standalone module binaries.
 

Functions

void commrat::signal_handler (int signal)
 Signal handler for graceful shutdown.
 
template<typename ModuleType , typename Registry >
int commrat::module_main (const ModuleConfig &config)
 Main entry point for standalone module binaries.
 
template<typename ModuleType , typename Registry >
int commrat::module_main (int argc, char **argv)
 Main entry point with argc/argv handling.
 

Variables

std::atomic< bool > commrat::g_shutdown_requested {false}
 

Macro Definition Documentation

◆ COMMRAT_MODULE_MAIN

#define COMMRAT_MODULE_MAIN (   ModuleType,
  Registry 
)
Value:
int main(int argc, char** argv) { \
return commrat::module_main<ModuleType, Registry>(argc, argv); \
}

Macro for creating standalone module binaries.

Generates main() that calls module_main<ModuleType, Registry>(argc, argv).

Supports three configuration modes:

  1. File config: ./module config.json
  2. CLI flags: ./module –system-id 10 –instance-id 1 –period 100000000
  3. Help: ./module –help
Parameters
ModuleTypeModule class to instantiate
RegistryMessage registry (CommRaT<...>)

Example:

class SensorModule : public MyApp::Module<Output<Data>, PeriodicInput> {
Data process() override { return Data{...}; }
};
COMMRAT_MODULE_MAIN(SensorModule, MyApp)
#define COMMRAT_MODULE_MAIN(ModuleType, Registry)
Macro for creating standalone module binaries.

Definition at line 166 of file module_main.hpp.