OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <TransportSendBuffer.h>
Classes | |
class | Proxy |
Static Public Attributes | |
static const size_t | UNLIMITED = 0 |
Private Member Functions | |
void | check_capacity_i (BufferVec &removed) |
void | release_i (BufferMap::iterator buffer_iter) |
void | remove_i (BufferMap::iterator buffer_iter, BufferVec &removed) |
RemoveResult | retain_buffer (const GUID_t &pub_id, BufferType &buffer) |
void | insert_buffer (BufferType &buffer, TransportSendStrategy::QueueType *queue, ACE_Message_Block *chain) |
bool | resend_i (const SequenceRange &range, DisjointSequence *gaps=0) |
bool | resend_i (const SequenceRange &range, DisjointSequence *gaps, const GUID_t &destination) |
void | resend_fragments_i (SequenceNumber sequence, const DisjointSequence &fragments, size_t &cumulative_send_count) |
typedef | OPENDDS_MAP (SequenceNumber, BufferMap) FragmentMap |
typedef | OPENDDS_MAP (SequenceNumber, GUID_t) DestinationMap |
typedef | OPENDDS_SET (SequenceNumber) SequenceNumberSet |
Private Attributes | |
size_t | n_chunks_ |
MessageBlockAllocator | retained_mb_allocator_ |
DataBlockAllocator | retained_db_allocator_ |
MessageBlockAllocator | replaced_mb_allocator_ |
DataBlockAllocator | replaced_db_allocator_ |
BufferMap | buffers_ |
FragmentMap | fragments_ |
DestinationMap | destinations_ |
SequenceNumberSet | pre_seq_ |
SequenceNumber | minimum_sn_allowed_ |
ACE_Thread_Mutex | mutex_ |
Additional Inherited Members | |
![]() | |
typedef TransportSendStrategy::LockType | LockType |
![]() | |
typedef TransportSendStrategy::QueueType | QueueType |
typedef std::pair< QueueType *, ACE_Message_Block * > | BufferType |
![]() | |
TransportSendBuffer (size_t capacity) | |
virtual | ~TransportSendBuffer () |
void | resend_one (const BufferType &buffer) |
![]() | |
RcObject () | |
![]() | |
TransportSendStrategy * | strategy_ |
const size_t | capacity_ |
Implementation of TransportSendBuffer that manages data for a single domain of SequenceNumbers – for a given SingleSendBuffer object, the sequence numbers passed to insert() must be generated from the same place.
Definition at line 72 of file TransportSendBuffer.h.
OpenDDS::DCPS::SingleSendBuffer::SingleSendBuffer | ( | size_t | capacity, |
size_t | max_samples_per_packet | ||
) |
Definition at line 53 of file TransportSendBuffer.cpp.
OpenDDS::DCPS::SingleSendBuffer::~SingleSendBuffer | ( | ) |
Definition at line 64 of file TransportSendBuffer.cpp.
References release_all().
|
private |
Definition at line 349 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_TEXT(), buffers_, OpenDDS::DCPS::TransportSendBuffer::capacity_, LM_DEBUG, remove_i(), and OpenDDS::DCPS::Transport_debug_level.
Referenced by insert(), and insert_fragment().
bool OpenDDS::DCPS::SingleSendBuffer::has_frags | ( | const SequenceNumber & | seq | ) | const |
Definition at line 373 of file TransportSendBuffer.cpp.
References fragments_.
|
virtual |
Implements OpenDDS::DCPS::TransportSendBuffer.
Definition at line 245 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_GUARD, ACE_TEXT(), buffers_, check_capacity_i(), destinations_, OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::HISTORIC_SAMPLE_FLAG, insert_buffer(), LM_DEBUG, minimum_sn_allowed_, OpenDDS::DCPS::TransportQueueElement::msg(), mutex_, OpenDDS::DCPS::BasicQueue< T >::peek(), pre_seq_, OpenDDS::DCPS::BasicQueue< T >::size(), OpenDDS::DCPS::TransportQueueElement::subscription_id(), OpenDDS::DCPS::DataSampleHeader::test_flag(), and OpenDDS::DCPS::Transport_debug_level.
|
private |
Definition at line 288 of file TransportSendBuffer.cpp.
References OpenDDS::DCPS::BasicQueue< T >::accept_visitor(), ACE_NEW, ACE_Message_Block::duplicate(), retained_db_allocator_, and retained_mb_allocator_.
Referenced by insert(), and insert_fragment().
void OpenDDS::DCPS::SingleSendBuffer::insert_fragment | ( | SequenceNumber | sequence, |
SequenceNumber | fragment, | ||
bool | is_last_fragment, | ||
TransportSendStrategy::QueueType * | queue, | ||
ACE_Message_Block * | chain | ||
) |
Definition at line 306 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_GUARD, ACE_TEXT(), buffers_, check_capacity_i(), fragments_, OpenDDS::DCPS::SequenceNumber::getValue(), insert_buffer(), LM_DEBUG, minimum_sn_allowed_, mutex_, pre_seq_, and OpenDDS::DCPS::Transport_debug_level.
ACE_INLINE size_t OpenDDS::DCPS::SingleSendBuffer::n_chunks | ( | ) | const |
Definition at line 29 of file TransportSendBuffer.inl.
References ACE_GUARD_RETURN, and ACE_INLINE.
typedef OpenDDS::DCPS::SingleSendBuffer::OPENDDS_MAP | ( | SequenceNumber | , |
BufferType | |||
) |
|
private |
|
private |
|
private |
typedef OpenDDS::DCPS::SingleSendBuffer::OPENDDS_VECTOR | ( | BufferType | ) |
Referenced by resend_fragments_i().
|
inline |
Definition at line 199 of file TransportSendBuffer.h.
ACE_INLINE void OpenDDS::DCPS::SingleSendBuffer::pre_insert | ( | SequenceNumber | sequence | ) |
Definition at line 36 of file TransportSendBuffer.inl.
References ACE_GUARD, and OPENDDS_END_VERSIONED_NAMESPACE_DECL.
void OpenDDS::DCPS::SingleSendBuffer::release_acked | ( | SequenceNumber | seq | ) |
Definition at line 80 of file TransportSendBuffer.cpp.
References ACE_GUARD, buffers_, minimum_sn_allowed_, mutex_, and release_i().
void OpenDDS::DCPS::SingleSendBuffer::release_all | ( | ) |
Definition at line 70 of file TransportSendBuffer.cpp.
References ACE_GUARD, buffers_, mutex_, and release_i().
Referenced by ~SingleSendBuffer().
|
private |
Definition at line 100 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_TEXT(), buffers_, destinations_, fragments_, LM_DEBUG, and OpenDDS::DCPS::Transport_debug_level.
Referenced by release_acked(), release_all(), and retain_all().
void OpenDDS::DCPS::SingleSendBuffer::remove_acked | ( | SequenceNumber | seq, |
BufferVec & | removed | ||
) |
Definition at line 90 of file TransportSendBuffer.cpp.
References ACE_GUARD, buffers_, minimum_sn_allowed_, mutex_, and remove_i().
|
private |
Definition at line 142 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_TEXT(), buffers_, destinations_, fragments_, LM_DEBUG, and OpenDDS::DCPS::Transport_debug_level.
Referenced by check_capacity_i(), and remove_acked().
bool OpenDDS::DCPS::SingleSendBuffer::resend | ( | const SequenceRange & | range, |
DisjointSequence * | gaps = 0 |
||
) |
Definition at line 379 of file TransportSendBuffer.cpp.
References ACE_GUARD_RETURN, mutex_, resend_i(), and OpenDDS::DCPS::TransportSendBuffer::strategy_lock().
Referenced by OpenDDS::DCPS::ReliableSession::nak_received().
|
private |
Definition at line 442 of file TransportSendBuffer.cpp.
References OpenDDS::DCPS::DisjointSequence::empty(), fragments_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, OPENDDS_VECTOR(), and OpenDDS::DCPS::TransportSendBuffer::resend_one().
|
private |
Definition at line 387 of file TransportSendBuffer.cpp.
References OpenDDS::DCPS::GUID_UNKNOWN.
Referenced by resend().
|
private |
Definition at line 393 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_TEXT(), buffers_, destinations_, fragments_, OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::DisjointSequence::insert(), LM_DEBUG, OpenDDS::DCPS::TransportSendBuffer::resend_one(), and OpenDDS::DCPS::Transport_debug_level.
|
virtual |
Reimplemented from OpenDDS::DCPS::TransportSendBuffer.
Definition at line 173 of file TransportSendBuffer.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_GUARD, ACE_TEXT(), buffers_, OpenDDS::DCPS::LogGuid::c_str(), fragments_, LM_DEBUG, LM_WARNING, mutex_, release_i(), OpenDDS::DCPS::REMOVE_ERROR, retain_buffer(), and OpenDDS::DCPS::Transport_debug_level.
|
private |
Definition at line 223 of file TransportSendBuffer.cpp.
References OpenDDS::DCPS::TransportQueueElement::clone_mb(), ACE_Message_Block::release(), OpenDDS::DCPS::REMOVE_ERROR, replaced_db_allocator_, replaced_mb_allocator_, retained_db_allocator_, retained_mb_allocator_, and OpenDDS::DCPS::PacketRemoveVisitor::status().
Referenced by retain_all().
|
private |
Definition at line 231 of file TransportSendBuffer.h.
Referenced by check_capacity_i(), insert(), insert_fragment(), release_acked(), release_all(), release_i(), remove_acked(), remove_i(), resend_i(), and retain_all().
|
private |
Definition at line 237 of file TransportSendBuffer.h.
Referenced by insert(), release_i(), remove_i(), and resend_i().
|
private |
Definition at line 234 of file TransportSendBuffer.h.
Referenced by has_frags(), insert_fragment(), release_i(), remove_i(), resend_fragments_i(), resend_i(), and retain_all().
|
private |
Definition at line 242 of file TransportSendBuffer.h.
Referenced by insert(), insert_fragment(), release_acked(), and remove_acked().
|
mutableprivate |
Definition at line 244 of file TransportSendBuffer.h.
Referenced by insert(), insert_fragment(), release_acked(), release_all(), remove_acked(), resend(), and retain_all().
|
private |
Definition at line 224 of file TransportSendBuffer.h.
|
private |
Definition at line 240 of file TransportSendBuffer.h.
Referenced by insert(), and insert_fragment().
|
private |
Definition at line 229 of file TransportSendBuffer.h.
Referenced by retain_buffer().
|
private |
Definition at line 228 of file TransportSendBuffer.h.
Referenced by retain_buffer().
|
private |
Definition at line 227 of file TransportSendBuffer.h.
Referenced by insert_buffer(), and retain_buffer().
|
private |
Definition at line 226 of file TransportSendBuffer.h.
Referenced by insert_buffer(), and retain_buffer().
|
static |
Definition at line 76 of file TransportSendBuffer.h.
Referenced by OpenDDS::DCPS::TransportSendBuffer::resend_one().