blob: 85a965bcabe8042509be6ce4944ae9b1d8716af5 [file] [log] [blame]
// util/PooledBase.cpp -*- mode: c++ -*-
/*=========================================================================
* Copyright (c) 2004-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
#include "PooledBase.hpp"
#include "HostAsm.hpp"
#include "PooledBasePool.hpp"
#include <typeinfo>
namespace gemfire {
PooledBase::PooledBase( PooledBasePool* pool )
: m_refCount( 0 ),
m_pool( pool )
{
GF_D_ASSERT( m_pool != NULL );
}
PooledBase::~PooledBase( )
{
m_pool = NULL;
}
void PooledBase::preserveSB( ) const
{
PooledBase* self = const_cast<PooledBase*>( this );
HostAsm::atomicAdd( self->m_refCount, 1 );
}
void PooledBase::releaseSB( ) const
{
PooledBase* self = const_cast<PooledBase*>( this );
if ( HostAsm::atomicAdd( self->m_refCount, -1 ) == 0 ) {
m_pool->returnToPool( self );
}
}
void PooledBase::prePool( )
{
}
void PooledBase::postPool( )
{
}
}