RTI Connext Modern C++ API Version 7.3.0
Foo_publisher.cxx

The unmodified publication example generated by rtiddsgen using the C++11 option for the -language flag.

See also
Publication Example
/*
* (c) Copyright, Real-Time Innovations, 2020. All rights reserved.
* RTI grants Licensee a license to use, modify, compile, and create derivative
* works of the software solely for use with RTI Connext DDS. Licensee may
* redistribute copies of the software provided that all such copies are subject
* to this license. The software is provided "as is", with no warranty of any
* type, including any warranty for fitness for any purpose. RTI is under no
* obligation to maintain or support the software. RTI shall not be liable for
* any incidental or consequential damages arising out of the use or inability
* to use the software.
*/
#include <iostream>
#include <dds/pub/ddspub.hpp>
#include <rti/util/util.hpp> // for sleep()
#include <rti/config/Logger.hpp> // for logging
// alternatively, to include all the standard APIs:
// <dds/dds.hpp>
// or to include both the standard APIs and extensions:
// <rti/rti.hpp>
//
// For more information about the headers and namespaces, see:
// https://community.rti.com/static/documentation/connext-dds/7.3.0/doc/api/connext_dds/api_cpp2/group__DDSNamespaceModule.html
// For information on how to use extensions, see:
// https://community.rti.com/static/documentation/connext-dds/7.3.0/doc/api/connext_dds/api_cpp2/group__DDSCpp2Conventions.html
#include "application.hpp" // for command line parsing and ctrl-c
#include "Foo.hpp"
void run_publisher_application(unsigned int domain_id, unsigned int sample_count)
{
// DDS objects behave like shared pointers or value types
// (see https://community.rti.com/best-practices/use-modern-c-types-correctly)
// Start communicating in a domain, usually one participant per application
// Create a Topic with a name and a datatype
dds::topic::Topic< ::MyOtherType> topic(participant, "Example MyOtherType");
// Create a Publisher
dds::pub::Publisher publisher(participant);
// Create a DataWriter with default QoS
dds::pub::DataWriter< ::MyOtherType> writer(publisher, topic);
::MyOtherType data;
// Main loop, write data
for (unsigned int samples_written = 0;
!application::shutdown_requested && samples_written < sample_count;
samples_written++) {
// Modify the data to be written here
data.m1(static_cast< int32_t>(samples_written));
std::cout << "Writing ::MyOtherType, count " << samples_written << std::endl;
writer.write(data);
// Send once every second
}
}
int main(int argc, char *argv[])
{
using namespace application;
// Parse arguments and handle control-C
auto arguments = parse_arguments(argc, argv);
if (arguments.parse_result == ParseReturn::exit) {
return EXIT_SUCCESS;
} else if (arguments.parse_result == ParseReturn::failure) {
return EXIT_FAILURE;
}
setup_signal_handlers();
// Sets Connext verbosity to help debugging
rti::config::Logger::instance().verbosity(arguments.verbosity);
try {
run_publisher_application(arguments.domain_id, arguments.sample_count);
} catch (const std::exception& ex) {
// This will catch DDS exceptions
std::cerr << "Exception in run_publisher_application(): " << ex.what()
<< std::endl;
return EXIT_FAILURE;
}
// Releases the memory used by the participant factory. Optional at
// application exit
return EXIT_SUCCESS;
}
<<value-type>> Represents a time interval
Definition: Duration.hpp:44
<<reference-type>> Container for all dds::core::Entity objects.
Definition: TDomainParticipant.hpp:63
static void finalize_participant_factory()
Finalize the DomainParticipantFactory.
Definition: TDomainParticipant.hpp:396
<<reference-type>> Allows an application to publish data for a dds::topic::Topic
Definition: TDataWriter.hpp:58
void write(const T &instance_data)
Modifies the value of a data instance.
Definition: TDataWriter.hpp:296
<<reference-type>> A publisher is the object responsible for the actual dissemination of publications...
Definition: TPublisher.hpp:52
int32_t domain_id() const
<<extension>> Get the domain ID associated with the discovered dds::domain::DomainParticipant.
Definition: BuiltinTopicImpl.hpp:245
<<reference-type>> Topic is the most basic description of the data to be published and subscribed.
Definition: TTopic.hpp:56
static Logger & instance()
Get the singleton instance of this type.
Definition: Logger.hpp:441
Verbosity verbosity()
Get the verbosity at which RTI Connext is currently logging diagnostic information.
void sleep(const dds::core::Duration &durationIn)
Blocks the calling thread for the specified duration.