#include <ace/SOCK_Dgram.h>
class ACE_SOCK_Dgram : public ACE_SOCK {
public:
ACE_SOCK_Dgram (void);
ACE_SOCK_Dgram ( const ACE_Addr &local, int protocol_family = PF_INET, int protocol = 0, int reuse_addr = 0 );
ACE_SOCK_Dgram ( const ACE_Addr &local, int protocol_family, int protocol, ACE_Protocol_Info *protocolinfo, ACE_SOCK_GROUP g = 0, u_long flags = 0, int reuse_addr = 0 );
int open ( const ACE_Addr &local, int protocol_family = PF_INET, int protocol = 0, int reuse_addr = 0 );
int open ( const ACE_Addr &local, int protocol_family, int protocol, ACE_Protocol_Info *protocolinfo, ACE_SOCK_GROUP g = 0, u_long flags = 0, int reuse_addr = 0 );
~ACE_SOCK_Dgram (void);
ssize_t send ( const void *buf, size_t n, const ACE_Addr &addr, int flags = 0 ) const;
ssize_t recv ( void *buf, size_t n, ACE_Addr &addr, int flags = 0 ) const;
ssize_t recv ( iovec *io_vec, ACE_Addr &addr, int flags = 0, const ACE_Time_Value *timeout = 0 ) const;
ssize_t send ( const iovec iov[], size_t n, const ACE_Addr &addr, int flags = 0 ) const;
ssize_t recv ( iovec iov[], size_t n, ACE_Addr &addr, int flags = 0 ) const;
ssize_t recv ( void *buf, size_t n, ACE_Addr &addr, int flags, const ACE_Time_Value *timeout ) const;
ssize_t send ( const void *buf, size_t n, ACE_Addr &addr, int flags, const ACE_Time_Value *timeout ) const;
ssize_t send ( const iovec buffers[], int buffer_count, size_t &number_of_bytes_sent, int flags, const ACE_Addr &addr, ACE_OVERLAPPED *overlapped, ACE_OVERLAPPED_COMPLETION_FUNC func ) const;
ssize_t recv ( iovec buffers[], int buffer_count, size_t &number_of_bytes_recvd, int &flags, ACE_Addr &addr, ACE_OVERLAPPED *overlapped, ACE_OVERLAPPED_COMPLETION_FUNC func ) const;
ssize_t send ( const void *buf, size_t n, const ACE_Addr &addr, int flags, ACE_OVERLAPPED *overlapped, ACE_OVERLAPPED_COMPLETION_FUNC func ) const;
ssize_t recv ( void *buf, size_t n, ACE_Addr &addr, int flags, ACE_OVERLAPPED *overlapped, ACE_OVERLAPPED_COMPLETION_FUNC func ) const;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
int shared_open (const ACE_Addr &local, int protocol_family);
private:
int get_remote_addr (ACE_Addr &) const;
};
ACE_SOCK_Dgram (void);
ACE_SOCK_Dgram (
const ACE_Addr &local,
int protocol_family = PF_INET,
int protocol = 0,
int reuse_addr = 0
);
local
address.
ACE_SOCK_Dgram (
const ACE_Addr &local,
int protocol_family,
int protocol,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g = 0,
u_long flags = 0,
int reuse_addr = 0
);
local
address. The qos_params
are passed to ACE_OS::join_leaf
.
int open (
const ACE_Addr &local,
int protocol_family = PF_INET,
int protocol = 0,
int reuse_addr = 0
);
local
address.
int open (
const ACE_Addr &local,
int protocol_family,
int protocol,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g = 0,
u_long flags = 0,
int reuse_addr = 0
);
local
address. The qos_params
are passed to ACE_OS::join_leaf
.
~ACE_SOCK_Dgram (void);
ssize_t send (
const void *buf,
size_t n,
const ACE_Addr &addr,
int flags = 0
) const;
n
byte buf
to the datagram socket (uses sendto(3)
).
ssize_t recv (
void *buf,
size_t n,
ACE_Addr &addr,
int flags = 0
) const;
n
byte buf
from the datagram socket (uses
recvfrom(3)
).
ssize_t recv (
iovec *io_vec,
ACE_Addr &addr,
int flags = 0,
const ACE_Time_Value *timeout = 0
) const;
iov_base
field of io_vec
using the
``delete []'' syntax.
ssize_t send (
const iovec iov[],
size_t n,
const ACE_Addr &addr,
int flags = 0
) const;
iovec
of size n
to the datagram socket (uses
sendmsg(3)
).
ssize_t recv (
iovec iov[],
size_t n,
ACE_Addr &addr,
int flags = 0
) const;
iovec
of size n
to the datagram socket (uses
recvmsg(3)
).
ssize_t recv (
void *buf,
size_t n,
ACE_Addr &addr,
int flags,
const ACE_Time_Value *timeout
) const;
timeout
amount of time to receive a datagram into
buf
. The ACE_Time_Value
indicates how long to blocking
trying to receive. If timeout
== 0, the caller will block
until action is possible, else will wait until the relative time
specified in *timeout
elapses). If recv
times out a -1 is
returned with errno == ETIME
. If it succeeds the number of
bytes received is returned.
ssize_t send (
const void *buf,
size_t n,
ACE_Addr &addr,
int flags,
const ACE_Time_Value *timeout
) const;
timeout
amount of time to receive a datagram into
buf
. The ACE_Time_Value
indicates how long to blocking
trying to receive. If timeout
== 0, the caller will block
until action is possible, else will wait until the relative time
specified in *timeout
elapses). If send
times out a -1 is
returned with errno == ETIME
. If it succeeds the number of
bytes received is returned.
ssize_t send (
const iovec buffers[],
int buffer_count,
size_t &number_of_bytes_sent,
int flags,
const ACE_Addr &addr,
ACE_OVERLAPPED *overlapped,
ACE_OVERLAPPED_COMPLETION_FUNC func
) const;
buffer_count
worth of buffers
to addr
using overlapped
I/O (uses WSASentTo
). Returns 0 on success.
ssize_t recv (
iovec buffers[],
int buffer_count,
size_t &number_of_bytes_recvd,
int &flags,
ACE_Addr &addr,
ACE_OVERLAPPED *overlapped,
ACE_OVERLAPPED_COMPLETION_FUNC func
) const;
buffer_count
worth of buffers
from addr
using
overlapped I/O (uses WSARecvFrom
). Returns 0 on success.
ssize_t send (
const void *buf,
size_t n,
const ACE_Addr &addr,
int flags,
ACE_OVERLAPPED *overlapped,
ACE_OVERLAPPED_COMPLETION_FUNC func
) const;
n
byte buf
to the datagram socket (uses WSASentTo
).
ssize_t recv (
void *buf,
size_t n,
ACE_Addr &addr,
int flags,
ACE_OVERLAPPED *overlapped,
ACE_OVERLAPPED_COMPLETION_FUNC func
) const;
n
byte buf
from the datagram socket (uses
WSARecvFrom
).
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;