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

#include <UdpInst.h>

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

Public Member Functions

virtual int load (ACE_Configuration_Heap &cf, ACE_Configuration_Section_Key &sect)
 
virtual OPENDDS_STRING dump_to_str () const
 Diagnostic aid. More...
 
bool is_reliable () const
 Does the transport as configured support RELIABLE_RELIABILITY_QOS? More...
 
virtual size_t populate_locator (OpenDDS::DCPS::TransportLocator &trans_info, ConnectionInfoFlags flags) const
 Populate a transport locator sequence. Return the number of "locators.". More...
 
OPENDDS_STRING local_address_string () const
 
ACE_INET_Addr local_address () const
 
void local_address (const ACE_INET_Addr &addr)
 
void local_address (const char *str)
 
void local_address (u_short port_number, const char *host_name)
 
void local_address_set_port (u_short port_number)
 
- Public Member Functions inherited from OpenDDS::DCPS::TransportInst
const OPENDDS_STRINGname () const
 
void dump () const
 Diagnostic aid. More...
 
virtual bool requires_cdr_encapsulation () const
 Does the transport require a CDR-encapsulated data payload? More...
 
DCPS::WeakRcHandle< ICE::Endpointget_ice_endpoint ()
 
void rtps_relay_only_now (bool flag)
 
void use_rtps_relay_now (bool flag)
 
void use_ice_now (bool flag)
 
virtual void update_locators (const GUID_t &, const TransportLocatorSeq &)
 
virtual void get_last_recv_locator (const GUID_t &, TransportLocator &)
 
virtual void rtps_relay_address_change ()
 
ReactorTask_rch reactor_task ()
 
EventDispatcher_rch event_dispatcher ()
 
void count_messages (bool flag)
 
bool count_messages () const
 
virtual void append_transport_statistics (TransportStatisticsSequence &)
 
void drop_messages (bool flag)
 
void drop_messages_m (double m)
 
void drop_messages_b (double b)
 
bool should_drop (ssize_t length) const
 
bool should_drop (const iovec iov[], int n, ssize_t &length) const
 
- 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
 

Public Attributes

ACE_INT32 send_buffer_size_
 
ACE_INT32 rcv_buffer_size_
 
- Public Attributes inherited from OpenDDS::DCPS::TransportInst
const OPENDDS_STRING transport_type_
 
size_t queue_messages_per_pool_
 
size_t queue_initial_pools_
 
ACE_UINT32 max_packet_size_
 Max size (in bytes) of a packet (packet header + sample(s)) More...
 
size_t max_samples_per_packet_
 Max number of samples that should ever be in a single packet. More...
 
ACE_UINT32 optimum_packet_size_
 Optimum size (in bytes) of a packet (packet header + sample(s)). More...
 
bool thread_per_connection_
 
long datalink_release_delay_
 
size_t datalink_control_chunks_
 
TimeDuration fragment_reassembly_timeout_
 
size_t receive_preallocated_message_blocks_
 
size_t receive_preallocated_data_blocks_
 

Private Member Functions

 UdpInst (const std::string &name)
 
TransportImpl_rch new_impl ()
 

Private Attributes

ACE_INET_Addr local_address_
 
OPENDDS_STRING local_address_config_str_
 

Friends

class UdpType
 
class UdpDataLink
 
template<typename T , typename U >
RcHandle< T > OpenDDS::DCPS::make_rch (U const &)
 

Additional Inherited Members

- Static Public Member Functions inherited from OpenDDS::DCPS::TransportInst
static OPENDDS_STRING formatNameForDump (const char *name)
 
- Static Public Attributes inherited from OpenDDS::DCPS::TransportInst
static const long DEFAULT_DATALINK_RELEASE_DELAY = 10000
 
static const size_t DEFAULT_DATALINK_CONTROL_CHUNKS = 32u
 
- Protected Member Functions inherited from OpenDDS::DCPS::TransportInst
 TransportInst (const char *type, const OPENDDS_STRING &name)
 
virtual ~TransportInst ()
 
