summaryrefslogtreecommitdiff
path: root/ace/TLI_Stream.cpp
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
commita5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch)
treebcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ace/TLI_Stream.cpp
downloadATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz
Initial revision
Diffstat (limited to 'ace/TLI_Stream.cpp')
-rw-r--r--ace/TLI_Stream.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/ace/TLI_Stream.cpp b/ace/TLI_Stream.cpp
new file mode 100644
index 00000000000..babca46d529
--- /dev/null
+++ b/ace/TLI_Stream.cpp
@@ -0,0 +1,99 @@
+// TLI_Stream.cpp
+// $Id$
+
+/* Defines the member functions for the base class of the ACE_TLI_Stream
+ abstraction. */
+
+#define ACE_BUILD_DLL
+#include "ace/TLI_Stream.h"
+#include "ace/Log_Msg.h"
+
+#if defined (ACE_HAS_TLI)
+
+ACE_ALLOC_HOOK_DEFINE(ACE_TLI_Stream)
+
+void
+ACE_TLI_Stream::dump (void) const
+{
+ ACE_TRACE ("ACE_TLI_Stream::dump");
+}
+
+ACE_TLI_Stream::ACE_TLI_Stream (void)
+{
+ ACE_TRACE ("ACE_TLI_Stream::ACE_TLI_Stream");
+}
+
+int
+ACE_TLI_Stream::get_remote_addr (ACE_Addr &sa) const
+{
+ ACE_TRACE ("ACE_TLI_Stream::get_remote_addr");
+ struct netbuf name;
+
+ name.maxlen = sa.get_size ();
+ name.buf = (char *) sa.get_addr ();
+
+#if defined (ACE_HAS_SVR4_TLI)
+ if (ACE_OS::ioctl (this->get_handle (), TI_GETPEERNAME, &name) == -1)
+/* if (ACE_OS::t_getname (this->get_handle (), &name, REMOTENAME) == -1) */
+
+#else /* SunOS4 sucks... */
+ if (0)
+#endif /* ACE_HAS_SVR4_TLI */
+ return -1;
+ else
+ return 0;
+}
+
+/* Send a release and then await the release from the other side */
+
+int
+ACE_TLI_Stream::active_close (void)
+{
+ ACE_TRACE ("ACE_TLI_Stream::active_close");
+ char buf;
+
+ if (this->sndrel () == ACE_INVALID_HANDLE)
+ return ACE_INVALID_HANDLE;
+ if (this->recv (&buf, sizeof buf) == ACE_INVALID_HANDLE)
+ {
+ if (t_errno == TLOOK && this->look () == T_ORDREL)
+ {
+ if (this->rcvrel () == ACE_INVALID_HANDLE)
+ return ACE_INVALID_HANDLE;
+ }
+ else
+ return ACE_INVALID_HANDLE;
+ }
+ return this->close ();
+}
+
+/* Acknowledge the release from the other side and then send the release to
+ the other side. */
+
+int
+ACE_TLI_Stream::passive_close (void)
+{
+ ACE_TRACE ("ACE_TLI_Stream::passive_close");
+ if (this->rcvrel () == ACE_INVALID_HANDLE)
+ return ACE_INVALID_HANDLE;
+ if (this->sndrel () == ACE_INVALID_HANDLE)
+ return ACE_INVALID_HANDLE;
+ return this->close ();
+}
+
+
+int
+ACE_TLI_Stream::close (void)
+{
+ ACE_TRACE ("ACE_TLI_Stream::close");
+ int fd = this->get_handle ();
+
+ this->set_handle (ACE_INVALID_HANDLE);
+
+ if (this->rwflag_)
+ return ACE_OS::close (fd);
+ else
+ return ACE_OS::t_close (fd);
+}
+
+#endif /* ACE_HAS_TLI */