diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1996-10-21 21:41:34 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1996-10-21 21:41:34 +0000 |
commit | a5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch) | |
tree | bcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ace/DEV_IO.h | |
download | ATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz |
Initial revision
Diffstat (limited to 'ace/DEV_IO.h')
-rw-r--r-- | ace/DEV_IO.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/ace/DEV_IO.h b/ace/DEV_IO.h new file mode 100644 index 00000000000..60368bf1d1e --- /dev/null +++ b/ace/DEV_IO.h @@ -0,0 +1,104 @@ +/* -*- C++ -*- */ +// $Id$ + + +// ============================================================================ +// +// = LIBRARY +// ace +// +// = FILENAME +// DEV_IO.h +// +// = AUTHOR +// Gerhard Lenzer and Douglas C. Schmidt +// +// ============================================================================ + +#if !defined (ACE_DEV_IO_H) +#define ACE_DEV_IO_H + +#include "ace/DEV.h" +#include "ace/DEV_Addr.h" + +class ACE_Export ACE_DEV_IO : public ACE_DEV + // = TITLE + // Read/Write operations on Devices. +{ +friend class ACE_DEV_Connector; +public: + ACE_DEV_IO (void); + // Default constructor. + + // = Various send operations. + ssize_t send (const void *buf, size_t n) const; + // send upto <n> bytes in <buf>. + + ssize_t recv (void *buf, size_t n) const; + // Recv upto <n> bytes in <buf>. + + ssize_t send_n (const void *buf, size_t n) const; + // Send n bytes, keep trying until n are sent. + + ssize_t recv_n (void *buf, size_t n) const; + // Recv n bytes, keep trying until n are received. + +#if defined (ACE_HAS_STREAM_PIPES) + ssize_t recv (ACE_Str_Buf *cntl, + ACE_Str_Buf *data, + int *band, + int *flags) const; + // Recv bytes via STREAM pipes using "band" mode. + + ssize_t send (const ACE_Str_Buf *cntl, + const ACE_Str_Buf *data, + int band, + int flags = 0) const; + // Send bytes via STREAM pipes using "band" mode. + + ssize_t recv (ACE_Str_Buf *cntl, + ACE_Str_Buf *data, + int *flags) const; + // Recv <cntl> and <data> via STREAM pipes. + + ssize_t send (const ACE_Str_Buf *cntl, + const ACE_Str_Buf *data, + int flags = 0) const; + // Send <cntl> and <data> via STREAM pipes. +#endif /* ACE_HAS_STREAM_PIPES */ + + ssize_t send (const iovec iov[], size_t n) const; + // Send iovecs via <::writev>. + + ssize_t recv (iovec iov[], size_t n) const; + // Recv iovecs via <::readv>. + + ssize_t send (size_t n, ...) const; + // Send N char *ptrs and int lengths. Note that the char *'s + // precede the ints (basically, an varargs version of writev). The + // count N is the *total* number of trailing arguments, *not* a + // couple of the number of tuple pairs! + + ssize_t recv (size_t n, ...) const; + // This is an interface to ::readv, that doesn't use the struct + // iovec explicitly. The ... can be passed as an arbitrary number + // of (char *ptr, int len) tuples. However, the count N is the + // *total* number of trailing arguments, *not* a couple of the + // number of tuple pairs! + + ssize_t send (const void *buf, size_t n, ACE_OVERLAPPED *overlapped) const; + // Send <n> bytes via Win32 WriteFile using overlapped I/O. + + ssize_t recv (void *buf, size_t n, ACE_OVERLAPPED *overlapped) const; + // Recv <n> bytes via Win32 ReadFile using overlapped I/O. + + void dump (void) const; + // Dump the state of an object. + + ACE_ALLOC_HOOK_DECLARE; + // Declare the dynamic allocation hooks. +}; + +#include "ace/DEV_IO.i" + +#endif /* ACE_DEV_IO_H */ |