21 #ifndef __ACE_INLINE__ 39 reactor_task_(reactor_task),
60 local_address.
set(0,
"", 0, remote_address.
get_type());
63 local_address = cfg->local_address();
69 ACE_TEXT(
"UdpDataLink::open: open_appropriate_socket_type failed\n")),
73 VDBG((
LM_DEBUG,
"(%P|%t) UdpDataLink::open: listening on %C\n",
74 LogAddr(local_address).c_str()));
79 if (!this->
active_ && cfg->local_address().is_any()) {
83 ACE_TEXT(
"(%P|%t) ERROR: UdpDataLink::open - %p"),
84 ACE_TEXT(
"cannot get local addr\n")),
false);
89 ACE_TEXT(
"(%P|%t) UdpDataLink::open listening on host %C:%hu\n"),
90 hostname.c_str(), port), 2);
92 cfg->local_address(port, hostname.c_str());
96 0 == cfg->local_address().get_port_number()) {
100 ACE_TEXT(
"(%P|%t) ERROR: UdpDataLink::open - %p"),
101 ACE_TEXT(
"cannot get local addr\n")),
false);
105 ACE_TEXT(
"(%P|%t) UdpDataLink::open listening on port %hu\n"),
107 cfg->local_address_set_port(port);
110 if (cfg->send_buffer_size_ > 0) {
111 int snd_size = cfg->send_buffer_size_;
115 sizeof(snd_size)) < 0
119 ACE_TEXT(
"UdpDataLink::open: failed to set the send buffer size to %d errno %m\n"),
125 if (cfg->rcv_buffer_size_ > 0) {
126 int rcv_size = cfg->rcv_buffer_size_;
134 ACE_TEXT(
"UdpDataLink::open: failed to set the receive buffer size to %d errno %m\n"),
146 BOOL recv_udp_connreset = FALSE;
157 VDBG((
LM_DEBUG,
"(%P|%t) UdpDataLink::open: active connect to %C\n",
158 LogAddr(remote_address).c_str()));
179 serializer.write_octet_array(info.
data.get_buffer(),
185 static_cast<ACE_UINT32
>(data_block->
length());
200 *sample_header_block << sample_header;
201 sample_header_block->
cont(data_block);
220 static_cast<ACE_UINT32
>(data_block->
length() +
221 sample_header_block->
length());
222 *transport_header_block << transport_header;
223 transport_header_block->
cont(sample_header_block);
226 const int num_blocks =
229 transport_header_block->
release();
232 ACE_TEXT(
"failed to send handshake %m\n")),
238 const size_t size = 32;
247 ACE_TEXT(
"(%P|%t) UdpDataLink::open received handshake ack\n")),
249 }
else if (recvd < 0) {
252 ACE_TEXT(
"failed to receive handshake ack %p\n"),
256 ACE_TEXT(
"failed to receive handshake ack ")
257 ACE_TEXT(
"recv returned %b\n"), recvd),
268 ACE_TEXT(
"UdpDataLink::open: start failed!\n")),
UdpSendStrategy_rch send_strategy_
TransportImpl_rch impl() const
static const ACE_Time_Value max_time
char message_id_
The enum MessageId.
ssize_t recv(void *buf, size_t n, ACE_Addr &addr, int flags=0) const
size_t length(void) const
static int mb_to_iov(const ACE_Message_Block &msg, iovec *iov)
bool open(const ACE_INET_Addr &remote_address)
ACE_INET_Addr remote_address_
virtual short codepoint() const
Access the mapped DiffServ codepoint value.
UdpTransport_rch UdpTransport_rch
void control_received(ReceivedDataSample &sample, const ACE_INET_Addr &remote_address)
static const ConnectionInfoFlags CONNINFO_ALL
const ACE_Time_Value & value() const
static size_t get_max_serialized_size()
Similar to IDL compiler generated methods.
int set_option(int level, int option, void *optval, int optlen) const
int start(const TransportSendStrategy_rch &send_strategy, const TransportStrategy_rch &receive_strategy, bool invoke_all=true)
ACE_INET_Addr & remote_address()
Class to serialize and deserialize data for DDS.
static size_t get_max_serialized_size()
Similar to IDL compiler generated methods.
Priority & transport_priority()
int hostname(char name[], size_t maxnamelen)
Holds a data sample received by the transport.
void set_dscp_codepoint(int cp, ACE_SOCK &socket)
virtual ACE_Message_Block * release(void)
int control(int cmd, void *) const
ACE_Message_Block * cont(void) const
int get_local_addr(ACE_Addr &) const
Defines class that represents a transport packet header.
ACE_UINT32 message_length_
UdpDataLink(const UdpTransport_rch &transport, Priority priority, const ReactorTask_rch &reactor_task, bool active)
int set(const ACE_INET_Addr &)
map TRANSPORT_PRIORITY values directly.
ACE_SOCK_Dgram & socket()
#define OPENDDS_TEST_AND_CALL(TYPE, TEST, CALL)
bool open_appropriate_socket_type(ACE_SOCK_Dgram &socket, const ACE_INET_Addr &local_address, int *proto_family)
u_short get_port_number(void) const
UdpReceiveStrategy_rch recv_strategy_
static const ACE_Time_Value zero
#define VDBG_LVL(DBG_ARGS, LEVEL)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
String get_fully_qualified_hostname(ACE_INET_Addr *addr)
#define ACE_NEW_RETURN(POINTER, CONSTRUCTOR, RET_VAL)
bool is_loopback_
Is remote attached to same transport ?
#define ACE_ERROR_RETURN(X, Y)
RcHandle< T > dynamic_rchandle_cast(const RcHandle< U > &h)
#define ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY
ssize_t send(const void *buf, size_t n, const ACE_Addr &addr, int flags=0) const
The Internal API and Implementation of OpenDDS.