windows7怎么做网站服务器,长宁区公司网站建设,做网站服务器在哪买,东莞做网站制作DDS(Data Distribution Service数据分发服务)是对象管理组织OMG的有关分布式实时系统中数据发布的规范。 DDS规范采用了发布/订阅体系结构#xff0c;但对实时性要求提供更好的支持。DDS是以数据为中心的发布/订阅通信模型。
以下工程基于rti_connext_dds-7.2.0 hello_world.…DDS(Data Distribution Service数据分发服务)是对象管理组织OMG的有关分布式实时系统中数据发布的规范。 DDS规范采用了发布/订阅体系结构但对实时性要求提供更好的支持。DDS是以数据为中心的发布/订阅通信模型。
以下工程基于rti_connext_dds-7.2.0 hello_world.idl定义的HelloWorld结构体如下 使用RTI Code Generatorrtiddsgen生成对应工程。 生成的工程目录如下 用VS2017打开工程 重点关注 hello_world_publisher.cxx和 hello_world_subscriber.cxx两个文件
Publisher
publisher实现的是发布subscriber实现的是订阅。 在hello_world_publisher.cxx中 // 创建一个HelloWorld类型以HelloWorld Topic命名的Topicdds::topic::TopicHelloWorld topic(participant, HelloWorld Topic);dds::pub::Publisher publisher(participant);// DataWriter将要在HelloWorld Topic中写入数据dds::pub::DataWriterHelloWorld writer(publisher, topic);定义HelloWorld类型的samplesample.msg()定义sample输出的内容 通过write函数写入数据 HelloWorld sample;for (unsigned int count 0;!shutdown_requested count sample_count;count) {sample.msg(Hello world! std::to_string(count));std::cout Writing HelloWorld, count count std::endl;writer.write(sample);rti::util::sleep(dds::core::Duration(4));}Subscriber
类似的定义Subscriber // 创建一个HelloWorld类型以HelloWorld Topic命名的Topicdds::topic::TopicHelloWorld topic(participant, HelloWorld Topic);dds::sub::Subscriber subscriber(participant);// DataReader将要读取topic数据dds::sub::DataReaderHelloWorld reader(subscriber, topic);创建状态条件满足条件才读取数据 // 创建条件dds::core::cond::StatusCondition status_condition(reader);status_condition.enabled_statuses(dds::core::status::StatusMask::data_available());// 条件触发后关联句柄unsigned int samples_read 0;status_condition.extensions().handler([reader, samples_read]() {samples_read process_data(reader);});dds::core::cond::WaitSet waitset;waitset status_condition;while (!shutdown_requested samples_read sample_count) {// 条件激活std::cout HelloWorld subscriber sleeping for 4 sec... std::endl;waitset.dispatch(dds::core::Duration(4)); // Wait up to 4s each time}