summaryrefslogtreecommitdiff
path: root/ace/Pipe.h
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>2005-09-20 13:40:57 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>2005-09-20 13:40:57 +0000
commitf323394412a61141d439faef596fe272a7aa00b1 (patch)
treee1450e5c84176d4200fb5ddc6a8b395e458a3923 /ace/Pipe.h
parent29fa76063efabe9c9c982ffb7b74fa6b3e2553b5 (diff)
downloadATCD-f323394412a61141d439faef596fe272a7aa00b1.tar.gz
ChangeLogTag:Tue Sep 20 10:10:00 UTC 2005 Simon Massey <simon.massey@prismtech.com>
Diffstat (limited to 'ace/Pipe.h')
-rw-r--r--ace/Pipe.h73
1 files changed, 72 insertions, 1 deletions
diff --git a/ace/Pipe.h b/ace/Pipe.h
index e6a0d153079..f8f103dd9f0 100644
--- a/ace/Pipe.h
+++ b/ace/Pipe.h
@@ -10,7 +10,6 @@
*/
//==========================================================================
-
#ifndef ACE_PIPE_H
#define ACE_PIPE_H
@@ -24,6 +23,13 @@
#include "ace/Default_Constants.h"
+#include "ace/OS_NS_sys_uio.h"
+#include "ace/OS_NS_unistd.h"
+
+// Forward decl.
+class ACE_Message_Block;
+class ACE_Time_Value;
+
/**
* @class ACE_Pipe
*
@@ -77,6 +83,71 @@ public:
/// Dump the state of the object.
void dump (void) const;
+ /// send upto <n> bytes in <buf>.
+ ssize_t send (const void *buf, size_t n) const;
+
+ /// Recv upto <n> bytes in <buf>.
+ ssize_t recv (void *buf, size_t n) const;
+
+ /// Send n bytes, keep trying until n are sent.
+ ssize_t send_n (const void *buf, size_t n) const;
+
+ /// Send all the <message_block>s chained through their <next> and
+ /// <cont> pointers. This call uses the underlying OS gather-write
+ /// operation to reduce the domain-crossing penalty.
+ ssize_t send_n (const ACE_Message_Block *message_block,
+ const ACE_Time_Value *timeout = 0,
+ size_t *bytes_transferred = 0);
+
+ /// Recv n bytes, keep trying until n are received.
+ ssize_t recv_n (void *buf, size_t n) const;
+
+ /// Send iovecs via <::writev>.
+ ssize_t send (const iovec iov[], int n) const;
+
+ /// Recv iovecs via <::readv>.
+ ssize_t recv (iovec iov[], int 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 send (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 recv (size_t n, ...) const;
+
+ /// Send <n> bytes via Win32 WriteFile using overlapped I/O.
+ ssize_t send (const void *buf,
+ size_t n,
+ ACE_OVERLAPPED *overlapped) const;
+
+ /// Recv <n> bytes via Win32 ReadFile using overlapped I/O.
+ ssize_t recv (void *buf,
+ size_t n,
+ ACE_OVERLAPPED *overlapped) const;
+
+ /// Send an <iovec> of size <n> to the file.
+ ssize_t sendv (const iovec iov[],
+ int n) const;
+
+ /// Send an <iovec> of size <n> to the file. Will block until all
+ /// bytes are sent or an error occurs.
+ ssize_t sendv_n (const iovec iov[],
+ int n) const;
+
+ /// Receive an <iovec> of size <n> to the file.
+ ssize_t recvv_n (iovec iov[],
+ int n) const;
+
private:
ACE_HANDLE handles_[2];
};