/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */ /* * @(#)persistence_service.h generated by: makeheader Wed Apr 8 00:45:17 2026 * * built from: service.ifc */ #ifndef persistence_service_h #define persistence_service_h #ifndef persistence_dll_h #include "persistence/persistence_dll.h" #endif #ifndef ndds_h #include "ndds/ndds_c.h" #endif #ifdef __cplusplus extern "C" { #endif struct RTI_PersistenceService; struct RTI_PersistenceServiceProperty { /*e * * @brief Path to @product configuration file * * If not \c NULL, this file is loaded; otherwise, * if \c cfg_strings is not \c NULL, those XML strings are loaded. * * \default NULL. */ char *cfg_file; /*e * @brief XML configuration represented as strings * * An array of strings that altogether make up an * XML document to configure @product. This parameter is used * only if \ref cfg_file is \c NULL. * * For example: * * \code * unsigned int MY_PERSISTENCE_SERVICE_CFG_SIZE = 2; * const char *MY_PERSISTENCE_SERVICE_CFG[MY_PERSISTENCE_SERVICE_CFG_SIZE] = { * " \ * \ * ", * "... \ * "}; * * property.cfg_strings = MY_PERSISTENCE_SERVICE_CFG; * property.cfg_strings_count = MY_PERSISTENCE_SERVICE_CFG_SIZE; * \endcode * * The reason for using an array instead of one single string is to * get around the limited size of literal strings in C. * In general, if you create the XML string dynamically * using one single string in the array, * setting \ref cfg_strings_count to 1 is enough: * * \code * property.cfg_strings = malloc(sizeof(char *)); * property.cfg_strings[0] = "..."; * property.cfg_strings_count = 1; * \endcode * * If your target system doesn't support a file system, you can * configure the service using XML strings. * * \default NULL. */ const char **cfg_strings; /*e * @brief Size of the array \ref cfg_strings * * \default 0. */ unsigned int cfg_strings_count; /*e * @brief Configuration name. * This parameter is required and it is used to find a * <persistence_service> matching tag in the configuration file. * * \default NULL. */ const char *cfg_name; /*e * @brief Assigns a name to the execution of the @product. * * Remote commands will refer to the @product using this name. * In addition, the name of DomainParticipants created by @product will * be based on this name. * * \default The value of cfg_name if different than NULL. * Otherwise, "RTI_Persistence_Service". */ char *application_name; /*e * @brief Set this to true to append the host name and process ID * to the @product application name. * * Used to get unique names for remote administration. * * \default DDS_BOOLEAN_FALSE */ DDS_Boolean identify_execution; /*e * @brief DDS domain ID for the DomainParticipants created by the service. * * \default -1 (Use the XML value) */ int domain_id; /*e * @brief Set this to true to enable remote administration or false to * disable it. * * \default DDS_BOOLEAN_FALSE */ DDS_Boolean enable_administration; /*e * @brief If \ref enable_administration is true, this is the domain ID * to use for remote administration. * * Takes precedence over the XML configuration. * If \ref enable_administration is false, this value is not used * even if remote administration is enabled in the XML configuration. * * \default 0 */ int administration_domain_id; /*e * @brief @product thread stack size, which controls the stack size for * the main service thread. * * \default RTI_OSAPI_THREAD_STACK_SIZE_DEFAULT */ int thread_stack_size; /*e * @brief The info directory of the running @product. * * The service writes a ps.pid file into this directory when it is started. * When the service finalizes the file is deleted. * * The ps.pid file is used to check if the last execution of @product * finished gracefully or there were errors. * * \default NULL (the file ps.pid will not be used) */ char *info_dir; /*e * @brief Indicates whether or not @product must restore its state from * the persistent storage. * * * * \default -1 Use the XML value */ int restore; /*e * @brief The verbosity of @product * * Values: * * * \default RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS */ int service_verbosity; /*e * @brief The verbosity of \ndds Core Libraries * * Values: * * * \default RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS */ int dds_verbosity; /*e * @brief Path to @product license file * * If not \c NULL, this file is checked for a valid license; otherwise, * default location will be used. This parameter is only used if your * installation requires a license file. * * \default NULL. */ char *license_file; /*e * @brief Enable database locking * * @product will lock the database by creating an entry in a specific table * in the database. * * This entry is to avoid multiple instances of @product accessing the same * database at the same time. * * \default DDS_BOOLEAN_TRUE */ DDS_Boolean enable_database_locking; /*e * @brief Initialize the DomainParticipantFactory. * * This field allows enabling or disabling the initialization of the * DomainParticipantFactory when creating a Persistence Service instance. * * When set to DDS_BOOLEAN_TRUE, the Persistence Service will initialize * the DomainParticipantFactory from XML if a profile has * is_default_participant_factory_profile attribute set to true. This is * particularly useful for enabling the use of features such as Monitoring * Library 2.0 in Persistence Service without requiring additional programmatic * setup. * * If your application has already initialized the DomainParticipantFactory * before creating the Persistence Service instance, you may want to set * this parameter to DDS_BOOLEAN_FALSE to prevent overwriting any QoS * settings previously configured. * * \default DDS_BOOLEAN_TRUE */ DDS_Boolean initialize_dp_factory; }; extern PERSISTENCEDllVariable const struct RTI_PersistenceServiceProperty RTI_PersistenceServiceProperty_INITIALIZER; extern PERSISTENCEDllVariable const int RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_INFO; extern PERSISTENCEDllVariable const int RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_WARNINGS; extern PERSISTENCEDllVariable const int RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS; extern PERSISTENCEDllVariable const int RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_SILENT; extern PERSISTENCEDllVariable const int RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_IGNORE; extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_get_participant_qos( const struct RTI_PersistenceService *self, struct DDS_DomainParticipantQos *domain_participant_qos, const char *participant_name); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_set_participant_qos( struct RTI_PersistenceService *self, const char *participant_name, const struct DDS_DomainParticipantQos *domain_participant_qos); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_get_publisher_qos( const struct RTI_PersistenceService *self, struct DDS_PublisherQos *publisher_qos, const char *participant_name, const char *persistence_group_name); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_set_publisher_qos( struct RTI_PersistenceService *self, const char *participant_name, const char *persistence_group_name, const struct DDS_PublisherQos *publisher_qos); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_get_subscriber_qos( const struct RTI_PersistenceService *self, struct DDS_SubscriberQos *subscriber_qos, const char *participant_name, const char *persistence_group_name); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_set_subscriber_qos( struct RTI_PersistenceService *self, const char *participant_name, const char *persistence_group_name, const struct DDS_SubscriberQos *subscriber_qos); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_is_started( struct RTI_PersistenceService *self); extern PERSISTENCEDllExport struct RTI_PersistenceService * RTI_PersistenceService_new( struct RTI_PersistenceServiceProperty *property); extern PERSISTENCEDllExport void RTI_PersistenceService_delete(struct RTI_PersistenceService *self); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_start(struct RTI_PersistenceService *self); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_stop(struct RTI_PersistenceService *self); extern PERSISTENCEDllExport DDS_Boolean RTI_PersistenceService_initialize_globals(void); extern PERSISTENCEDllExport void RTI_PersistenceService_finalize_globals(void); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* persistence_service_h */