OpenDDS  Snapshot(2023/04/28-20:55)
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 994 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.

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

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: