OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). OpenDDS also supports Java bindings through JNI.
Suppose a writer has an agressive heartbeat period and then writes a sample that is highly fragmented. It is possible (probable) that the heartbeat timer will go off before all fragments have been sent. The reader can then nack fragments that haven't even been sent. The writer would then resend the requested fragments.
Solution
Before sending a heartbeat, check that the user is not in the middle of a send.
The solution does not make a change for resends due to reliability and/or durability. The reason for this is that sending heartbeats and nack responses are mutually exclusive based on locking.
Problem
Suppose a writer has an agressive heartbeat period and then writes a sample that is highly fragmented. It is possible (probable) that the heartbeat timer will go off before all fragments have been sent. The reader can then nack fragments that haven't even been sent. The writer would then resend the requested fragments.
Solution
Before sending a heartbeat, check that the user is not in the middle of a send.
The solution does not make a change for resends due to reliability and/or durability. The reason for this is that sending heartbeats and nack responses are mutually exclusive based on locking.