ACE_SOCK_Stream
abstraction.
#include <ace/SOCK_Stream.h>
class ACE_SOCK_Stream : public ACE_SOCK_IO {
public:
ACE_SOCK_Stream (void);
ACE_SOCK_Stream (ACE_HANDLE h);
~ACE_SOCK_Stream (void);
ssize_t recv_n ( void *buf, size_t len, int flags, const ACE_Time_Value *timeout = 0 ) const;
ssize_t recv_n ( void *buf, size_t len, const ACE_Time_Value *timeout = 0 ) const;
ssize_t recvv_n ( iovec iov[], size_t iovcnt, const ACE_Time_Value *timeout = 0 ) const;
ssize_t send_n ( const void *buf, size_t len, int flags, const ACE_Time_Value *timeout = 0 ) const;
ssize_t send_n ( const void *buf, size_t len, const ACE_Time_Value *timeout = 0 ) const;
ssize_t sendv_n ( const iovec iov[], size_t iovcnt, const ACE_Time_Value *timeout = 0 ) const;
ssize_t send_urg ( const void *ptr, size_t len = sizeof (char), const ACE_Time_Value *timeout = 0 ) const;
ssize_t recv_urg ( void *ptr, size_t len = sizeof (char), const ACE_Time_Value *timeout = 0 ) const;
int close_reader (void);
int close_writer (void);
int close (void);
typedef ACE_INET_Addr PEER_ADDR;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
};
ACE_SOCK_IO
class.
ssize_t recv_n (
void *buf,
size_t len,
int flags,
const ACE_Time_Value *timeout = 0
) const;
len
bytes into buf
from handle
.
ssize_t recv_n (
void *buf,
size_t len,
const ACE_Time_Value *timeout = 0
) const;
len
bytes into buf
from handle
.
ssize_t recvv_n (
iovec iov[],
size_t iovcnt,
const ACE_Time_Value *timeout = 0
) const;
iovec
of size iovcnt
to the connected socket.
ssize_t send_n (
const void *buf,
size_t len,
int flags,
const ACE_Time_Value *timeout = 0
) const;
len
bytes into buf
from handle
.
ssize_t send_n (
const void *buf,
size_t len,
const ACE_Time_Value *timeout = 0
) const;
len
bytes into buf
from handle
.
ssize_t sendv_n (
const iovec iov[],
size_t iovcnt,
const ACE_Time_Value *timeout = 0
) const;
iovec
of size iovcnt
to the connected socket.
ssize_t send_urg (
const void *ptr,
size_t len = sizeof (char),
const ACE_Time_Value *timeout = 0
) const;
ssize_t recv_urg (
void *ptr,
size_t len = sizeof (char),
const ACE_Time_Value *timeout = 0
) const;
int close_reader (void);
int close_writer (void);
int close (void);
close_writer
before doing
the close to avoid losing data).
typedef ACE_INET_Addr PEER_ADDR;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
The "_n" I/O methods keep looping until all the data has been
transferred. These methods also work for sockets in
non-blocking mode i.e., they keep looping on EWOULDBLOCK.
timeout
is used to make sure we keep making progress, i.e.,
the same timeout value is used for every I/O operation in the
loop and the timeout is not counted down. If the transfer
times out, the number of bytes transferred so far are
returned.
Errors are reported by -1 and 0 return values.
Methods with the extra flags
argument will always result in
send
getting called. Methods without the extra flags
argument will result in send
getting called on Win32
platforms, and write
getting called on non-Win32 platforms.