#include <DataSampleList.h>
Collaboration diagram for OpenDDS::DCPS::DataSampleListElement:

next_sample_ / previous_sample
next_instance_sample_
next_send_sample_/previous_send_sample_
We thread this single element rather than having multiple smaller lists in order to allow us to allocate once and have the element contained in all of the lists in which it will be held during its lifetime. These three threads will at times hold the element in three separate lists simultaneously. The next_sample_ thread will be used in the container to hold the element in one of three different lists at different times, so a single thread is all that is required for all of those lists.
NOTE: this is what we want to pass into the enqueue method of the container, since we want to centralize the allocation/deallocation so that we can minimize locking. By grabbing a single lock, allocating the buffer/Data_Block/Message_Block/DataSampleListElement at the same time, we only pay once for all of the allocations. They are all presumably from a cache (for the most part) anyway, so it should be fairly quick.
| ACE_INLINE OpenDDS::DCPS::DataSampleListElement::DataSampleListElement | ( | PublicationId | publication_id, | |
| TransportSendListener * | send_listner, | |||
| PublicationInstance * | handle, | |||
| TransportSendElementAllocator * | tse_allocator, | |||
| TransportCustomizedElementAllocator * | tce_allocator | |||
| ) |
| ACE_INLINE OpenDDS::DCPS::DataSampleListElement::DataSampleListElement | ( | const DataSampleListElement & | elem | ) |
| ACE_INLINE OpenDDS::DCPS::DataSampleListElement::~DataSampleListElement | ( | ) |
| ACE_INLINE DataSampleListElement & OpenDDS::DCPS::DataSampleListElement::operator= | ( | const DataSampleListElement & | elem | ) |
tracking for Content-Filtering data
| std::map<DataLinkIdType, GUIDSeq_var> OpenDDS::DCPS::DataSampleListElement::filter_per_link_ |
The pointer to the object that contains the instance information and data sample list. The client holds this as an InstanceHandle_t.
Thread of data within the instance.
Thread of data being unsent/sending/sent/released.
| CORBA::ULong OpenDDS::DCPS::DataSampleListElement::num_subs_ |
Thread of all data within a DataWriter.
Used to make removal from the container _much_ more efficient.
Publication Id used downstream.
Message being sent which includes the DataSampleHeader message block and DataSample message block.
Pointer to object that will be informed when the data has been delivered. This needs to be set prior to using the TransportClient to send().
Timestamp for the sample when it was first written.
The flag indicates space availability for this waiting DataSample.
| OpenDDS::DCPS::RepoId OpenDDS::DCPS::DataSampleListElement::subscription_ids_[OpenDDS::DCPS::MAX_READERS_PER_ELEM] |
| TransportCustomizedElementAllocator* OpenDDS::DCPS::DataSampleListElement::transport_customized_element_allocator_ |
Allocator for TransportCustomizedElement.
| TransportSendElementAllocator* OpenDDS::DCPS::DataSampleListElement::transport_send_element_allocator_ |
Allocator for the TransportSendElement.
1.4.7