--- /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 <eikstart.h>
+#include <apgwgnam.h>
+#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<CAlfPerfAppDaemonAppUi*>(
+ CEikonEnv::Static()->EikAppUi() );
+ CAlfDebugExtension* debug = appui->Debug();
+ if ( debug )
+ {
+ TAlfDebugServerMeasurements measurements;
+ TInt err = debug->GetMeasurements( measurements );
+ if ( err == KErrNone )
+ {
+ TPckgC<TAlfDebugServerMeasurements> 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 );
+ }
+