gradido/login_server/src/cpp/lib/AutoPtrContainer.cpp
Ulf Gebhardt ac99a7097e Add 'login_server/' from commit 'ca71af1817a801db9a108c205bc298250d498c4b'
git-subtree-dir: login_server
git-subtree-mainline: 09ebb40de21084bb10ee466429d900a5e757d349
git-subtree-split: ca71af1817a801db9a108c205bc298250d498c4b
2021-03-17 22:05:25 +01:00

34 lines
597 B
C++

#include "AutoPtrContainer.h"
#include <assert.h>
AutoPtrContainer::AutoPtrContainer() : mReferenceCount(1)
{
}
AutoPtrContainer::AutoPtrContainer(int referenceCount)
: mReferenceCount(referenceCount)
{
}
AutoPtrContainer::~AutoPtrContainer()
{
mReferenceCount = 0;
}
void AutoPtrContainer::duplicate()
{
Poco::ScopedLock<Poco::FastMutex> lock(mReferenceCountMutex);
mReferenceCount++;
}
void AutoPtrContainer::release()
{
Poco::ScopedLock<Poco::FastMutex> lock(mReferenceCountMutex);
assert(mReferenceCount > 0);
mReferenceCount--;
if (0 == mReferenceCount) {
delete this;
}
}