TSI is some generated TypeSupportImpl
| 117 | // return it anyway in order to demostrate the use of the nested typedefs. |
| 118 | template<typename MessageType> // TSI is some generated TypeSupportImpl |
| 119 | DDS::DataReader_var |
| 120 | create_reader(const DDS::Subscriber_var& sub, const char* topicName, |
| 121 | const DDS::DataReaderQos& qos = DATAREADER_QOS_DEFAULT, |
| 122 | const DDS::DataReaderListener_var& listener = 0, |
| 123 | const DDS::StatusMask& mask = OpenDDS::DCPS::DEFAULT_STATUS_MASK) |
| 124 | { |
| 125 | const DDS::TypeSupport_var ts = new typename ::OpenDDS::DCPS::DDSTraits<MessageType>::TypeSupportImplType(); |
| 126 | const DDS::DomainParticipant_var dp = sub->get_participant(); |
| 127 | const CORBA::String_var typeName = ts->get_type_name(); |
| 128 | (void) ts->register_type(dp, typeName); // may have been registered before |
| 129 | |
| 130 | const DDS::Topic_var topic = |
| 131 | dp->create_topic(topicName, typeName, TOPIC_QOS_DEFAULT, 0, 0); |
| 132 | if (!topic) return 0; |
| 133 | |
| 134 | const DDS::DataReader_var dr = |
| 135 | sub->create_datareader(topic, qos, listener, mask); |
| 136 | return OpenDDS::DCPS::DDSTraits<MessageType>::DataReaderType::_narrow(dr); |
| 137 | } |
| 138 | |
| 139 | |
| 140 | void print1(const T1::Foo1& foo, int i) |