uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappdaemon.cpp
changeset 0 15bf7259bb7c
--- /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 );
+    }
+