cyclonedds
cyclonedds copied to clipboard
Some issue when reader set time_based fitler QOS
Hello, I tried to set time-based filter on reader, the minimal_seperation is 1 second, and I tried to send mesage from writer with rate one packet every 100ms. I expect the reader receive one message per second, but it still got one message per 100ms.
here is the writer code:
...
for (int i = 0; i < 600; i++)
{
topic_type->build_msg(msg, sizeof(msg), "Test Qos TIME_BASED_FILTER");
dds_write(writer, msg);
dds_sleepfor(DDS_MSECS(100));
}
......
here is the reader code: ...... qos = dds_create_qos(); dds_qset_deadline(qos, DDS_MSECS(2000)); dds_qset_time_based_filter(qos, DDS_MSECS(1000));
listener = dds_create_listener(topic_type); dds_lset_liveliness_changed(listener, liveliness_changed_listener);
reader = dds_create_reader(participant, topic, qos, listener);
samples[0] = topic_type->alloc_msg()
while (true) { rc = dds_take(reader, samples, infos, MAX_SAMPLES, MAX_SAMPLES); if ((rc > 0) && (infos[0].valid_data)) { printf("======== [Subscriber] Received:“); topic_type->dump_msg(samples[0]); } else { dds_sleepfor(DDS_MSECS(20)); } } toipc_type->free_msg(samples[0]); ......
Same Here. Don't know what's the problem.
Before I spend more time on it, can you tell me which version you're using? Because #1506 implemented it but it is currently only available on master.