diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappdaemon.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappdaemon.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,249 @@ +/* +* 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: alfperfappdeamon implementation. +* +*/ + + +// INCLUDE FILES +#include +#include +#include "alfperfappdaemon.h" + +#include "../../alfdebugextension/inc/alfdebug.h" + +/** + * Reset inactity period in microseconds. + */ +const TInt KAlfPerfAppActivityPollPeriod = 2500000; + +// ============================ MEMBER FUNCTIONS =============================== + +// +// Implementation of CAlfPerfAppDaemonApplication +// + +CApaDocument* CAlfPerfAppDaemonApplication::CreateDocumentL() + { + return new (ELeave) CAlfPerfAppDaemonDocument( *this ); + } + +TUid CAlfPerfAppDaemonApplication::AppDllUid() const + { + return KAlfPerfAppDaemonUid; + } + +void CAlfPerfAppDaemonApplication::NewAppServerL( CApaAppServer*& aAppServer ) + { + aAppServer = NULL; + aAppServer = new (ELeave) CAlfPerfAppDaemonServer; + } + +// +// Implementation of CAlfPerfAppDaemonDocument +// + +CAlfPerfAppDaemonDocument::CAlfPerfAppDaemonDocument( CEikApplication& aApp ) + : CAknDocument( aApp ) + { + } + +CEikAppUi* CAlfPerfAppDaemonDocument::CreateAppUiL() + { + return new (ELeave) CAlfPerfAppDaemonAppUi; + } + +void CAlfPerfAppDaemonDocument::UpdateTaskNameL(CApaWindowGroupName* aWgName) + { + CAknDocument::UpdateTaskNameL( aWgName ); + aWgName->SetHidden( ETrue ); + } + +// +// Implementation of CAlfPerfAppDaemonAppUi +// + +CAlfPerfAppDaemonAppUi::CAlfPerfAppDaemonAppUi() + { + } + +CAlfPerfAppDaemonAppUi::~CAlfPerfAppDaemonAppUi() + { + delete iDebug; + delete iFactory; + iLibrary.Close(); + } + +CAlfDebugExtension* CAlfPerfAppDaemonAppUi::Debug() + { + return iDebug; + } + +void CAlfPerfAppDaemonAppUi::ConstructL() + { + CAknAppUi::BaseConstructL( EAknEnableSkin | EAknEnableMSK ); + + RWsSession& wsSession = iEikonEnv->WsSession(); + wsSession.ComputeMode( RWsSession::EPriorityControlDisabled ); + RProcess().SetPriority( EPriorityHigh ); + iEikonEnv->SetSystem( ETrue ); + + if ( iLibrary.Load( KAlfDebugExtensionLibraryName ) == KErrNone ) + { + TInt res = iLibrary.Lookup( KAlfDebugExtensionLibraryEntryOrdinal )(); + iFactory = (CAlfDebugFactory*)res; + if ( iFactory ) + { + iDebug = iFactory->CreateDebugExtensionL( NULL ); + } + } + } + +// ----------------------------------------------------------------------------- +// Common commands are handled here. +// ----------------------------------------------------------------------------- +// +void CAlfPerfAppDaemonAppUi::HandleCommandL( TInt aCommand ) + { + switch ( aCommand ) + { + case EEikCmdExit: + Exit(); + break; + + default: + break; + } + } + +// +// Implementation of CAlfPerfAppDaemonServer +// + +CAlfPerfAppDaemonServer::CAlfPerfAppDaemonServer() + { + } + +CApaAppServiceBase* CAlfPerfAppDaemonServer::CreateServiceL( TUid aServiceType ) const + { + if ( aServiceType == KAlfPerfAppDaemonUid ) + { + return new (ELeave) CAlfPerfAppDaemonService; + } + else + { + User::Leave( KErrNotSupported ); + return NULL; + } + } + +// +// Implementation of CAlfPerfAppDaemonService +// + +CAlfPerfAppDaemonService::CAlfPerfAppDaemonService() + { + } + +CAlfPerfAppDaemonService::~CAlfPerfAppDaemonService() + { + if ( iActivityPoll ) + { + iActivityPoll->Cancel(); + delete iActivityPoll; + } + } + +void CAlfPerfAppDaemonService::ServiceL( const RMessage2& aMessage ) + { + switch ( aMessage.Function() ) + { + case EAlfPerfAppIpcGetMeasurements: + { + CAlfPerfAppDaemonAppUi* appui = + static_cast( + CEikonEnv::Static()->EikAppUi() ); + CAlfDebugExtension* debug = appui->Debug(); + if ( debug ) + { + TAlfDebugServerMeasurements measurements; + TInt err = debug->GetMeasurements( measurements ); + if ( err == KErrNone ) + { + TPckgC pckg( measurements ); + err = aMessage.Write( 0, pckg ); + } + aMessage.Complete( err ); + } + else + { + aMessage.Complete( KErrNotSupported ); + } + } + break; + + case EAlfPerfAppIpcEnableActivityPoll: + { + const TBool enable = ( aMessage.Int0() != 0 ); + if ( enable ) + { + User::ResetInactivityTime(); + if ( !iActivityPoll ) + { + iActivityPoll = CPeriodic::NewL( CActive::EPriorityHigh ); + } + iActivityPoll->Cancel(); + iActivityPoll->Start( + KAlfPerfAppActivityPollPeriod, + KAlfPerfAppActivityPollPeriod, + TCallBack( ActivityPollCallBack, this ) ); + } + else + { + if ( iActivityPoll ) + { + iActivityPoll->Cancel(); + } + delete iActivityPoll; + iActivityPoll = NULL; + } + + aMessage.Complete( KErrNone ); + } + break; + + default: + CAknAppServiceBase::ServiceL( aMessage ); + break; + } + } + +TInt CAlfPerfAppDaemonService::ActivityPollCallBack( TAny* /*aAny*/ ) + { + User::ResetInactivityTime(); + return KErrNone; + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +LOCAL_C CApaApplication* NewApplication() + { + return new CAlfPerfAppDaemonApplication; + } + +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication( NewApplication ); + } +