void set_port_in_addr_string (OPENDDS_STRING &addr_str, u_short port_number)
 
TransportImpl_rch get_or_create_impl ()
 
TransportImpl_rch get_impl ()
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 
- Protected Attributes inherited from OpenDDS::DCPS::TransportInst
ACE_SYNCH_MUTEX lock_
 
bool shutting_down_
 

Detailed Description

Definition at line 23 of file UdpInst.h.

Constructor & Destructor Documentation

◆ UdpInst()

OpenDDS::DCPS::UdpInst::UdpInst ( const std::string &  name)
explicitprivate

Definition at line 25 of file UdpInst.cpp.

References ACE_DEFAULT_MAX_SOCKET_BUFSIZ, and if().

26  : TransportInst("udp", name),
27 #if defined (ACE_DEFAULT_MAX_SOCKET_BUFSIZ)
28  send_buffer_size_(ACE_DEFAULT_MAX_SOCKET_BUFSIZ),
29  rcv_buffer_size_(ACE_DEFAULT_MAX_SOCKET_BUFSIZ)
30 #else
33 #endif
34 {
35 }
const OPENDDS_STRING & name() const
Definition: TransportInst.h:70
ACE_INT32 send_buffer_size_
Definition: UdpInst.h:25
TransportInst(const char *type, const OPENDDS_STRING &name)
ACE_INT32 rcv_buffer_size_
Definition: UdpInst.h:26

Member Function Documentation

◆ dump_to_str()

OPENDDS_STRING OpenDDS::DCPS::UdpInst::dump_to_str ( ) const
virtual

Diagnostic aid.

Reimplemented from OpenDDS::DCPS::TransportInst.

Definition at line 66 of file UdpInst.cpp.

References OpenDDS::DCPS::TransportInst::dump_to_str(), OpenDDS::DCPS::TransportInst::formatNameForDump(), local_address(), OPENDDS_STRING, rcv_buffer_size_, send_buffer_size_, and OpenDDS::DCPS::LogAddr::str().

67 {
68  std::ostringstream os;
70 
71  os << formatNameForDump("local_address") << LogAddr(local_address()).str() << std::endl;
72  os << formatNameForDump("send_buffer_size") << this->send_buffer_size_ << std::endl;
73  os << formatNameForDump("rcv_buffer_size") << this->rcv_buffer_size_ << std::endl;
74  return OPENDDS_STRING(os.str());
75 }
virtual OPENDDS_STRING dump_to_str() const
ACE_INET_Addr local_address() const
Definition: UdpInst.h:39
ACE_INT32 send_buffer_size_
Definition: UdpInst.h:25
#define OPENDDS_STRING
static OPENDDS_STRING formatNameForDump(const char *name)
ACE_INT32 rcv_buffer_size_
Definition: UdpInst.h:26

◆ is_reliable()

bool OpenDDS::DCPS::UdpInst::is_reliable ( ) const
inlinevirtual

Does the transport as configured support RELIABLE_RELIABILITY_QOS?

Implements OpenDDS::DCPS::TransportInst.

Definition at line 34 of file UdpInst.h.

34 { return false; }

◆ load()

int OpenDDS::DCPS::UdpInst::load ( ACE_Configuration_Heap cf,
ACE_Configuration_Section_Key sect 
)
virtual

Overwrite the default configurations with the configuration from the given section in the ACE_Configuration_Heap object.

Reimplemented from OpenDDS::DCPS::TransportInst.

Definition at line 44 of file UdpInst.cpp.

References ACE_TEXT(), ACE_TEXT_ALWAYS_CHAR, ACE_String_Base< char >::c_str(), ACE_String_Base< char >::empty(), GET_CONFIG_TSTRING_VALUE, GET_CONFIG_VALUE, OpenDDS::DCPS::TransportInst::load(), local_address(), OPENDDS_STRING, rcv_buffer_size_, and send_buffer_size_.

