/* * (c) Copyright, Real-Time Innovations, 2012. 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. */ /* test_publisher.cxx A publication of data of type imgType This file is derived from code automatically generated by the rtiddsgen command: rtiddsgen -language C++11 -example test.idl Example publication of type imgType automatically generated by 'rtiddsgen'. To test it, follow these steps: (1) Compile this file and the example subscription. (2) Start the subscription on the same domain used for RTI Connext (3) Start the publication on the same domain used for RTI Connext (4) [Optional] Specify the list of discovery initial peers and multicast receive addresses via an environment variable or a file (in the current working directory) called NDDS_DISCOVERY_PEERS. You can run any number of publisher and subscriber programs, and can add and remove them dynamically from the domain. */ #include #include #include // for sleep() #include "test.hpp" void publisher_main(int domain_id, int sample_count) { // Create a DomainParticipant with default Qos dds::domain::DomainParticipant *participant = new dds::domain::DomainParticipant(domain_id); // Create a Topic -- and automatically register the type dds::topic::Topic *topic = new dds::topic::Topic(*participant, "Example imgType"); // Create a DataWriter with default Qos (Publisher created in-line) dds::pub::DataWriter *writer = new dds::pub::DataWriter(dds::pub::Publisher(*participant), *topic); imgType *sample = new imgType(); for (int count = 0; count < sample_count || sample_count == 0; count++) { // Modify the data to be written here std::cout << "Writing imgType, count " << count << std::endl; writer->write(*sample); rti::util::sleep(dds::core::Duration(4)); } } int main(int argc, char *argv[]) { int domain_id = 0; int sample_count = 0; // infinite loop if (argc >= 2) { domain_id = atoi(argv[1]); } if (argc >= 3) { sample_count = atoi(argv[2]); } // To turn on additional logging, include and // uncomment the following line: // rti::config::Logger::instance().verbosity(rti::config::Verbosity::STATUS_ALL); try { publisher_main(domain_id, sample_count); } catch (const std::exception& ex) { // This will catch DDS exceptions std::cerr << "Exception in publisher_main(): " << ex.what() << std::endl; return -1; } // RTI Connext provides a finalize_participant_factory() method // if you want to release memory used by the participant factory singleton. // Uncomment the following line to release the singleton: // // dds::domain::DomainParticipant::finalize_participant_factory(); return 0; }