Skip to content

iox::roudi::ProcessManager🔗

Inherits from iox::roudi::ProcessManagerInterface

Public Types🔗

Name
enum TerminationFeedback
using cxx::list< Process, MAX_PROCESS_NUMBER > ProcessList_t
using iox::runtime::PortConfigInfo PortConfigInfo

Public Functions🔗

Name
ProcessManager(RouDiMemoryInterface & roudiMemoryInterface, PortManager & portManager, const version::CompatibilityCheckLevel compatibilityCheckLevel)
virtual ~ProcessManager() override =default
ProcessManager(const ProcessManager & other)
ProcessManager & operator=(const ProcessManager & other)
bool registerProcess(const RuntimeName_t & name, const uint32_t pid, const posix::PosixUser user, const bool isMonitored, const int64_t transmissionTimestamp, const uint64_t sessionId, const version::VersionInfo & versionInfo)
Registers a process at the ProcessManager.
bool unregisterProcess(const RuntimeName_t & name)
Unregisters a process at the ProcessManager.
void killAllProcesses()
Kills all registered processes. If RouDi doesn't have sufficient rights to kill the process, the process is considered killed.
void printWarningForRegisteredProcessesAndClearProcessList()
Informs the user about the processes which are registered and then clears the process list.
bool isAnyRegisteredProcessStillRunning()
Is one or more of the registered processes running?
void handleProcessShutdownPreparationRequest(const RuntimeName_t & name)
A process is about to shut down and needs to be unblock by a potentially block publisher.
void requestShutdownOfAllProcesses()
Tries to gracefully terminate all registered processes.
void updateLivelinessOfProcess(const RuntimeName_t & name)
void findServiceForProcess(const RuntimeName_t & name, const capro::ServiceDescription & service)
void addInterfaceForProcess(const RuntimeName_t & name, capro::Interfaces interface, const NodeName_t & node)
void addApplicationForProcess(const RuntimeName_t & name)
void addNodeForProcess(const RuntimeName_t & process, const NodeName_t & node)
void addSubscriberForProcess(const RuntimeName_t & name, const capro::ServiceDescription & service, const popo::SubscriberOptions & subscriberOptions, const PortConfigInfo & portConfigInfo =PortConfigInfo())
void addPublisherForProcess(const RuntimeName_t & name, const capro::ServiceDescription & service, const popo::PublisherOptions & publisherOptions, const PortConfigInfo & portConfigInfo =PortConfigInfo())
void addConditionVariableForProcess(const RuntimeName_t & runtimeName)
void initIntrospection(ProcessIntrospectionType * processIntrospection)
void run()
popo::PublisherPortData * addIntrospectionPublisherPort(const capro::ServiceDescription & service, const RuntimeName_t & process_name)
void sendMessageNotSupportedToRuntime(const RuntimeName_t & name)
Notify the application that it sent an unsupported message.
virtual void sendServiceRegistryChangeCounterToProcess(const RuntimeName_t & process_name) override

Additional inherited members🔗

Public Functions inherited from iox::roudi::ProcessManagerInterface

Name
virtual ~ProcessManagerInterface() =default

Public Types Documentation🔗

enum TerminationFeedback🔗

Enumerator Value Description
SEND_ACK_TO_PROCESS
DO_NOT_SEND_ACK_TO_PROCESS

using ProcessList_t🔗

using iox::roudi::ProcessManager::ProcessList_t =  cxx::list<Process, MAX_PROCESS_NUMBER>;

using PortConfigInfo🔗

using iox::roudi::ProcessManager::PortConfigInfo =  iox::runtime::PortConfigInfo;

Public Functions Documentation🔗

function ProcessManager🔗

ProcessManager(
    RouDiMemoryInterface & roudiMemoryInterface,
    PortManager & portManager,
    const version::CompatibilityCheckLevel compatibilityCheckLevel
)

function ~ProcessManager🔗

virtual ~ProcessManager() override =default

function ProcessManager🔗

ProcessManager(
    const ProcessManager & other
)

function operator=🔗

ProcessManager & operator=(
    const ProcessManager & other
)

