summaryrefslogtreecommitdiff
path: root/ace/IOStream_T.i
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1997-06-23 06:48:57 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1997-06-23 06:48:57 +0000
commit9e390129c5d397a9c075eb100fdeac1dc6bed81d (patch)
tree50cd8b290d7648139ee43f3245ffeb84468ced78 /ace/IOStream_T.i
parent66ba1aae9495f3c0e72238c5752dbd19d5fd455a (diff)
downloadATCD-9e390129c5d397a9c075eb100fdeac1dc6bed81d.tar.gz
*** empty log message ***
Diffstat (limited to 'ace/IOStream_T.i')
-rw-r--r--ace/IOStream_T.i124
1 files changed, 124 insertions, 0 deletions
diff --git a/ace/IOStream_T.i b/ace/IOStream_T.i
new file mode 100644
index 00000000000..59617a3475f
--- /dev/null
+++ b/ace/IOStream_T.i
@@ -0,0 +1,124 @@
+/* -*- C++ -*- */
+
+template <class STREAM> ssize_t
+ACE_Streambuf_T<STREAM>::send (char *buf, ssize_t len)
+{
+ return peer_->send_n (buf,len);
+}
+
+template <class STREAM> ssize_t
+ACE_Streambuf_T<STREAM>::recv (char *buf,
+ ssize_t len,
+ ACE_Time_Value *tv)
+{
+ return this->recv (buf, len, 0, tv);
+}
+
+template <class STREAM> ssize_t
+ACE_Streambuf_T<STREAM>::recv (char *buf,
+ ssize_t len,
+ int flags,
+ ACE_Time_Value * tv)
+{
+ ssize_t rval = peer_->recv (buf, len, flags, tv);
+ return rval;
+}
+
+template <class STREAM> ssize_t
+ACE_Streambuf_T<STREAM>::recv_n (char *buf,
+ ssize_t len,
+ int flags = 0,
+ ACE_Time_Value *tv)
+{
+ ssize_t rval = peer_->recv_n (buf, len, flags, tv);
+ return rval;
+}
+
+template <class STREAM> ACE_HANDLE
+ACE_Streambuf_T<STREAM>::get_handle (void)
+{
+ return peer_ ? peer_->get_handle () : 0;
+}
+
+template <class STREAM> ACE_INLINE
+ACE_SOCK_Dgram_SC<STREAM>::ACE_SOCK_Dgram_SC (void)
+{
+}
+
+template <class STREAM> ACE_INLINE
+ACE_SOCK_Dgram_SC<STREAM>::ACE_SOCK_Dgram_SC (STREAM &source,
+ ACE_INET_Addr &dest)
+ : STREAM (source),
+ peer_ (dest)
+{
+}
+
+template <class STREAM> ACE_INLINE ssize_t
+ACE_SOCK_Dgram_SC<STREAM>::send_n (char *buf,
+ ssize_t len)
+{
+ return STREAM::send (buf, len, peer_);
+}
+
+template <class STREAM> ACE_INLINE ssize_t
+ACE_SOCK_Dgram_SC<STREAM>::recv (char *buf,
+ ssize_t len,
+ ACE_Time_Value *tv)
+{
+ return recv (buf, len, 0, tv);
+}
+
+template <class STREAM> ACE_INLINE ssize_t
+ACE_SOCK_Dgram_SC<STREAM>::recv (char *buf,
+ ssize_t len,
+ int flags,
+ ACE_Time_Value *tv)
+{
+ if (tv != 0)
+ {
+ ACE_HANDLE handle = this->get_handle ();
+ ACE_Handle_Set handle_set;
+
+ handle_set.set_bit (handle);
+
+ switch (ACE_OS::select (int (handle) + 1,
+ (fd_set *) handle_set, // read_fds.
+ (fd_set *) 0, // write_fds.
+ (fd_set *) 0, // exception_fds.
+ tv))
+ {
+ case 0:
+ errno = ETIME;
+ case -1:
+ return -1;
+ default:
+ ; // Do the 'recv' below
+ }
+ }
+
+ int rval = STREAM::recv (buf, len, peer_, flags);
+#if defined (ACE_WIN32)
+ if (rval == SOCKET_ERROR)
+ if (::WSAGetLastError () == WSAEMSGSIZE)
+ if (ACE_BIT_ENTABLED (flags, MSG_PEEK))
+ rval = len;
+#endif /* ACE_WIN32 */
+ return rval < len ? rval : len;
+}
+
+template <class STREAM> ACE_INLINE ssize_t
+ACE_SOCK_Dgram_SC<STREAM>::recv_n (char *buf,
+ ssize_t len,
+ int flags = 0,
+ ACE_Time_Value *tv)
+{
+ int rval = this->recv (buf, len, flags, tv);
+ return rval;
+}
+
+template <class STREAM> ACE_INLINE int
+ACE_SOCK_Dgram_SC<STREAM>::get_remote_addr (ACE_INET_Addr &addr) const
+{
+ addr = peer_;
+ return 0;
+}