diff options
Diffstat (limited to 'TAO/tao/Incoming_Message_Stack.inl')
-rw-r--r-- | TAO/tao/Incoming_Message_Stack.inl | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/TAO/tao/Incoming_Message_Stack.inl b/TAO/tao/Incoming_Message_Stack.inl new file mode 100644 index 00000000000..fd13e03a54e --- /dev/null +++ b/TAO/tao/Incoming_Message_Stack.inl @@ -0,0 +1,63 @@ +// -*- C++ -*- +// +//$Id$ + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +/************************************************************************/ +// Methods for TAO_Incoming_Message_Stack +/************************************************************************/ +namespace TAO +{ +ACE_INLINE +Incoming_Message_Stack::Incoming_Message_Stack() +: top_(0) +{ +} + +ACE_INLINE +Incoming_Message_Stack::~Incoming_Message_Stack() +{ + // Delete all the nodes left behind + TAO_Queued_Data *del = 0; + + while (this->pop (del) != -1) + { + TAO_Queued_Data::release (del); + } +} + +ACE_INLINE void +Incoming_Message_Stack::push(TAO_Queued_Data *data) +{ + data->next_ = this->top_; + this->top_ = data; +} + + + /* @return 0 for Ok, -1 for error */ +ACE_INLINE int +Incoming_Message_Stack::pop (TAO_Queued_Data* &data) +{ + if (this->top_ == 0) + return -1; + + data = this->top_; + this->top_ = data->next_; + + return 0; +} + +ACE_INLINE int +Incoming_Message_Stack::top (TAO_Queued_Data* &data) +{ + if (this->top_ == 0) + return -1; + + data = this->top_; + + return 0; +} + +} /* namespace TAO */ +TAO_END_VERSIONED_NAMESPACE_DECL |