#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "HelloWorld.h"
#include "HelloWorldSupport.h"
#include "ndds/ndds_cpp.h"
#include "application.h"
using namespace application;
static int shutdown_participant(
const char *shutdown_message,
int status);
int run_publisher_application(unsigned int domain_id, unsigned int sample_count)
{
domain_id,
NULL ,
if (participant == NULL) {
return shutdown_participant(participant, "create_participant error", EXIT_FAILURE);
}
NULL ,
if (publisher == NULL) {
return shutdown_participant(participant, "create_publisher error", EXIT_FAILURE);
}
const char *type_name = HelloWorldTypeSupport::get_type_name();
HelloWorldTypeSupport::register_type(participant, type_name);
return shutdown_participant(participant, "register_type error", EXIT_FAILURE);
}
"Example HelloWorld",
type_name,
NULL ,
if (topic == NULL) {
return shutdown_participant(participant, "create_topic error", EXIT_FAILURE);
}
topic,
NULL ,
if (untyped_writer == NULL) {
return shutdown_participant(participant, "create_datawriter error", EXIT_FAILURE);
}
HelloWorldDataWriter *typed_writer =
HelloWorldDataWriter::narrow(untyped_writer);
if (typed_writer == NULL) {
return shutdown_participant(participant, "DataWriter narrow error", EXIT_FAILURE);
}
HelloWorld *data = HelloWorldTypeSupport::create_data();
if (data == NULL) {
return shutdown_participant(
participant,
"HelloWorldTypeSupport::create_data error",
EXIT_FAILURE);
}
for (unsigned int samples_written = 0;
!shutdown_requested && samples_written < sample_count;
++samples_written) {
std::cout << "Writing HelloWorld, count " << samples_written
<< std::endl;
std::cerr << "write error " << retcode << std::endl;
}
}
retcode = HelloWorldTypeSupport::delete_data(data);
std::cerr << "HelloWorldTypeSupport::delete_data error " << retcode
<< std::endl;
}
return shutdown_participant(participant, "Shutting down", EXIT_SUCCESS);
}
static int shutdown_participant(
const char *shutdown_message,
int status)
{
std::cout << shutdown_message << std::endl;
if (participant != NULL) {
std::cerr << "delete_contained_entities error " << retcode
<< std::endl;
status = EXIT_FAILURE;
}
std::cerr << "delete_participant error " << retcode << std::endl;
status = EXIT_FAILURE;
}
}
return status;
}
int main(int argc, char *argv[])
{
ApplicationArguments arguments;
parse_arguments(arguments, argc, argv);
if (arguments.parse_result == PARSE_RETURN_EXIT) {
return EXIT_SUCCESS;
} else if (arguments.parse_result == PARSE_RETURN_FAILURE) {
return EXIT_FAILURE;
}
setup_signal_handlers();
int status = run_publisher_application(arguments.domain_id, arguments.sample_count);
std::cerr << "finalize_instance error " << retcode << std::endl;
status = EXIT_FAILURE;
}
return status;
}
<<interface>> Allows an application to set the value of the data to be published under a given DDSTop...
Definition: publication.ifcxx:494
static DDS_ReturnCode_t finalize_instance()
<<extension>> Destroys the singleton instance of this class.
<<interface>> Container for all DDSDomainEntity objects.
Definition: domain.ifcxx:191
virtual DDS_ReturnCode_t delete_contained_entities()=0
Delete all the entities that were created by means of the "create" operations on the DDSDomainPartici...
virtual DDSTopic * create_topic(const char *topic_name, const char *type_name, const DDS_TopicQos &qos, DDSTopicListener *listener, DDS_StatusMask mask)=0
Creates a DDSTopic with the desired QoS policies and attaches to it the specified DDSTopicListener.
virtual DDSPublisher * create_publisher(const DDS_PublisherQos &qos, DDSPublisherListener *listener, DDS_StatusMask mask)=0
Creates a DDSPublisher with the desired QoS policies and attaches to it the specified DDSPublisherLis...
<<interface>> A publisher is the object responsible for the actual dissemination of publications.
Definition: publication.ifcxx:299
virtual DDSDataWriter * create_datawriter(DDSTopic *topic, const DDS_DataWriterQos &qos, DDSDataWriterListener *listener, DDS_StatusMask mask)=0
Creates a DDSDataWriter that will be attached and belong to the DDSPublisher.
<<interface>> The most basic description of the data to be published and subscribed.
Definition: topic.ifcxx:257
static NDDSConfigLogger * get_instance()
Get the singleton instance of this type.
void set_verbosity(NDDS_Config_LogVerbosity verbosity)
Set the verbosity at which RTI Connext will log diagnostic information.
static void sleep(const struct DDS_Duration_t &durationIn)
Block the calling thread for the specified duration.
const struct DDS_DomainParticipantQos DDS_PARTICIPANT_QOS_DEFAULT
Special value for creating a DomainParticipant with default QoS.
#define DDSTheParticipantFactory
Can be used as an alias for the singleton factory returned by the operation DDSDomainParticipantFacto...
Definition: domain.ifcxx:1233
const struct DDS_TopicQos DDS_TOPIC_QOS_DEFAULT
Special value for creating a DDSTopic with default QoS.
const struct DDS_PublisherQos DDS_PUBLISHER_QOS_DEFAULT
Special value for creating a DDSPublisher with default QoS.
const struct DDS_DataWriterQos DDS_DATAWRITER_QOS_DEFAULT
Special value for creating DDSDataWriter with default QoS.
DDS_ReturnCode_t
Type for return codes.
Definition: infrastructure.ifc:1336
@ DDS_RETCODE_OK
Successful return.
Definition: infrastructure.ifc:1339
#define DDS_STATUS_MASK_NONE
No bits are set.
Definition: infrastructure.ifc:1410
const DDS_InstanceHandle_t DDS_HANDLE_NIL
The NIL instance handle.
Type for duration representation.
Definition: infrastructure.ifc:642