#ifndef IMPORT_HelloWorld
#include "HelloWorldSupport.h"
#endif
using namespace System;
public ref class HelloWorldSubscriber {
public:
static void subscribe(int domain_id, int sample_count);
private:
static void shutdown(
};
public:
virtual void on_requested_deadline_missed(
virtual void on_requested_incompatible_qos(
virtual void on_sample_rejected(
virtual void on_liveliness_changed(
virtual void on_sample_lost(
virtual void on_subscription_matched(
HelloWorldListener() {
data_seq = gcnew HelloWorldSeq();
}
private:
HelloWorldSeq^ data_seq;
};
int main(array<System::String^>^ argv) {
int domain_id = 0;
if (argv->Length >= 1) {
domain_id = Int32::Parse(argv[0]);
}
int sample_count = 0;
if (argv->Length >= 2) {
sample_count = Int32::Parse(argv[1]);
}
try {
HelloWorldSubscriber::subscribe(
domain_id, sample_count);
}
return -1;
}
return 0;
}
void HelloWorldSubscriber::subscribe(
int domain_id, int sample_count) {
domain_id,
nullptr ,
DDS::StatusMask::STATUS_MASK_NONE);
if (participant == nullptr) {
shutdown(participant);
throw gcnew ApplicationException("create_participant error");
}
nullptr ,
DDS::StatusMask::STATUS_MASK_NONE);
if (subscriber == nullptr) {
shutdown(participant);
throw gcnew ApplicationException("create_subscriber error");
}
System::String^ type_name = HelloWorldTypeSupport::get_type_name();
try {
HelloWorldTypeSupport::register_type(
participant, type_name);
shutdown(participant);
throw e;
}
"Example HelloWorld",
type_name,
nullptr ,
DDS::StatusMask::STATUS_MASK_NONE);
if (topic == nullptr) {
shutdown(participant);
throw gcnew ApplicationException("create_topic error");
}
HelloWorldListener^ reader_listener =
gcnew HelloWorldListener();
topic,
reader_listener,
DDS::StatusMask::STATUS_MASK_ALL);
if (reader == nullptr) {
shutdown(participant);
throw gcnew ApplicationException("create_datareader error");
}
const System::Int32 receive_period = 4000;
for (int count=0; (sample_count == 0) || (count < sample_count); ++count) {
Console::WriteLine(
"HelloWorld subscriber sleeping for {0} sec...",
receive_period / 1000);
System::Threading::Thread::Sleep(receive_period);
}
shutdown(participant);
}
void HelloWorldSubscriber::shutdown(
if (participant != nullptr) {
participant);
}
}
HelloWorldDataReader^ HelloWorld_reader =
safe_cast<HelloWorldDataReader^>(reader);
try {
HelloWorld_reader->take(
data_seq,
info_seq,
}
return;
}
Console::WriteLine("take error {0}", e);
return;
}
System::Int32 data_length = data_seq->length;
for (int i = 0; i < data_length; ++i) {
if (info_seq->get_at(i)->valid_data) {
HelloWorldTypeSupport::print_data(data_seq->get_at(i));
}
}
try {
HelloWorld_reader->return_loan(data_seq, info_seq);
}
Console::WriteLine("return loan error {0}", e);
}
}