summaryrefslogtreecommitdiff
path: root/ACE/ace/TSS_Adapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/TSS_Adapter.cpp')
-rw-r--r--ACE/ace/TSS_Adapter.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/ACE/ace/TSS_Adapter.cpp b/ACE/ace/TSS_Adapter.cpp
new file mode 100644
index 00000000000..ddca0236d4f
--- /dev/null
+++ b/ACE/ace/TSS_Adapter.cpp
@@ -0,0 +1,45 @@
+/**
+ * @file TSS_Adapter.cpp
+ *
+ * $Id$
+ *
+ * Originally in Synch.cpp
+ *
+ * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
+ */
+
+#include "ace/TSS_Adapter.h"
+
+ACE_RCSID(ace, TSS_Adapter, "$Id$")
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ACE_TSS_Adapter::ACE_TSS_Adapter (void *object, ACE_THR_DEST f)
+ : ts_obj_ (object),
+ func_ (f)
+{
+ // ACE_TRACE ("ACE_TSS_Adapter::ACE_TSS_Adapter");
+}
+
+void
+ACE_TSS_Adapter::cleanup (void)
+{
+ // ACE_TRACE ("ACE_TSS_Adapter::cleanup");
+ (*this->func_)(this->ts_obj_); // call cleanup routine for ts_obj_
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+extern "C" void
+ACE_TSS_C_cleanup (void *object)
+{
+ // ACE_TRACE ("ACE_TSS_C_cleanup");
+ if (object != 0)
+ {
+ ACE_TSS_Adapter * const tss_adapter = (ACE_TSS_Adapter *) object;
+ // Perform cleanup on the real TS object.
+ tss_adapter->cleanup ();
+ // Delete the adapter object.
+ delete tss_adapter;
+ }
+}