summaryrefslogtreecommitdiff
path: root/TAO/tao/Incoming_Message_Stack.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Incoming_Message_Stack.inl')
-rw-r--r--TAO/tao/Incoming_Message_Stack.inl63
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