function registerProcess🔗

bool registerProcess(
    const RuntimeName_t & name,
    const uint32_t pid,
    const posix::PosixUser user,
    const bool isMonitored,
    const int64_t transmissionTimestamp,
    const uint64_t sessionId,
    const version::VersionInfo & versionInfo
)

Registers a process at the ProcessManager.

Parameters:

  • name of the process which wants to register
  • pid is the host system process id
  • user is the posix user id to which the process belongs
  • isMonitored indicates if the process should be monitored for being alive
  • transmissionTimestamp is an ID for the application to check for the expected response
  • sessionId is an ID generated by RouDi to prevent sending outdated IPC channel transmission
  • versionInfo Version of iceoryx used

Return: false if process was already registered, true otherwise

function unregisterProcess🔗

bool unregisterProcess(
    const RuntimeName_t & name
)

Unregisters a process at the ProcessManager.

Parameters:

  • name of the process which wants to unregister

Return: true if known process was unregistered, false if process is unknown

function killAllProcesses🔗

void killAllProcesses()

Kills all registered processes. If RouDi doesn't have sufficient rights to kill the process, the process is considered killed.

function printWarningForRegisteredProcessesAndClearProcessList🔗

void printWarningForRegisteredProcessesAndClearProcessList()

Informs the user about the processes which are registered and then clears the process list.

function isAnyRegisteredProcessStillRunning🔗

bool isAnyRegisteredProcessStillRunning()

Is one or more of the registered processes running?

Return: true if one or more of the registered processes is running, false otherwise

function handleProcessShutdownPreparationRequest🔗

void handleProcessShutdownPreparationRequest(
    const RuntimeName_t & name
)

A process is about to shut down and needs to be unblock by a potentially block publisher.

Parameters:

  • name of the process runtime which is about to shut down

function requestShutdownOfAllProcesses🔗

void requestShutdownOfAllProcesses()

Tries to gracefully terminate all registered processes.

function updateLivelinessOfProcess🔗

void updateLivelinessOfProcess(
    const RuntimeName_t & name
)

function findServiceForProcess🔗

void findServiceForProcess(
    const RuntimeName_t & name,
    const capro::ServiceDescription & service
)

function addInterfaceForProcess🔗

void addInterfaceForProcess(
    const RuntimeName_t & name,
    capro::Interfaces interface,
    const NodeName_t & node
)

function addApplicationForProcess🔗

void addApplicationForProcess(
    const RuntimeName_t & name
)

function addNodeForProcess🔗

void addNodeForProcess(
    const RuntimeName_t & process,
    const NodeName_t & node
)

function addSubscriberForProcess🔗

void addSubscriberForProcess(
    const RuntimeName_t & name,
    const capro::ServiceDescription & service,
    const popo::SubscriberOptions & subscriberOptions,
    const PortConfigInfo & portConfigInfo =PortConfigInfo()
)

function addPublisherForProcess🔗

void addPublisherForProcess(
    const RuntimeName_t & name,
    const capro::ServiceDescription & service,
    const popo::PublisherOptions & publisherOptions,
    const PortConfigInfo & portConfigInfo =PortConfigInfo()
)

function addConditionVariableForProcess🔗

void addConditionVariableForProcess(
    const RuntimeName_t & runtimeName
)

function initIntrospection🔗

void initIntrospection(
    ProcessIntrospectionType * processIntrospection
)

function run🔗

void run()

function addIntrospectionPublisherPort🔗

popo::PublisherPortData * addIntrospectionPublisherPort(
    const capro::ServiceDescription & service,
    const RuntimeName_t & process_name
)

function sendMessageNotSupportedToRuntime🔗

void sendMessageNotSupportedToRuntime(
    const RuntimeName_t & name
)

Notify the application that it sent an unsupported message.

function sendServiceRegistryChangeCounterToProcess🔗

virtual void sendServiceRegistryChangeCounterToProcess(
    const RuntimeName_t & process_name
) override

Reimplements: iox::roudi::ProcessManagerInterface::sendServiceRegistryChangeCounterToProcess


Updated on 17 June 2021 at 11:15:27 CEST