NAME

ACE_SOCK_Stream - Defines the methods in the ACE_SOCK_Stream abstraction.

SYNOPSIS

#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; };

DESCRIPTION

This adds additional wrapper methods atop the ACE_SOCK_IO class.

I/O functions.

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;

Send/receive ``urgent'' data (see TCP specs...).

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;

Selectively close endpoints.

int close_reader (void);

int close_writer (void);

int close (void);

Meta-type info

typedef ACE_INET_Addr PEER_ADDR;

void dump (void) const;

ACE_ALLOC_HOOK_DECLARE;

AUTHOR

Doug Schmidt

NOTES

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.

LIBRARY

ace