summaryrefslogtreecommitdiff
path: root/ace/Utils/Multiplexor.i
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Utils/Multiplexor.i')
-rw-r--r--ace/Utils/Multiplexor.i88
1 files changed, 88 insertions, 0 deletions
diff --git a/ace/Utils/Multiplexor.i b/ace/Utils/Multiplexor.i
new file mode 100644
index 00000000000..1763c13ab4c
--- /dev/null
+++ b/ace/Utils/Multiplexor.i
@@ -0,0 +1,88 @@
+/* -*- C++ -*- */
+// $Id$
+
+// Multiplexor.i
+
+int
+Driver::link_from_below (ACE_Module *stream_head)
+{
+ ACE_TRACE ("Driver::link_from_below");
+ ACE_Module *stream_tail = this->alloc_module (this);
+
+ stream_head->link (stream_tail);
+ if (stream_tail->reader ()->open () == -1
+ || stream_tail->writer ()->open () == -1)
+ {
+ stream_tail->close ();
+ return -1;
+ }
+ return 0;
+}
+
+int
+Driver::unlink_from_below (ACE_Module *)
+{
+ ACE_TRACE ("Driver::unlink_from_below");
+ return -1;
+}
+
+ACE_Multiplexor::ACE_Multiplexor (void)
+{
+ ACE_TRACE ("ACE_Multiplexor::ACE_Multiplexor");
+}
+
+ACE_Multiplexor::~ACE_Multiplexor (void)
+{
+ ACE_TRACE ("ACE_Multiplexor::~ACE_Multiplexor");
+}
+
+int
+ACE_Multiplexor::link_from_above (Driver &ld)
+{
+ ACE_TRACE ("ACE_Multiplexor::link_from_above");
+ return ld.link_from_below (this->alloc_lower_module (this));
+}
+
+int
+ACE_Multiplexor::link_from_above (ACE_Multiplexor &lm)
+{
+ ACE_TRACE ("ACE_Multiplexor::link_from_above");
+ return lm.link_from_below (this->alloc_lower_module (this));
+}
+
+int
+ACE_Multiplexor::link_from_below (ACE_Module *stream_head)
+{
+ ACE_TRACE ("ACE_Multiplexor::link_from_below");
+ ACE_Module *stream_tail = this->alloc_upper_module (this);
+
+ stream_head->link (stream_tail);
+ if (stream_tail->reader ()->open () == -1
+ || stream_tail->writer ()->open () == -1)
+ {
+ stream_tail->close ();
+ return -1;
+ }
+ return 0;
+}
+
+int
+ACE_Multiplexor::unlink_from_above (Driver &)
+{
+ ACE_TRACE ("ACE_Multiplexor::unlink_from_above");
+ return -1;
+}
+
+int
+ACE_Multiplexor::unlink_from_above (ACE_Multiplexor &)
+{
+ ACE_TRACE ("ACE_Multiplexor::unlink_from_above");
+ return -1;
+}
+
+int
+ACE_Multiplexor::unlink_from_below (ACE_Module *)
+{
+ ACE_TRACE ("ACE_Multiplexor::unlink_from_below");
+ return -1;
+}