diff -r 12af337248b1 -r bd7edf625bdd clock2/clockengines/clockserver/server/src/clockserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock2/clockengines/clockserver/server/src/clockserver.cpp Wed Sep 01 12:32:31 2010 +0100 @@ -0,0 +1,270 @@ +/* +* Copyright (c) 2008 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: The source file of the CClkSrvMain class. +* +*/ + +// System includes +#include +#include + +// User includes +#include "clockserver.h" +#include "clockserversession.h" +#include "clockservercommon.h" +#include "clockserverimpl.h" +#include "clockprivatecrkeys.h" +#include "clock_debug.h" + +// Constants +const TInt KClockServerMajorVN( 1 ); +const TInt KClockServerMinorVN( 0 ); +const TInt KClockServerBuildVN( 1 ); + +// --------------------------------------------------------- +// CClkSrvMain::NewL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +CClkSrvMain* CClkSrvMain::NewL() + { + __PRINTS( "CClkSrvMain::NewL - Entry" ); + + CClkSrvMain* clockServer = new( ELeave ) CClkSrvMain( CActive::EPriorityStandard ); + CleanupStack::PushL( clockServer ); + + clockServer->ConstructL(); + clockServer->StartL( KNameClockServer ); + + CleanupStack::Pop( clockServer ); + + __PRINTS( "CClkSrvMain::NewL - Exit" ); + + return clockServer; + } + +// --------------------------------------------------------- +// CClkSrvMain::~CClkSrvMain +// rest of the details are commented in the header +// --------------------------------------------------------- +// +CClkSrvMain::~CClkSrvMain() + { + __PRINTS( "CClkSrvMain::~CClkSrvMain - Entry" ); + + // Destroy the server implementation. + if( iClkSrvImpl ) + { + delete iClkSrvImpl; + iClkSrvImpl = NULL; + } + + __PRINTS( "CClkSrvMain::~CClkSrvMain - Exit" ); + } + +// --------------------------------------------------------- +// CClkSrvMain::CClkSrvMain +// rest of the details are commented in the header +// --------------------------------------------------------- +// +CClkSrvMain::CClkSrvMain( TInt aPriority ) + : CServer2( aPriority ), iSessionQue( CClkSrvSession::LinkOffset() ) + { + __PRINTS( "CClkSrvMain::CClkSrvMain - Entry" ); + + // No implementation yet + + __PRINTS( "CClkSrvMain::CClkSrvMain - Exit" ); + } + +// --------------------------------------------------------- +// CClkSrvMain::ConstructL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +void CClkSrvMain::ConstructL() + { + __PRINTS( "CClkSrvMain::ConstructL - Entry" ); + + iClkSrvImpl = CClkSrvImpl::NewL( this ); + + // Restore the state of the clockserver system. + RestoreStateL(); + + __PRINTS( "CClkSrvMain::ConstructL - Exit" ); + } + +// --------------------------------------------------------- +// CClkSrvMain::ConstructL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +void CClkSrvMain::RestoreStateL() + { + __PRINTS( "CClkSrvMain::RestoreState - Entry" ); + + // Here we read from the cenrep the id of the plugin which was active. + // If the id is not NULL, we activate the plugin. + + TInt pluginId( NULL ); + // Get the active plugin id. + TInt errVal( GetActivePluginL( pluginId ) ); + + if( ( KErrNone == errVal ) && pluginId ) + { + // Activate the plugin. + iClkSrvImpl->ActivateAllProtocolsL(); + } + + __PRINTS( "CClkSrvMain::RestoreState - Exit" ); + } + +// --------------------------------------------------------- +// CClkSrvMain::NewSessionL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +CSession2* CClkSrvMain::NewSessionL( const TVersion& aVersion, const RMessage2& /*aMessage*/ ) const + { + __PRINTS( "CClkSrvMain::NewSessionL - Entry" ); + + TVersion versionObj( KClockServerMajorVN, KClockServerMinorVN, KClockServerBuildVN ); + + // Check if the version is supported. + if( !User::QueryVersionSupported( versionObj, aVersion ) ) + { + // Version not supported. + User::Leave( KErrNotSupported ); + } + + // Create a session and add it to the server's session queue. + CClkSrvSession* clockSrvSes = new( ELeave ) CClkSrvSession( iClkSrvImpl ); + + CClkSrvMain* clockServer = ( CClkSrvMain* )this; + + // Add the session to the queue. + clockServer->SessionQue().AddLast( *clockSrvSes ); + + __PRINTS( "CClkSrvMain::NewSessionL - Exit" ); + + // return the session + return clockSrvSes; + } + +// --------------------------------------------------------- +// CClkSrvMain::NotifyAboutChange +// rest of the details are commented in the header +// --------------------------------------------------------- +// +void CClkSrvMain::NotifyAboutChange( TChangedComponent aWhatChanged, TInt aWhoChanged, TInt aNotification ) + { + __PRINTS( "CClkSrvMain::NotifyAboutChange - Entry" ); + + __PRINT( "%d", aNotification ); + + // Get the session que iterator. + TDblQueIter< CClkSrvSession > sessionQueIter( SessionQue() ); + + // Get each session object and notify about the change. + CClkSrvSession* clkSrvSession = NULL; + + while( NULL != ( clkSrvSession = sessionQueIter++ ) ) + { + __PRINTS( "Notify for Session" ); + + clkSrvSession->NotifyAboutChange( aWhatChanged, aWhoChanged, aNotification ); + } + + __PRINTS( "CClkSrvMain::NotifyAboutChange - Exit" ); + } + +// --------------------------------------------------------- +// CClkSrvMain::SessionQue +// rest of the details are commented in the header +// --------------------------------------------------------- +// +TDblQue< CClkSrvSession >& CClkSrvMain::SessionQue() + { + __PRINTS( "CClkSrvMain::SessionQue - Entry" ); + + __PRINTS( "CClkSrvMain::SessionQue - Exit" ); + + return iSessionQue; + } + +// --------------------------------------------------------- +// CClkSrvMain::GetActivePluginL +// rest of the details are commented in the header. +// --------------------------------------------------------- +// +TInt CClkSrvMain::GetActivePluginL( TInt& aPluginId ) const + { + __PRINTS( "CClkSrvMain::GetActivePluginL - Entry" ); + + TInt returnVal( KErrNone ); + CRepository* cenRep( NULL ); + + // Open the repository. + TRAPD( errVal, cenRep = CRepository::NewL( KCRUidNitz ) ); + if( KErrNone == errVal ) + { + // Read the key. + errVal = cenRep->Get( KActiveProtocol, aPluginId ); + + if( KErrNone != errVal ) + { + returnVal = errVal; + } + + delete cenRep; + } + + __PRINTS( "CClkSrvMain::GetActivePluginL - Exit" ); + + return returnVal; + } + +// --------------------------------------------------------- +// CClkSrvMain::SetActivePluginL +// rest of the details are commented in the header. +// --------------------------------------------------------- +// +TInt CClkSrvMain::SetActivePluginL( TInt aPluginId ) + { + __PRINTS( "CClkSrvMain::SetActivePluginL - Entry" ); + + TInt returnVal( KErrNone ); + CRepository* cenRep( NULL ); + + // Open the repository. + TRAPD( errVal, cenRep = CRepository::NewL( KCRUidNitz ) ); + if( KErrNone == errVal ) + { + // Update the key. + errVal = cenRep->Set( KActiveProtocol, aPluginId ); + + if( KErrNone != errVal ) + { + returnVal = errVal; + } + + delete cenRep; + } + + __PRINTS( "CClkSrvMain::SetActivePluginL - Exit" ); + + return returnVal; + } + +// End of file