diff options
Diffstat (limited to 'TAO/tao/Queued_Message.cpp')
-rw-r--r-- | TAO/tao/Queued_Message.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/TAO/tao/Queued_Message.cpp b/TAO/tao/Queued_Message.cpp new file mode 100644 index 00000000000..1cd30ae2e2e --- /dev/null +++ b/TAO/tao/Queued_Message.cpp @@ -0,0 +1,97 @@ +// -*- C++ -*- +// $Id$ + +#include "Queued_Message.h" + +#if !defined (__ACE_INLINE__) +# include "Queued_Message.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(tao, Queued_Message, "$Id$") + +TAO_Queued_Message::TAO_Queued_Message (void) + : connection_closed_ (0) + , send_failure_ (0) + , timeout_ (0) + , next_ (0) + , prev_ (0) +{ +} + +TAO_Queued_Message::~TAO_Queued_Message (void) +{ +} + +void +TAO_Queued_Message::connection_closed (void) +{ + this->connection_closed_ = 1; +} + +void +TAO_Queued_Message::send_failure (void) +{ + this->send_failure_ = 1; +} + +void +TAO_Queued_Message::timeout (void) +{ + this->timeout_ = 1; +} + +void +TAO_Queued_Message::remove_from_list (TAO_Queued_Message *&head, + TAO_Queued_Message *&tail) +{ + if (this->prev_ != 0) + this->prev_->next_ = this->next_; + else + head = this->next_; + + if (this->next_ != 0) + this->next_->prev_ = this->prev_; + else + tail = this->prev_; + + this->next_ = 0; + this->prev_ = 0; +} + +void +TAO_Queued_Message::push_back (TAO_Queued_Message *&head, + TAO_Queued_Message *&tail) +{ + if (tail == 0) + { + tail = this; + head = this; + this->next_ = 0; + this->prev_ = 0; + return; + } + + tail->next_ = this; + this->prev_ = tail; + this->next_ = 0; + tail = this; +} + +void +TAO_Queued_Message::push_front (TAO_Queued_Message *&head, + TAO_Queued_Message *&tail) +{ + if (head == 0) + { + tail = this; + head = this; + this->next_ = 0; + this->prev_ = 0; + return; + } + + head->prev_ = this; + this->next_ = head; + this->prev_ = 0; + head = this; +} |