diff options
| author | Charles E. Rolke <chug@apache.org> | 2011-01-10 20:43:56 +0000 |
|---|---|---|
| committer | Charles E. Rolke <chug@apache.org> | 2011-01-10 20:43:56 +0000 |
| commit | c95e40580ef57d5a1e36e9105ae18dbffe3c3de8 (patch) | |
| tree | 9ea688597fefd0ae6ab1c42b8b99d142f42b082f /cpp/bindings/qpid/dotnet/src/Sender.cpp | |
| parent | 02d83427237f6929595692fa12b9a614e523ccda (diff) | |
| download | qpid-python-c95e40580ef57d5a1e36e9105ae18dbffe3c3de8.tar.gz | |
.NET Binding for Qpid Messaging, in every .NET object that keeps
a reference to unmanaged memory:
* Function Cleanup() is deleted and cleanup is moved to Finalizer.
* Destructor calls Finalizer.
* Finalizer takes a lock before deleting unmanaged memory.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1057350 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/bindings/qpid/dotnet/src/Sender.cpp')
| -rw-r--r-- | cpp/bindings/qpid/dotnet/src/Sender.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/cpp/bindings/qpid/dotnet/src/Sender.cpp b/cpp/bindings/qpid/dotnet/src/Sender.cpp index a051026e71..584075ef5f 100644 --- a/cpp/bindings/qpid/dotnet/src/Sender.cpp +++ b/cpp/bindings/qpid/dotnet/src/Sender.cpp @@ -67,16 +67,23 @@ namespace Messaging { // Destructor
Sender::~Sender()
{
- Cleanup();
+ this->!Sender();
}
// Finalizer
Sender::!Sender()
{
- Cleanup();
+ msclr::lock lk(this);
+
+ if (NULL != senderp)
+ {
+ delete senderp;
+ senderp = NULL;
+ }
}
+
// Copy constructor
Sender::Sender(const Sender ^ sender)
: parentSession(sender->parentSession)
@@ -101,17 +108,6 @@ namespace Messaging { }
- // Destroys kept object
- // TODO: add lock
- void Sender::Cleanup()
- {
- if (NULL != senderp)
- {
- delete senderp;
- senderp = NULL;
- }
- }
-
//
// Send(msg)
//
|
