diff options
Diffstat (limited to 'ace/Utils/Multiplexor.i')
-rw-r--r-- | ace/Utils/Multiplexor.i | 88 |
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; +} |