diff -r 72d484772ca6 -r a3a1ae9acec6 emailservices/emailframework/src/CFSClientAPIRequestHandler.cpp --- a/emailservices/emailframework/src/CFSClientAPIRequestHandler.cpp Fri Mar 12 15:41:14 2010 +0200 +++ b/emailservices/emailframework/src/CFSClientAPIRequestHandler.cpp Mon Mar 15 12:39:10 2010 +0200 @@ -26,24 +26,53 @@ // CFSMailRequestHandler::CFSMailRequestHandler // ----------------------------------------------------------------------------- CFSClientAPIRequestHandler::CFSClientAPIRequestHandler( - MEmailClientPluginManager* aPluginManager ) : iPluginManager(aPluginManager) + MEmailClientPluginManager* aPluginManager ) : iPluginManager(aPluginManager), iInstanceCounter( 1 ) { FUNC_LOG; - - // store pointer to TLS - TInt err = Dll::SetTls(static_cast(this)); } // ----------------------------------------------------------------------------- // CFSMailRequestHandler::~CFSMailRequestHandler // ----------------------------------------------------------------------------- - CFSClientAPIRequestHandler::~CFSClientAPIRequestHandler() { FUNC_LOG; } // ----------------------------------------------------------------------------- +// CFSMailRequestHandler::GetInstanceL +// ----------------------------------------------------------------------------- +CFSClientAPIRequestHandler* CFSClientAPIRequestHandler::GetInstanceL( MEmailClientPluginManager* aPluginManager ) + { + CFSClientAPIRequestHandler *requestHandler = static_cast( Dll::Tls() ); + if ( requestHandler == NULL ) + { + requestHandler = CFSClientAPIRequestHandler::NewL( aPluginManager ); + } + else + { + requestHandler->iInstanceCounter++; + } + + return requestHandler; + } + +// ----------------------------------------------------------------------------- +// CFSMailRequestHandler::ReleaseInstance +// ----------------------------------------------------------------------------- +void CFSClientAPIRequestHandler::ReleaseInstance() + { + if( iInstanceCounter > 1 ) + { + iInstanceCounter--; + } + else + { + delete this; + } + } + +// ----------------------------------------------------------------------------- // CFSMailRequestHandler::NewL // ----------------------------------------------------------------------------- CFSClientAPIRequestHandler* CFSClientAPIRequestHandler::NewL(