The unmodified subscription example generated by rtiddsgen using the C++11 option for the -language flag.
#include <algorithm>
#include <iostream>
#include <dds/sub/ddssub.hpp>
#include <dds/core/ddscore.hpp>
#include <rti/config/Logger.hpp>
#include "Foo.hpp"
#include "application.hpp"
{
int count = 0;
for (auto sample : samples) {
if (sample.info().valid()) {
count++;
std::cout << sample.data() << std::endl;
} else {
std::cout << "Instance state changed to "
<< sample.info().state().instance_state() << std::endl;
}
}
return count;
}
void run_subscriber_application(
unsigned int domain_id,
unsigned int sample_count)
{
unsigned int samples_read = 0;
reader,
[reader, &samples_read]() { samples_read += process_data(reader); });
waitset += read_condition;
while (!application::shutdown_requested && samples_read < sample_count) {
std::cout << "::MyOtherType subscriber sleeping up to 1 sec..." << std::endl;
}
}
int main(int argc, char *argv[])
{
using namespace application;
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();
try {
run_subscriber_application(arguments.domain_id, arguments.sample_count);
} catch (const std::exception& ex) {
std::cerr << "Exception in run_subscriber_application(): " << ex.what()
<< std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
<<value-type>> Represents a time interval
Definition: Duration.hpp:44
<<reference-type>> Allows an application to wait until one or more of the attached Condition objects ...
Definition: TWaitSet.hpp:56
void dispatch(const dds::core::Duration &timeout)
Waits for at least one of the attached conditions to trigger and then dispatches the events.
Definition: TWaitSet.hpp:218
<<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 the application to: (1) declare the data it wishes to receive (i....
Definition: TDataReader.hpp:74
LoanedSamples< T > take()
Take all samples using the default filter state.
Definition: TDataReader.hpp:1160
<<move-only-type>> Provides temporary access to a collection of samples (data and info) from a DataRe...
Definition: LoanedSamplesImpl.hpp:77
<<reference-type>> A subscriber is the object responsible for actually receiving data from a subscrip...
Definition: TSubscriber.hpp:49
<<reference-type>> Condition specifically dedicated to read operations and attached to one dds::sub::...
Definition: TReadCondition.hpp:40
static DataState any()
Create a DataState with InstanceState::any(), ViewState::any(), and SampleState::any()
Definition: status/DataState.hpp:470
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.