|
From: Yannis D. <yda...@ic...> - 2014-12-05 15:00:46
|
Hi Jeff,
I enabled the transport debug level (-DCPSDebugLevel 10
-DCPSTransportDebugLevel 5) on both applications (subscriber and publisher).
The datareader is always receiving a sample between two take() operations:
(3096|140212650444544) DataReaderImpl::data_received: reader
0103902b.34d253bc.0c180000.00000007(c34d97e3) writer
0103902b.34d253bc.0c350000.00000002(1d4d3b30) instance 7 is_new_instance
0 filtered 0
(3096|140212650444544) DataReaderImpl::data_received:
0103902b.34d253bc.0c180000.00000007(c34d97e3) received sample:
SAMPLE_DATA (0x00), Length: 59, Byte order: Little Endian (0x1), CDR
Encapsulation, Sequence: 0x001e, Timestamp: 1417783285.237792000,
Publication: 0103902b.34d253bc.0c350000.00000002(1d4d3b30).
(3096|140212650444544) DataReaderImpl::process_latency() - measured
latency of 7S, 7005mS for current sample.
(3096|140212650444544) ConditionImpl::signal_all()
(3096|140212650444544) StatusConditionImpl::get_trigger_value() -
mask==0xffffffff, changes==0x200.
(3096|140212650444544) ConditionImpl::signal_all() - number of sets: 0,
locally: 0.
The datawriter is always sending a sample:
(3125|140327588222784) TransportSendStrategy::send() [0] - sending data
at 0x8000a248.
(3125|140327588222784) TransportSendStrategy::do_send_packet() [0] -
sending data at 0x900c2fc0.
(3125|140327588222784) WriteDataContainer::data_delivered A0C280
(3125|140327588222784) WriteDataContainer::data_delivered: domain 2000
topic Measurements publication
0103902b.34d253bc.0c350000.00000002(1d4d3b30) pushed to HISTORY.
But, the datawriter sends the samples with higher rate than the rate
that the datareader reads the samples.
I found difficult to understand why the samples are arriving on the
datareader one by one between two take() operations, even if I can see
in the log of the datareader samples with latency of 528540ms.
In my point of view when the datawriter sends samples with a higher rate
and the DDS::KEEP_ALL_HISTORY_QOS is defined on datawriter and
datareader with RESOURCE_LIMITS unlimeted, there should be more than one
samples in the cache of datareader between to take() operations.
It looks like there is something keeping the samples and forwards them
one by one to the datareader but I could not understand what it is.
Is it possible that a configuration is missing somewhere or a qos is not
declared correct?
Please keep in my that I observed the same behavior also when I enabled
the transport debug level (-DCPSDebugLevel 10 -DCPSTransportDebugLevel
5) on both subscriber and publisher of "Reliability" example in
tests/DCPS folder.
Best regards,
Yannis
On 04/12/2014 04:40 μμ, Jeff Schmitz <sch...@oc...> wrote:
> Yes it should, I believe.
>
> Turn up your transport debug level (-TransportDebugLevel 5) , to see
> what has been received by that datareader and verify it is greater
> than one since the last take()
>
> jeff
>
> On Thu, Dec 4, 2014 at 4:37 AM, Yannis Damigos <yda...@ic...> wrote:
>> Hi all,
>>
>> I have a strange problem using the take() function in a datareader in my
>> application.
>> take(data, si, DDS::LENGTH_UNLIMITED, DDS::ANY_SAMPLE_STATE,
>> DDS::ANY_VIEW_STATE, DDS::ANY_INSTANCE_STATE);
>>
>> My publisher is sending about 2000 data samples, each one every 100
>> miliseconds.
>> I set a delay on my datareader of 500 miliseconds on the
>> "on_data_available" function in order to ensure that more than one
>> samples are in my datareaders cache.
>> I set the QoS policies on reader and writer to:
>> DDS::RELIABLE_RELIABILITY_QOS, DDS::KEEP_ALL_HISTORY_QOS (all other
>> default).
>> My reader reads only one sample at a time and not a sequence of samples.
>>
>> So, I change a little your "Reliability" example in tests/DCPS folder by
>> adding the following line in SeqReaderListenerImpl.cpp:
>> "std::cout << "Yannis: Data length: " << messages_.length() << std::endl;"
>> just before the for loop:
>> "for (unsigned int i = 0; i < messages_.length(); ++i) {"
>> and run it using the flag 'take' (./run_test.pl take).
>>
>> I always receive a "messages_" with length one.
>> Is this the correct behavior using the take() function? Shouldn't the
>> reader receive more than one samples?
>>
>> Best regards,
>> Yannis
>>
>>
>> ------------------------------------------------------------------------------
>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>> Get technology previously reserved for billion-dollar corporations, FREE
>> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
>> _______________________________________________
>> opendds-main mailing list
>> ope...@li...
>> https://lists.sourceforge.net/lists/listinfo/opendds-main
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
> _______________________________________________
> opendds-main mailing list
> ope...@li...
> https://lists.sourceforge.net/lists/listinfo/opendds-main
>
|