summaryrefslogtreecommitdiff
path: root/ace/Utils/Templates/Message_Block_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Utils/Templates/Message_Block_T.cpp')
-rw-r--r--ace/Utils/Templates/Message_Block_T.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/ace/Utils/Templates/Message_Block_T.cpp b/ace/Utils/Templates/Message_Block_T.cpp
new file mode 100644
index 00000000000..4916fd211e7
--- /dev/null
+++ b/ace/Utils/Templates/Message_Block_T.cpp
@@ -0,0 +1,46 @@
+// $Id$
+
+#if !defined (ACE_MESSAGE_BLOCK_T_C)
+#define ACE_MESSAGE_BLOCK_T_C
+
+
+ACE_RCSID(ace, Message_Block_T, "$Id$")
+
+#if !defined (__ACE_INLINE__)
+#include "ace/Message_Block_T.i"
+#endif /* __ACE_INLINE__ */
+
+template<class L>
+ACE_Locked_Data_Block<L>::~ACE_Locked_Data_Block (void)
+{
+}
+
+template<class ACE_LOCK> ACE_Data_Block *
+ACE_Locked_Data_Block<ACE_LOCK>::clone_nocopy (ACE_Message_Block::Message_Flags mask) const
+{
+ ACE_TRACE ("ACE_Locked_Data_Block::clone_nocopy");
+
+ // You always want to clear this one to prevent memory leaks but you
+ // might add some others later.
+ const ACE_Message_Block::Message_Flags always_clear =
+ ACE_Message_Block::DONT_DELETE;
+
+ ACE_Locked_Data_Block<ACE_LOCK> *nb;
+
+ ACE_NEW_MALLOC_RETURN (nb,
+ ACE_static_cast(ACE_Locked_Data_Block<ACE_LOCK>*,
+ this->data_block_allocator ()->malloc (sizeof (ACE_Locked_Data_Block<ACE_LOCK>))),
+ ACE_Locked_Data_Block<ACE_LOCK> (this->size (),
+ this->msg_type (),
+ 0,
+ this->allocator_strategy (),
+ this->flags (),
+ this->data_block_allocator ()),
+ 0);
+
+ // Set new flags minus the mask...
+ nb->clr_flags (mask | always_clear);
+ return nb;
+}
+
+#endif /* ACE_MESSAGE_BLOCK_T_C */