MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / on_data_available

Method on_data_available

tools/modeling/tests/MultiInstance/subscriber.cpp:26–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24// START OF EXISTING MESSENGER EXAMPLE LISTENER CODE
25
26void
27ReaderListener::on_data_available(DDS::DataReader_ptr reader)
28{
29 ACE_Guard<ACE_Thread_Mutex> g(mutex_);
30
31 data1::MessageDataReader_var reader_i =
32 data1::MessageDataReader::_narrow(reader);
33
34 if (CORBA::is_nil(reader_i.in())) {
35 ACE_ERROR((LM_ERROR,
36 ACE_TEXT("ERROR: %N:%l: on_data_available() -")
37 ACE_TEXT(" _narrow failed!\n")));
38 ACE_OS::exit(-1);
39 }
40
41 data1::Message msg;
42 DDS::SampleInfo info;
43
44 while (true) {
45 DDS::ReturnCode_t error = reader_i->take_next_sample(msg, info);
46 if (error == DDS::RETCODE_OK) {
47 std::cout << "SampleInfo.sample_rank = " << info.sample_rank << std::endl;
48 std::cout << "SampleInfo.instance_state = " << info.instance_state << std::endl;
49
50 if (info.valid_data) {
51 std::cout << "Message: subject = " << msg.subject.in() << std::endl
52 << " subject_id = " << msg.subject_id << std::endl
53 << " from = " << msg.from.in() << std::endl
54 << " count = " << msg.count << std::endl
55 << " text = " << msg.text.in() << std::endl;
56 if (msg.count == 9) {
57 rcs_.signal();
58 }
59 }
60 } else {
61 if (error != DDS::RETCODE_NO_DATA) {
62 ACE_ERROR((LM_ERROR,
63 ACE_TEXT("ERROR: %N:%l: on_data_available() -")
64 ACE_TEXT(" take_next_sample failed!\n")));
65 }
66 break;
67 }
68 }
69}
70
71// END OF EXISTING MESSENGER EXAMPLE LISTENER CODE
72

Callers 1

run_instanceFunction · 0.45

Calls 3

inMethod · 0.45
take_next_sampleMethod · 0.45
signalMethod · 0.45

Tested by

no test coverage detected