#include <DataSampleElement.h>
Wraps the marshaled message sample to be published, along with the publication Id and Instance handle for downstream processing.
Internally there are next/previous pointers that used for lists InstanceDataSampleList, SendStateDataSampleList, and WriterDataSampleList. These pointers are kept in this single element rather than having multiple smaller lists in order to allow us to allocate once which will minimize locking. Note that because the list pointers are stored within the element, the element can simultaneously be in at most one InstanceDataSampleList list, one SendStateDataSampleList list, and one WriterDataSampleList list.
Definition at line 53 of file DataSampleElement.h.
OpenDDS::DCPS::DataSampleElement::DataSampleElement | ( | PublicationId | publication_id, | |
TransportSendListener * | send_listener, | |||
PublicationInstance_rch | handle | |||
) |
Definition at line 22 of file DataSampleElement.cpp.
References OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::MAX_READERS_PER_ELEM, and subscription_ids_.
00026 : transaction_id_(0), 00027 publication_id_(publication_id), 00028 num_subs_(0), 00029 send_listener_(send_listener), 00030 handle_(handle), 00031 previous_writer_sample_(0), 00032 next_writer_sample_(0), 00033 next_instance_sample_(0), 00034 previous_instance_sample_(0), 00035 next_send_sample_(0), 00036 previous_send_sample_(0) 00037 00038 { 00039 std::fill(subscription_ids_, 00040 subscription_ids_ + OpenDDS::DCPS::MAX_READERS_PER_ELEM, 00041 GUID_UNKNOWN); 00042 }
OpenDDS::DCPS::DataSampleElement::DataSampleElement | ( | const DataSampleElement & | elem | ) |
Definition at line 44 of file DataSampleElement.cpp.
References num_subs_, and subscription_ids_.
00045 : transaction_id_(elem.transaction_id_) 00046 , header_(elem.header_) 00047 , sample_(elem.sample_ ? elem.sample_->duplicate() : 0) 00048 , publication_id_(elem.publication_id_) 00049 , num_subs_(elem.num_subs_) 00050 , send_listener_(elem.send_listener_) 00051 , handle_(elem.handle_) 00052 , filter_out_(elem.filter_out_) 00053 , filter_per_link_(elem.filter_per_link_) 00054 , previous_writer_sample_(elem.previous_writer_sample_) 00055 , next_writer_sample_(elem.next_writer_sample_) 00056 , next_instance_sample_(elem.next_instance_sample_) 00057 , previous_instance_sample_(elem.previous_instance_sample_) 00058 , next_send_sample_(elem.next_send_sample_) 00059 , previous_send_sample_(elem.previous_send_sample_) 00060 00061 { 00062 std::copy(elem.subscription_ids_, 00063 elem.subscription_ids_ + num_subs_, 00064 subscription_ids_); 00065 }
OpenDDS::DCPS::DataSampleElement::~DataSampleElement | ( | ) |
Definition at line 67 of file DataSampleElement.cpp.
ACE_INLINE DataSampleElement::DataLinkIdTypeGUIDMap & OpenDDS::DCPS::DataSampleElement::get_filter_per_link | ( | ) |
Definition at line 125 of file DataSampleElement.inl.
References filter_per_link_.
Referenced by OpenDDS::DCPS::DataLinkSet::send().
00126 { 00127 return filter_per_link_; 00128 }
PublicationInstance_rch OpenDDS::DCPS::DataSampleElement::get_handle | ( | void | ) | const |
Definition at line 99 of file DataSampleElement.cpp.
References handle_.
Referenced by OpenDDS::DCPS::WriteDataContainer::data_delivered().
00100 { 00101 return handle_; 00102 }
ACE_INLINE DataSampleHeader & OpenDDS::DCPS::DataSampleElement::get_header | ( | ) |
Definition at line 39 of file DataSampleElement.inl.
00040 { 00041 return const_cast<DataSampleHeader&>(static_cast<const DataSampleElement &>(*this).get_header()); 00042 }
ACE_INLINE const DataSampleHeader & OpenDDS::DCPS::DataSampleElement::get_header | ( | ) | const |
Definition at line 32 of file DataSampleElement.inl.
References header_.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element(), OpenDDS::DCPS::WriteDataContainer::data_delivered(), OpenDDS::DCPS::WriteDataContainer::data_dropped(), OpenDDS::DCPS::DataWriterImpl::dispose(), OpenDDS::DCPS::DataWriterImpl::dispose_and_unregister(), OpenDDS::DCPS::DataWriterImpl::filter_out(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::DataWriterImpl::register_instance_i(), OpenDDS::DCPS::WriteDataContainer::release_buffer(), OpenDDS::DCPS::resend_data_expired(), OpenDDS::DCPS::DataDurabilityCache::sample_data_type::sample_data_type(), OpenDDS::DCPS::TransportClient::send_i(), OpenDDS::DCPS::DataWriterImpl::send_request_ack(), OpenDDS::DCPS::TransportSendElement::sequence(), OpenDDS::DCPS::DataWriterImpl::unregister_instance_i(), OpenDDS::DCPS::ReplayerImpl::write(), and OpenDDS::DCPS::DataWriterImpl::write().
00033 { 00034 return header_; 00035 }
ACE_INLINE DataSampleElement * OpenDDS::DCPS::DataSampleElement::get_next_send_sample | ( | ) | const [private] |
Definition at line 18 of file DataSampleElement.inl.
References next_send_sample_.
Referenced by OpenDDS::DCPS::TransportClient::send_i().
00019 { 00020 return next_send_sample_; 00021 }
ACE_INLINE CORBA::ULong OpenDDS::DCPS::DataSampleElement::get_num_subs | ( | ) | const |
Definition at line 75 of file DataSampleElement.inl.
References num_subs_.
Referenced by OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::TransportClient::send_i(), and OpenDDS::DCPS::TransportSendElement::subscription_id().
00076 { 00077 return num_subs_; 00078 }
ACE_INLINE PublicationId OpenDDS::DCPS::DataSampleElement::get_pub_id | ( | ) | const |
Definition at line 68 of file DataSampleElement.inl.
References publication_id_.
Referenced by OpenDDS::DCPS::ReplayerImpl::data_delivered(), OpenDDS::DCPS::DataWriterImpl::data_delivered(), OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::TransportSendElement::publication_id(), OpenDDS::DCPS::TransportSendStrategy::remove_sample(), and OpenDDS::DCPS::TransportClient::send_i().
00069 { 00070 return publication_id_; 00071 }
ACE_INLINE DataSample * OpenDDS::DCPS::DataSampleElement::get_sample | ( | ) |
Definition at line 54 of file DataSampleElement.inl.
References OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), and sample_.
00055 { 00056 return sample_.get(); 00057 }
ACE_INLINE DataSample * OpenDDS::DCPS::DataSampleElement::get_sample | ( | ) | const |
Definition at line 47 of file DataSampleElement.inl.
References OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), and sample_.
Referenced by OpenDDS::DCPS::WriteDataContainer::data_delivered(), OpenDDS::DCPS::DataWriterImpl::filter_out(), OpenDDS::DCPS::DataDurabilityCache::insert(), OpenDDS::DCPS::TransportSendElement::msg(), OpenDDS::DCPS::TransportSendControlElement::msg(), OpenDDS::DCPS::TransportSendElement::msg_payload(), OpenDDS::DCPS::TransportSendStrategy::remove_sample(), OpenDDS::DCPS::ThreadPerConnectionSendTask::remove_sample(), OpenDDS::DCPS::DataDurabilityCache::sample_data_type::sample_data_type(), and OpenDDS::DCPS::DataLinkSet::send().
00048 { 00049 return sample_.get(); 00050 }
ACE_INLINE TransportSendListener * OpenDDS::DCPS::DataSampleElement::get_send_listener | ( | ) |
Definition at line 117 of file DataSampleElement.inl.
References send_listener_.
00118 { 00119 return send_listener_; 00120 }
ACE_INLINE TransportSendListener * OpenDDS::DCPS::DataSampleElement::get_send_listener | ( | ) | const |
Definition at line 110 of file DataSampleElement.inl.
References send_listener_.
Referenced by OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), OpenDDS::DCPS::TransportSendElement::release_element(), and OpenDDS::DCPS::TransportClient::send_i().
00111 { 00112 return send_listener_; 00113 }
ACE_INLINE OpenDDS::DCPS::RepoId OpenDDS::DCPS::DataSampleElement::get_sub_id | ( | int | index | ) | const |
Definition at line 96 of file DataSampleElement.inl.
References subscription_ids_.
Referenced by OpenDDS::DCPS::RtpsSampleHeader::populate_data_sample_submessages(), and OpenDDS::DCPS::TransportSendElement::subscription_id().
00097 { 00098 return subscription_ids_[index]; 00099 }
ACE_INLINE const OpenDDS::DCPS::RepoId * OpenDDS::DCPS::DataSampleElement::get_sub_ids | ( | ) | const |
Definition at line 89 of file DataSampleElement.inl.
References subscription_ids_.
Referenced by OpenDDS::DCPS::TransportClient::send_i().
00090 { 00091 return subscription_ids_; 00092 }
typedef OpenDDS::DCPS::DataSampleElement::OPENDDS_MAP | ( | DataLinkIdType | , | |
GUIDSeq_var | ||||
) |
DataSampleElement & OpenDDS::DCPS::DataSampleElement::operator= | ( | const DataSampleElement & | elem | ) |
Definition at line 72 of file DataSampleElement.cpp.
References filter_out_, filter_per_link_, handle_, header_, next_instance_sample_, next_send_sample_, next_writer_sample_, num_subs_, previous_instance_sample_, previous_send_sample_, previous_writer_sample_, publication_id_, OpenDDS::DCPS::unique_ptr< T, Deleter >::reset(), sample_, send_listener_, subscription_ids_, and transaction_id_.
00073 { 00074 transaction_id_ = rhs.transaction_id_; 00075 header_ = rhs.header_; 00076 sample_.reset(rhs.sample_->duplicate()); 00077 publication_id_ = rhs.publication_id_; 00078 num_subs_ = rhs.num_subs_; 00079 00080 std::copy(rhs.subscription_ids_, 00081 rhs.subscription_ids_ + num_subs_, 00082 subscription_ids_); 00083 00084 previous_writer_sample_ = rhs.previous_writer_sample_; 00085 next_writer_sample_ = rhs.next_writer_sample_; 00086 next_instance_sample_ = rhs.next_instance_sample_; 00087 previous_instance_sample_ = rhs.previous_instance_sample_; 00088 next_send_sample_ = rhs.next_send_sample_; 00089 previous_send_sample_ = rhs.previous_send_sample_; 00090 send_listener_ = rhs.send_listener_; 00091 handle_ = rhs.handle_; 00092 filter_out_ = rhs.filter_out_; 00093 filter_per_link_ = rhs.filter_per_link_; 00094 00095 return *this; 00096 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_filter_out | ( | GUIDSeq * | filter_out | ) |
Definition at line 132 of file DataSampleElement.inl.
References filter_out_.
Referenced by OpenDDS::DCPS::DataWriterImpl::write().
00133 { 00134 filter_out_ = filter_out; 00135 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_next_send_sample | ( | DataSampleElement * | next_send_sample | ) | [private] |
Definition at line 25 of file DataSampleElement.inl.
References next_send_sample_.
00026 { 00027 this->next_send_sample_ = next_send_sample; 00028 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_num_subs | ( | int | num_subs | ) |
Definition at line 82 of file DataSampleElement.inl.
References num_subs_.
Referenced by OpenDDS::DCPS::WriteDataContainer::copy_and_prepend(), and OpenDDS::DCPS::ReplayerImpl::write().
00083 { 00084 this->num_subs_ = num_subs; 00085 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_sample | ( | Message_Block_Ptr | sample | ) |
Definition at line 61 of file DataSampleElement.inl.
References OpenDDS::DCPS::unique_ptr< T, Deleter >::release(), OpenDDS::DCPS::unique_ptr< T, Deleter >::reset(), and sample_.
Referenced by OpenDDS::DCPS::DataWriterImpl::dispose(), OpenDDS::DCPS::DataWriterImpl::dispose_and_unregister(), OpenDDS::DCPS::DataWriterImpl::register_instance_i(), OpenDDS::DCPS::DataWriterImpl::send_request_ack(), OpenDDS::DCPS::DataWriterImpl::unregister_instance_i(), OpenDDS::DCPS::ReplayerImpl::write(), and OpenDDS::DCPS::DataWriterImpl::write().
00062 { 00063 this->sample_.reset(sample.release()); 00064 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_sub_id | ( | int | index, | |
OpenDDS::DCPS::RepoId | id | |||
) |
Definition at line 103 of file DataSampleElement.inl.
References subscription_ids_.
Referenced by OpenDDS::DCPS::WriteDataContainer::copy_and_prepend(), and OpenDDS::DCPS::ReplayerImpl::write().
00104 { 00105 this->subscription_ids_[index] = id; 00106 }
ACE_INLINE void OpenDDS::DCPS::DataSampleElement::set_transaction_id | ( | ACE_UINT64 | transaction_id | ) |
Definition at line 139 of file DataSampleElement.inl.
References transaction_id_.
00140 { 00141 transaction_id_ = transaction_id; 00142 }
ACE_INLINE ACE_UINT64 OpenDDS::DCPS::DataSampleElement::transaction_id | ( | ) | const |
Definition at line 146 of file DataSampleElement.inl.
References transaction_id_.
Referenced by OpenDDS::DCPS::TransportClient::send_i().
00147 { 00148 return transaction_id_; 00149 }
friend class ::DDS_TEST [friend] |
Definition at line 143 of file DataSampleElement.h.
friend class InstanceDataSampleList [friend] |
Definition at line 141 of file DataSampleElement.h.
friend class SendStateDataSampleList [friend] |
*DataSampleList(s) is in charge of managing list placement therefore needs access to pointers
Definition at line 139 of file DataSampleElement.h.
friend class SendStateDataSampleListConstIterator [friend] |
Definition at line 146 of file DataSampleElement.h.
friend class SendStateDataSampleListIterator [friend] |
Iterators needs access to prev/next pointers for iteration.
Definition at line 145 of file DataSampleElement.h.
friend class TransportClient [friend] |
Definition at line 142 of file DataSampleElement.h.
friend class WriterDataSampleList [friend] |
Definition at line 140 of file DataSampleElement.h.
GUIDSeq_var OpenDDS::DCPS::DataSampleElement::filter_out_ [private] |
tracking for Content-Filtering data
Definition at line 129 of file DataSampleElement.h.
Referenced by operator=(), OpenDDS::DCPS::TransportClient::send_i(), and set_filter_out().
DataLinkIdTypeGUIDMap OpenDDS::DCPS::DataSampleElement::filter_per_link_ [private] |
Definition at line 130 of file DataSampleElement.h.
Referenced by get_filter_per_link(), operator=(), and OpenDDS::DCPS::TransportClient::send_i().
The pointer to the object that contains the instance information and data sample list. The client holds this as an InstanceHandle_t.
Definition at line 125 of file DataSampleElement.h.
Referenced by get_handle(), OpenDDS::DCPS::InstanceDataSampleList::on_some_list(), and operator=().
The OpenDDS DCPS header for this sample.
Definition at line 104 of file DataSampleElement.h.
Referenced by get_header(), and operator=().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::next_instance_sample_ [mutable, private] |
Thread of data within the instance.
Definition at line 157 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::InstanceDataSampleList::dequeue(), OpenDDS::DCPS::InstanceDataSampleList::dequeue_head(), OpenDDS::DCPS::InstanceDataSampleList::enqueue_tail(), OpenDDS::DCPS::InstanceDataSampleList::next(), OpenDDS::DCPS::InstanceDataSampleList::on_some_list(), and operator=().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::next_send_sample_ [mutable, private] |
Thread of data being unsent/sending/sent/released.
Definition at line 161 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::SendStateDataSampleList::dequeue(), OpenDDS::DCPS::SendStateDataSampleList::dequeue_head(), OpenDDS::DCPS::SendStateDataSampleList::enqueue_head(), OpenDDS::DCPS::SendStateDataSampleList::enqueue_tail(), get_next_send_sample(), OpenDDS::DCPS::SendStateDataSampleListConstIterator::operator++(), OpenDDS::DCPS::SendStateDataSampleListIterator::operator++(), operator=(), OpenDDS::DCPS::SendStateDataSampleList::remove(), and set_next_send_sample().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::next_writer_sample_ [mutable, private] |
Definition at line 154 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::WriterDataSampleList::dequeue(), OpenDDS::DCPS::WriterDataSampleList::dequeue_head(), OpenDDS::DCPS::WriterDataSampleList::enqueue_tail(), and operator=().
Definition at line 113 of file DataSampleElement.h.
Referenced by DataSampleElement(), get_num_subs(), operator=(), and set_num_subs().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::previous_instance_sample_ [mutable, private] |
Definition at line 158 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::InstanceDataSampleList::dequeue(), OpenDDS::DCPS::InstanceDataSampleList::dequeue_head(), OpenDDS::DCPS::InstanceDataSampleList::enqueue_tail(), OpenDDS::DCPS::InstanceDataSampleList::on_some_list(), operator=(), and OpenDDS::DCPS::InstanceDataSampleList::prev().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::previous_send_sample_ [mutable, private] |
Definition at line 162 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::SendStateDataSampleList::dequeue(), OpenDDS::DCPS::SendStateDataSampleList::dequeue_head(), OpenDDS::DCPS::SendStateDataSampleList::enqueue_head(), OpenDDS::DCPS::SendStateDataSampleList::enqueue_tail(), OpenDDS::DCPS::SendStateDataSampleListConstIterator::operator--(), OpenDDS::DCPS::SendStateDataSampleListIterator::operator--(), operator=(), OpenDDS::DCPS::SendStateDataSampleList::remove(), and OpenDDS::DCPS::SendStateDataSampleList::send_list_containing_element().
DataSampleElement* OpenDDS::DCPS::DataSampleElement::previous_writer_sample_ [mutable, private] |
Thread of all data within a DataWriter.
Used to make removal from the container _much_ more efficient.
Definition at line 153 of file DataSampleElement.h.
Referenced by OpenDDS::DCPS::WriterDataSampleList::dequeue(), OpenDDS::DCPS::WriterDataSampleList::dequeue_head(), OpenDDS::DCPS::WriterDataSampleList::enqueue_tail(), and operator=().
Publication Id used downstream.
Definition at line 111 of file DataSampleElement.h.
Referenced by get_pub_id(), and operator=().
Message being sent which includes the DataSampleHeader message block and DataSample message block.
Definition at line 108 of file DataSampleElement.h.
Referenced by get_sample(), operator=(), and set_sample().
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().
Definition at line 120 of file DataSampleElement.h.
Referenced by get_send_listener(), and operator=().
OpenDDS::DCPS::RepoId OpenDDS::DCPS::DataSampleElement::subscription_ids_[OpenDDS::DCPS::MAX_READERS_PER_ELEM] [private] |
Definition at line 115 of file DataSampleElement.h.
Referenced by DataSampleElement(), get_sub_id(), get_sub_ids(), operator=(), and set_sub_id().
Definition at line 101 of file DataSampleElement.h.
Referenced by operator=(), set_transaction_id(), and transaction_id().