46 {
47  TransportInst::load(cf, sect); // delegate to parent
48 
49  // Explicitly initialize this string to stop gcc 11 from issuing a warning.
50  ACE_TString local_address_s(ACE_TEXT(""));
51  GET_CONFIG_TSTRING_VALUE(cf, sect, ACE_TEXT("local_address"),
52  local_address_s);
53 
54  if (!local_address_s.empty()) {
55  local_address(ACE_TEXT_ALWAYS_CHAR(local_address_s.c_str()));
56  }
57 
58  GET_CONFIG_VALUE(cf, sect, ACE_TEXT("send_buffer_size"), this->send_buffer_size_, ACE_UINT32);
59 
60  GET_CONFIG_VALUE(cf, sect, ACE_TEXT("rcv_buffer_size"), this->rcv_buffer_size_, ACE_UINT32);
61 
62  return 0;
63 }
#define ACE_TEXT_ALWAYS_CHAR(STRING)
ACE_INET_Addr local_address() const
Definition: UdpInst.h:39
ACE_INT32 send_buffer_size_
Definition: UdpInst.h:25
#define GET_CONFIG_VALUE(CF, SECT, KEY, VALUE, TYPE)
Definition: TransportDefs.h:45
#define GET_CONFIG_TSTRING_VALUE(CF, SECT, KEY, VALUE)
ACE_TEXT("TCP_Factory")
virtual int load(ACE_Configuration_Heap &cf, ACE_Configuration_Section_Key &sect)
ACE_INT32 rcv_buffer_size_
Definition: UdpInst.h:26

◆ local_address() [1/4]

ACE_INET_Addr OpenDDS::DCPS::UdpInst::local_address ( ) const
inline

Definition at line 39 of file UdpInst.h.

Referenced by dump_to_str(), load(), and populate_locator().

39 { return local_address_; }
ACE_INET_Addr local_address_
Definition: UdpInst.h:72

◆ local_address() [2/4]

void OpenDDS::DCPS::UdpInst::local_address ( const ACE_INET_Addr addr)
inline

Definition at line 40 of file UdpInst.h.

References OpenDDS::DCPS::LogAddr::str().

41  {
42  local_address_ = addr;
43  local_address_config_str_ = LogAddr(addr).str();
44  }
OPENDDS_STRING local_address_config_str_
Definition: UdpInst.h:73
ACE_INET_Addr local_address_
Definition: UdpInst.h:72

◆ local_address() [3/4]

void OpenDDS::DCPS::UdpInst::local_address ( const char *  str)
inline

Definition at line 45 of file UdpInst.h.

References OpenDDS::DCPS::choose_single_coherent_address().

46  {
49  }
OPENDDS_STRING local_address_config_str_
Definition: UdpInst.h:73
ACE_INET_Addr local_address_
Definition: UdpInst.h:72
ACE_INET_Addr choose_single_coherent_address(const ACE_INET_Addr &address, bool prefer_loopback)

◆ local_address() [4/4]

void OpenDDS::DCPS::UdpInst::local_address ( u_short  port_number,
const char *  host_name 
)
inline

Definition at line 50 of file UdpInst.h.

References OpenDDS::DCPS::choose_single_coherent_address(), and OpenDDS::DCPS::to_dds_string().

51  {
52  local_address_config_str_ = host_name;
53  local_address_config_str_ += ":" + to_dds_string(port_number);
55  }
OPENDDS_STRING local_address_config_str_
Definition: UdpInst.h:73
ACE_INET_Addr local_address_
Definition: UdpInst.h:72
ACE_INET_Addr choose_single_coherent_address(const ACE_INET_Addr &address, bool prefer_loopback)
String to_dds_string(unsigned short to_convert)

◆ local_address_set_port()

void OpenDDS::DCPS::UdpInst::local_address_set_port ( u_short  port_number)
inline

Definition at line 56 of file UdpInst.h.

56  {
57  local_address_.set_port_number(port_number);
59  }
OPENDDS_STRING local_address_config_str_
Definition: UdpInst.h:73
ACE_INET_Addr local_address_
Definition: UdpInst.h:72
void set_port_number(u_short, int encode=1)
void set_port_in_addr_string(OPENDDS_STRING &addr_str, u_short port_number)

