/
RtpsUdpInst.h
169 lines (129 loc) · 5.51 KB
/
RtpsUdpInst.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
*
*
* Distributed under the OpenDDS License.
* See: http://www.opendds.org/license.html
*/
#ifndef OPENDDS_DCPS_TRANSPORT_RTPS_UDP_RTPSUDPINST_H
#define OPENDDS_DCPS_TRANSPORT_RTPS_UDP_RTPSUDPINST_H
#include "Rtps_Udp_Export.h"
#include "RtpsUdpTransport_rch.h"
#include <dds/DCPS/NetworkAddress.h>
#include <dds/DCPS/SafetyProfileStreams.h>
#include <dds/DCPS/RTPS/ICE/Ice.h>
#include <dds/DCPS/transport/framework/TransportInst.h>
OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
namespace OpenDDS {
namespace RTPS {
class Sedp;
}
namespace DCPS {
class RtpsUdpTransport;
class TransportReceiveListener;
typedef RcHandle<TransportReceiveListener> TransportReceiveListener_rch;
class OpenDDS_Rtps_Udp_Export RtpsUdpInst : public TransportInst {
public:
static const suseconds_t DEFAULT_NAK_RESPONSE_DELAY_USEC = 200000; // default from RTPS
static const time_t DEFAULT_HEARTBEAT_PERIOD_SEC = 1; // no default in RTPS spec
ConfigValue<RtpsUdpInst, ACE_INT32> send_buffer_size_;
void send_buffer_size(ACE_INT32 sbs);
ACE_INT32 send_buffer_size() const;
ConfigValue<RtpsUdpInst, ACE_INT32> rcv_buffer_size_;
void rcv_buffer_size(ACE_INT32 rbs);
ACE_INT32 rcv_buffer_size() const;
ConfigValue<RtpsUdpInst, bool> use_multicast_;
void use_multicast(bool um);
bool use_multicast() const;
ConfigValue<RtpsUdpInst, unsigned char> ttl_;
void ttl(unsigned char t);
unsigned char ttl() const;
ConfigValueRef<RtpsUdpInst, String> multicast_interface_;
void multicast_interface(const String& mi);
String multicast_interface() const;
ConfigValue<RtpsUdpInst, size_t> anticipated_fragments_;
void anticipated_fragments(size_t af);
size_t anticipated_fragments() const;
ConfigValue<RtpsUdpInst, size_t> max_message_size_;
void max_message_size(size_t mms);
size_t max_message_size() const;
ConfigValue<RtpsUdpInst, size_t> nak_depth_;
void nak_depth(size_t mms);
size_t nak_depth() const;
ConfigValueRef<RtpsUdpInst, TimeDuration> nak_response_delay_;
void nak_response_delay(const TimeDuration& nrd);
TimeDuration nak_response_delay() const;
ConfigValueRef<RtpsUdpInst, TimeDuration> heartbeat_period_;
void heartbeat_period(const TimeDuration& nrd);
TimeDuration heartbeat_period() const;
ConfigValueRef<RtpsUdpInst, TimeDuration> receive_address_duration_;
void receive_address_duration(const TimeDuration& rad);
TimeDuration receive_address_duration() const;
ConfigValue<RtpsUdpInst, bool> responsive_mode_;
void responsive_mode(bool rm);
bool responsive_mode() const;
ConfigValueRef<RtpsUdpInst, TimeDuration> send_delay_;
void send_delay(const TimeDuration& sd);
TimeDuration send_delay() const;
/// Diagnostic aid.
virtual OPENDDS_STRING dump_to_str(DDS::DomainId_t domain) const;
bool is_reliable() const { return true; }
bool requires_cdr_encapsulation() const { return true; }
virtual size_t populate_locator(OpenDDS::DCPS::TransportLocator& trans_info,
ConnectionInfoFlags flags,
DDS::DomainId_t domain) const;
const TransportBLOB* get_blob(const OpenDDS::DCPS::TransportLocatorSeq& trans_info) const;
void multicast_group_address(const NetworkAddress& addr);
NetworkAddress multicast_group_address(DDS::DomainId_t domain) const;
void local_address(const NetworkAddress& addr);
NetworkAddress local_address() const;
void advertised_address(const NetworkAddress& addr);
NetworkAddress advertised_address() const;
#ifdef ACE_HAS_IPV6
void ipv6_multicast_group_address(const NetworkAddress& addr);
NetworkAddress ipv6_multicast_group_address() const;
void ipv6_local_address(const NetworkAddress& addr);
NetworkAddress ipv6_local_address() const;
void ipv6_advertised_address(const NetworkAddress& addr);
NetworkAddress ipv6_advertised_address() const;
#endif
void rtps_relay_only(bool flag);
bool rtps_relay_only() const;
void use_rtps_relay(bool flag);
bool use_rtps_relay() const;
void rtps_relay_address(const NetworkAddress& address);
NetworkAddress rtps_relay_address() const;
void use_ice(bool flag);
bool use_ice() const;
void stun_server_address(const NetworkAddress& address);
NetworkAddress stun_server_address() const;
void update_locators(const GUID_t& remote_id,
const TransportLocatorSeq& locators,
DDS::DomainId_t domain,
DomainParticipantImpl* participant);
void get_last_recv_locator(const GUID_t& /*remote_id*/,
TransportLocator& /*locators*/,
DDS::DomainId_t domain,
DomainParticipantImpl* participant);
void append_transport_statistics(TransportStatisticsSequence& seq,
DDS::DomainId_t domain,
DomainParticipantImpl* participant);
private:
friend class RtpsUdpType;
template <typename T, typename U0, typename U1>
friend RcHandle<T> OpenDDS::DCPS::make_rch(U0 const&, U1 const&);
explicit RtpsUdpInst(const OPENDDS_STRING& name,
bool is_template);
TransportImpl_rch new_impl(DDS::DomainId_t domain);
friend class RTPS::Sedp;
friend class RtpsUdpTransport;
TransportReceiveListener_rch opendds_discovery_default_listener_;
GUID_t opendds_discovery_guid_;
NetworkAddress actual_local_address_;
#ifdef ACE_HAS_IPV6
NetworkAddress ipv6_actual_local_address_;
#endif
};
} // namespace DCPS
} // namespace OpenDDS
OPENDDS_END_VERSIONED_NAMESPACE_DECL
#endif /* OPENDDS_DCPS_TRANSPORT_RTPS_UDP_RTPSUDPINST_H */