OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::UdpSendStrategy Class Reference

#include <UdpSendStrategy.h>

Inheritance diagram for OpenDDS::DCPS::UdpSendStrategy:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::UdpSendStrategy:
Collaboration graph
[legend]

Public Member Functions

 UdpSendStrategy (UdpDataLink *link)
 
virtual void stop_i ()
 Let the subclass stop. More...
 
- Public Member Functions inherited from OpenDDS::DCPS::TransportSendStrategy
virtual ~TransportSendStrategy ()
 
void send_buffer (TransportSendBuffer *send_buffer)
 Assigns an optional send buffer. More...
 
int start ()
 
void stop ()
 
void send_start ()
 
void send (TransportQueueElement *element, bool relink=true)
 
void send_stop (GUID_t repoId)
 
RemoveResult remove_sample (const DataSampleElement *sample)
 
void remove_all_msgs (const GUID_t &pub_id)
 
virtual WorkOutcome perform_work ()
 
virtual void relink (bool do_suspend=true)
 
void suspend_send ()
 
void resume_send ()
 
void terminate_send (bool graceful_disconnecting=false)
 Remove all samples in the backpressure queue and packet queue. More...
 
virtual void terminate_send_if_suspended ()
 
virtual bool start_i ()
 Let the subclass start. More...
 
void link_released (bool flag)
 
bool isDirectMode ()
 
virtual ACE_HANDLE get_handle ()
 
void deliver_ack_request (TransportQueueElement *element)
 
bool fragmentation_helper (TransportQueueElement *original_element, TqeVector &elements_to_send)
 
void clear (SendMode new_mode, SendMode old_mode=MODE_NOT_SET)
 
SendMode mode () const
 Access the current sending mode. More...
 
- Public Member Functions inherited from OpenDDS::DCPS::ThreadSynchWorker
virtual ~ThreadSynchWorker ()
 
virtual void schedule_output ()
 Indicate that queued data is available to be sent. More...
 
std::size_t id () const
 DataLink reference value for diagnostics. More...
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Protected Member Functions

virtual ssize_t send_bytes_i (const iovec iov[], int n)
 
virtual size_t max_message_size () const
 
- Protected Member Functions inherited from OpenDDS::DCPS::TransportSendStrategy
 TransportSendStrategy (std::size_t id, const TransportImpl_rch &transport, ThreadSynchResource *synch_resource, Priority priority, const ThreadSynchStrategy_rch &thread_sync_strategy)
 
virtual ssize_t send_bytes (const iovec iov[], int n, int &bp)
 
virtual ssize_t non_blocking_send (const iovec iov[], int n, int &bp)
 
virtual void prepare_header_i ()
 Specific implementation processing of prepared packet header. More...
 
virtual void prepare_packet_i ()
 Specific implementation processing of prepared packet. More...
 
TransportQueueElementcurrent_packet_first_element () const
 
void set_graceful_disconnecting (bool flag)
 Set graceful disconnecting flag. More...
 
virtual void add_delayed_notification (TransportQueueElement *element)
 
bool send_delayed_notifications (const TransportQueueElement::MatchCriteria *match=0)
 
virtual Security::SecurityConfig_rch security_config () const
 
virtual RemoveResult do_remove_sample (const GUID_t &pub_id, const TransportQueueElement::MatchCriteria &criteria, bool remove_all=false)
 Implement framework chain visitations to remove a sample. More...
 
ThreadSynchsynch () const
 
void set_header_source (ACE_INT64 source)
 
- Protected Member Functions inherited from OpenDDS::DCPS::ThreadSynchWorker
 ThreadSynchWorker (std::size_t id=0)
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Private Attributes

UdpDataLinklink_
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::TransportSendStrategy
enum  SendMode {
  MODE_NOT_SET, MODE_DIRECT, MODE_QUEUE, MODE_SUSPEND,
  MODE_TERMINATED
}
 
typedef BasicQueue< TransportQueueElementQueueType
 
- Public Types inherited from OpenDDS::DCPS::ThreadSynchWorker
enum  WorkOutcome { WORK_OUTCOME_MORE_TO_DO, WORK_OUTCOME_NO_MORE_TO_DO, WORK_OUTCOME_CLOGGED_RESOURCE, WORK_OUTCOME_BROKEN_RESOURCE }
 
- Static Public Member Functions inherited from OpenDDS::DCPS::TransportSendStrategy
static int mb_to_iov (const ACE_Message_Block &msg, iovec *iov)
 
- Static Public Attributes inherited from OpenDDS::DCPS::TransportSendStrategy
static const size_t UDP_MAX_MESSAGE_SIZE = 65466
 

Detailed Description

Definition at line 24 of file UdpSendStrategy.h.

Constructor & Destructor Documentation

◆ UdpSendStrategy()

OpenDDS::DCPS::UdpSendStrategy::UdpSendStrategy ( UdpDataLink link)

Definition at line 18 of file UdpSendStrategy.cpp.

19  : TransportSendStrategy(0, link->impl(),
20  0, // synch_resource
21  link->transport_priority(),
22  make_rch<NullSynchStrategy>()),
23  link_(link)
24 {
25 }
TransportSendStrategy(std::size_t id, const TransportImpl_rch &transport, ThreadSynchResource *synch_resource, Priority priority, const ThreadSynchStrategy_rch &thread_sync_strategy)

Member Function Documentation

◆ max_message_size()

virtual size_t OpenDDS::DCPS::UdpSendStrategy::max_message_size ( void  ) const
inlineprotectedvirtual

The maximum size of a message allowed by the this TransportImpl, or 0 if there is no such limit. This is expected to be a constant, for example UDP/IPv4 can send messages of up to 65466 bytes. The transport framework will use the returned value (if > 0) to fragment larger messages. This fragmentation and reassembly will be transparent to the user.

Reimplemented from OpenDDS::DCPS::TransportSendStrategy.

Definition at line 34 of file UdpSendStrategy.h.

35  {
36  return UDP_MAX_MESSAGE_SIZE;
37  }

◆ send_bytes_i()

ssize_t OpenDDS::DCPS::UdpSendStrategy::send_bytes_i ( const iovec  iov[],
int  n 
)
protectedvirtual

Implements OpenDDS::DCPS::TransportSendStrategy.

Definition at line 28 of file UdpSendStrategy.cpp.

References link_, OpenDDS::DCPS::UdpDataLink::remote_address(), ACE_SOCK_Dgram::send(), socket(), and OpenDDS::DCPS::UdpDataLink::socket().

29 {
30  ACE_SOCK_Dgram& socket = this->link_->socket();
31  return socket.send(iov, n, this->link_->remote_address());
32 }
ACE_SOCK_Dgram & socket()
Definition: UdpDataLink.inl:40
ACE_HANDLE socket(int protocol_family, int type, int proto)
ACE_INET_Addr & remote_address()
Definition: UdpDataLink.inl:34
ssize_t send(const void *buf, size_t n, const ACE_Addr &addr, int flags=0) const

◆ stop_i()

void OpenDDS::DCPS::UdpSendStrategy::stop_i ( )
virtual

Let the subclass stop.

Implements OpenDDS::DCPS::TransportSendStrategy.

Definition at line 35 of file UdpSendStrategy.cpp.

References OPENDDS_END_VERSIONED_NAMESPACE_DECL.

36 {
37 }

Member Data Documentation

◆ link_

UdpDataLink* OpenDDS::DCPS::UdpSendStrategy::link_
private

Definition at line 40 of file UdpSendStrategy.h.

Referenced by send_bytes_i().


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