OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Public Attributes | List of all members
OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer Struct Reference
Inheritance diagram for OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer:
Collaboration graph
[legend]

Public Member Functions

 MultiSendBuffer (RtpsUdpDataLink *outer, size_t capacity)
 
void insert (SequenceNumber sequence, TransportSendStrategy::QueueType *queue, ACE_Message_Block *chain)
 
- Public Member Functions inherited from OpenDDS::DCPS::TransportSendBuffer
size_t capacity () const
 
void bind (TransportSendStrategy *strategy)
 
virtual void retain_all (const GUID_t &pub_id)
 
LockTypestrategy_lock ()
 

Public Attributes

RtpsUdpDataLinkouter_
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::TransportSendBuffer
typedef TransportSendStrategy::LockType LockType
 
- Protected Types inherited from OpenDDS::DCPS::TransportSendBuffer
typedef TransportSendStrategy::QueueType QueueType
 
typedef std::pair< QueueType *, ACE_Message_Block * > BufferType
 
- Protected Member Functions inherited from OpenDDS::DCPS::TransportSendBuffer
 TransportSendBuffer (size_t capacity)
 
virtual ~TransportSendBuffer ()
 
void resend_one (const BufferType &buffer)
 
- Protected Attributes inherited from OpenDDS::DCPS::TransportSendBuffer
TransportSendStrategystrategy_
 
const size_t capacity_
 

Detailed Description

Definition at line 322 of file RtpsUdpDataLink.h.

Constructor & Destructor Documentation

◆ MultiSendBuffer()

OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer::MultiSendBuffer ( RtpsUdpDataLink outer,
size_t  capacity 
)
inline

Definition at line 324 of file RtpsUdpDataLink.h.

References OpenDDS::DCPS::insert().

Member Function Documentation

◆ insert()

void OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer::insert ( SequenceNumber  sequence,
TransportSendStrategy::QueueType queue,
ACE_Message_Block chain 
)
virtual

Implements OpenDDS::DCPS::TransportSendBuffer.

Definition at line 993 of file RtpsUdpDataLink.cpp.

References ACE_DEBUG, ACE_ERROR, OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::TransportQueueElement::is_fragment(), OpenDDS::DCPS::TransportCustomizedElement::is_last_fragment(), OpenDDS::DCPS::RcHandle< T >::is_nil(), OpenDDS::DCPS::RtpsCustomizedElement::last_fragment(), LM_DEBUG, LM_ERROR, OpenDDS::DCPS::BasicQueue< T >::peek(), OpenDDS::DCPS::TransportQueueElement::publication_id(), OpenDDS::DCPS::TransportQueueElement::sequence(), OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN(), and OpenDDS::DCPS::Transport_debug_level.

996 {
997  // Called from TransportSendStrategy::send_packet().
998  // RtpsUdpDataLink is not locked at this point, and is only locked
999  // to grab the appropriate writer send buffer via get_writer_send_buffer()
1000  const TransportQueueElement* const tqe = q->peek();
1001  const SequenceNumber seq = tqe->sequence();
1003  return;
1004  }
1005 
1006  const GUID_t pub_id = tqe->publication_id();
1007 
1008  RcHandle<SingleSendBuffer> send_buff = outer_->get_writer_send_buffer(pub_id);
1009  if (send_buff.is_nil()) {
1010  return;
1011  }
1012 
1013  if (Transport_debug_level > 5) {
1014  ACE_DEBUG((LM_DEBUG, "(%P|%t) RtpsUdpDataLink::MultiSendBuffer::insert() - "
1015  "pub_id %C seq %q frag %d\n", LogGuid(pub_id).c_str(), seq.getValue(),
1016  (int)tqe->is_fragment()));
1017  }
1018 
1019  if (tqe->is_fragment()) {
1020  const RtpsCustomizedElement* const rce =
1021  dynamic_cast<const RtpsCustomizedElement*>(tqe);
1022  if (rce) {
1023  send_buff->insert_fragment(seq, rce->last_fragment(), rce->is_last_fragment(), q, chain);
1024  } else if (Transport_debug_level) {
1025  ACE_ERROR((LM_ERROR, "(%P|%t) RtpsUdpDataLink::MultiSendBuffer::insert()"
1026  " - ERROR: couldn't get fragment number for pub_id %C seq %q\n",
1027  LogGuid(pub_id).c_str(), seq.getValue()));
1028  }
1029  } else {
1030  send_buff->insert(seq, q, chain);
1031  }
1032 }
#define ACE_DEBUG(X)
#define ACE_ERROR(X)
OpenDDS_Dcps_Export unsigned int Transport_debug_level
Transport Logging verbosity level.
Definition: debug.cpp:25
RcHandle< SingleSendBuffer > get_writer_send_buffer(const GUID_t &pub_id)
static SequenceNumber SEQUENCENUMBER_UNKNOWN()

Member Data Documentation

◆ outer_

RtpsUdpDataLink* OpenDDS::DCPS::RtpsUdpDataLink::MultiSendBuffer::outer_

Definition at line 333 of file RtpsUdpDataLink.h.


The documentation for this struct was generated from the following files: