diff -r 000000000000 -r 61fad867f68e ximpfw/presence/srcpresencecache/presencecacheserver/presencecacheserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/presence/srcpresencecache/presencecacheserver/presencecacheserver.cpp Wed Nov 03 09:32:20 2010 +0530 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Implementation for Presence Cache Server +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include + +#include "presencecacheservicestore.h" +#include "presencecacheserver.h" +#include "presencecachesession.h" +#include "presencecachedefs.h" +#include "ximptrace.h" + +//Include Cache server namespace +using namespace NCacheSrv; + + +// ----------------------------------------------------------------------------- +// CPresenceCacheServer::NewLC() +// ----------------------------------------------------------------------------- +// +CPresenceCacheServer* CPresenceCacheServer::NewLC() + { + CPresenceCacheServer* self = new( ELeave ) CPresenceCacheServer(EPriorityNormal); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CPresenceCacheServer::~CPresenceCacheServer() +// ----------------------------------------------------------------------------- +// +CPresenceCacheServer::~CPresenceCacheServer() + { + DoCancel(); + TInt count = iPresenceCache.Count(); + for (TInt i=0;i( this ); + CSession2* session = NULL; + + session = CPresenceCacheSession::NewL( *self ); + TRACE( _L("CPresenceCacheServer::NewSessionL - end")); + return session; + } + +// ----------------------------------------------------------------------------- +// CPresenceCacheServer::ExecuteL() +// ----------------------------------------------------------------------------- +// +void CPresenceCacheServer::ExecuteL() + { + TRACE( _L("CPresenceCacheServer::ExecuteL - enter")); + // start scheduler + CActiveScheduler* pA = new( ELeave )CActiveScheduler; + CleanupStack::PushL( pA ); + CActiveScheduler::Install( pA ); + + // create server + CPresenceCacheServer* server = CPresenceCacheServer::NewLC(); + server->StartL( NName::KSymbianServer ); + + //Signal client that we are started + RProcess().Rendezvous( KErrNone ); + + //Execute the server + CActiveScheduler::Start(); // CSI: 3 # + + //Cleanup + CleanupStack::PopAndDestroy( server );//server + CleanupStack::PopAndDestroy( pA ); + CActiveScheduler::Install( NULL ); + TRACE( _L("CPresenceCacheServer::ExecuteL - end")); + } + +// ----------------------------------------------------------------------------- +// E32Main() +// Provides the API for the operating system to start the executable. +// Returns the address of the function to be called. +// ----------------------------------------------------------------------------- +// +GLDEF_C TInt E32Main() + { + TRACE( _L("Cache E32Main - enter") ); + + __UHEAP_MARK; + + User::RenameThread( NName::KMainThread ); + + CTrapCleanup* tc = CTrapCleanup::New(); + if( !tc ) + { + return KErrNoMemory; + } + + TRAPD( err, CPresenceCacheServer::ExecuteL() ); + delete tc; + + __UHEAP_MARKEND; + + TRACE_1( _L("Cache E32Main - exit: %d"), err ); + return err; + } + +// ----------------------------------------------------------------------------- +// CShutdown::RunL() +// ----------------------------------------------------------------------------- +// +void CShutdown::RunL() + { + CActiveScheduler::Stop(); + } + +inline CShutdown::CShutdown() + :CTimer(-1) + {CActiveScheduler::Add(this);} +inline void CShutdown::ConstructL() + {CTimer::ConstructL();} +inline void CShutdown::Start() + {After(KMyShutdownDelay);} + +// End of File +