◆ local_address_string()

OPENDDS_STRING OpenDDS::DCPS::UdpInst::local_address_string ( ) const
inline

Definition at line 38 of file UdpInst.h.

Referenced by populate_locator().

38 { return local_address_config_str_; }
OPENDDS_STRING local_address_config_str_
Definition: UdpInst.h:73

◆ new_impl()

TransportImpl_rch OpenDDS::DCPS::UdpInst::new_impl ( )
privatevirtual

Implements OpenDDS::DCPS::TransportInst.

Definition at line 38 of file UdpInst.cpp.

References OpenDDS::DCPS::rchandle_from().

39 {
40  return make_rch<UdpTransport>(rchandle_from(this));
41 }
RcHandle< T > rchandle_from(T *pointer)
Definition: RcHandle_T.h:310

◆ populate_locator()

size_t OpenDDS::DCPS::UdpInst::populate_locator ( OpenDDS::DCPS::TransportLocator trans_info,
ConnectionInfoFlags  flags 
) const
virtual

Populate a transport locator sequence. Return the number of "locators.".

Implements OpenDDS::DCPS::TransportInst.

Definition at line 78 of file UdpInst.cpp.

References ACE_OutputCDR::buffer(), OpenDDS::DCPS::TransportLocator::data, OpenDDS::DCPS::get_fully_qualified_hostname(), local_address(), local_address_string(), OPENDDS_END_VERSIONED_NAMESPACE_DECL, ACE_OutputCDR::total_length(), and OpenDDS::DCPS::TransportLocator::transport_type.

79 {
80  if (this->local_address() != ACE_INET_Addr()) {
81  NetworkResource network_resource;
82  if (!this->local_address_string().empty()) {
83  network_resource = NetworkResource(this->local_address_string());
84  } else {
85  network_resource = NetworkResource(get_fully_qualified_hostname());
86  }
87  ACE_OutputCDR cdr;
88  cdr << network_resource;
89 
90  const CORBA::ULong len = static_cast<CORBA::ULong>(cdr.total_length());
91  char* buffer = const_cast<char*>(cdr.buffer()); // safe
92 
93  info.transport_type = "udp";
94  info.data = TransportBLOB(len, len, reinterpret_cast<CORBA::Octet*>(buffer));
95  return 1;
96  } else {
97  return 0;
98  }
99 }
ACE_INET_Addr local_address() const
Definition: UdpInst.h:39
size_t total_length(void) const
ACE_CDR::ULong ULong
const char * buffer(void) const
DDS::OctetSeq TransportBLOB
String get_fully_qualified_hostname(ACE_INET_Addr *addr)
OPENDDS_STRING local_address_string() const
Definition: UdpInst.h:38

Friends And Related Function Documentation

◆ OpenDDS::DCPS::make_rch

template<typename T , typename U >
RcHandle<T> OpenDDS::DCPS::make_rch ( U const &  )
friend

◆ UdpDataLink

friend class UdpDataLink
friend

Definition at line 63 of file UdpInst.h.

◆ UdpType

friend class UdpType
friend

Definition at line 62 of file UdpInst.h.

Member Data Documentation

◆ local_address_

ACE_INET_Addr OpenDDS::DCPS::UdpInst::local_address_
private

The address from which to send/receive data. The default value is: none.

Definition at line 72 of file UdpInst.h.

◆ local_address_config_str_

OPENDDS_STRING OpenDDS::DCPS::UdpInst::local_address_config_str_
private

Definition at line 73 of file UdpInst.h.

◆ rcv_buffer_size_

ACE_INT32 OpenDDS::DCPS::UdpInst::rcv_buffer_size_

Definition at line 26 of file UdpInst.h.

Referenced by dump_to_str(), and load().

◆ send_buffer_size_

ACE_INT32 OpenDDS::DCPS::UdpInst::send_buffer_size_

Definition at line 25 of file UdpInst.h.

Referenced by dump_to_str(), and load().


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