344 lines
10 KiB
C
344 lines
10 KiB
C
/* (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] = {
|
|
* "<dds><persistence_service> \
|
|
* <participant name=\"defaultParticipant\"> \
|
|
* <persistence_group name="\"groupName\">",
|
|
* "... \
|
|
* </dds>"};
|
|
*
|
|
* 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] = "<dds><routing_service>...</dds>";
|
|
* 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.
|
|
*
|
|
* <ul>
|
|
* <li> Set to 0 to not restore the state
|
|
* <li> Set to 1 to restore the state
|
|
* <li> Set to -1 to use the XML value for restore
|
|
* </ul>
|
|
*
|
|
* \default -1 Use the XML value
|
|
*/
|
|
int restore;
|
|
|
|
/*e
|
|
* @brief The verbosity of @product
|
|
*
|
|
* Values:
|
|
* <ul>
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_SILENT
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_WARNINGS
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_INFO
|
|
* </ul>
|
|
*
|
|
* \default RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS
|
|
*/
|
|
int service_verbosity;
|
|
|
|
/*e
|
|
* @brief The verbosity of \ndds Core Libraries
|
|
*
|
|
* Values:
|
|
* <ul>
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_IGNORE
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_SILENT
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_EXCEPTIONS
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_WARNINGS
|
|
* <li> \ref RTI_PERSISTENCE_SERVICE_LOG_VERBOSITY_INFO
|
|
* </ul>
|
|
*
|
|
* \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 */
|