--- a/installationservices/swi/source/daemon/daemoninstaller.cpp Thu Jul 08 20:28:00 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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:
-*
-*/
-
-
-#include <apgcli.h>
-#include "daemoninstaller.h"
-#include "swispubsubdefs.h"
-#include "log.h"
-
-const static TInt KAppListRetryWaitTime = 5000000; // 5 secs
-_LIT(KMCSisInstaller,"Daemon-Installer"); // Minor-Component name
-
-namespace Swi
- {
- // Two phased construction
-
- CSisInstaller* CSisInstaller::NewL(MDaemonInstallBehaviour* aDaemonBehaviour)
- {
- CSisInstaller* self = new (ELeave) CSisInstaller(aDaemonBehaviour);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
- // Install Request constructor
-
- CSisInstaller::CSisInstaller(MDaemonInstallBehaviour* aDaemonBehaviour) : CActive(CActive::EPriorityStandard),
- iDaemonBehaviour(aDaemonBehaviour),
- iState(MDaemonInstallBehaviour::EStateVerifyAppCacheList),
- iFileIndex(0),
- iTimeStep(KAppListRetryWaitTime)
- {
- CActiveScheduler::Add(this);
- }
-
- // Install Request destructor
-
- CSisInstaller::~CSisInstaller()
- {
- Cancel();
- iTimer.Close();
- iProperty.Close();
- iFilesToInstall.ResetAndDestroy();
- iFilesToInstall.Close();
- }
-
- // 2nd phase construction
-
- void CSisInstaller::ConstructL()
- {
- User::LeaveIfError(iTimer.CreateLocal());
- User::LeaveIfError(iProperty.Attach(KUidSystemCategory,KUidSoftwareInstallKey));
- }
-
- // Set the location of all sis files and the list of them
- // also take ownership of the pointers to memory
-
- void CSisInstaller::AddFileToInstallL(const TDesC& aFileName)
- {
- DEBUG_PRINTF2(_L("SWI Daemon - Queueing presintalled SIS file '%S' for processing"),
- &aFileName);
-
- HBufC* fileName = aFileName.AllocLC();
- iFilesToInstall.AppendL(fileName);
- CleanupStack::Pop(fileName);
- }
-
- // Start the request to process the Sisx file
-
- void CSisInstaller::StartInstallingL()
- {
- if(iFilesToInstall.Count() > 0)
- {
- iState = MDaemonInstallBehaviour::EStateVerifyAppCacheList;
- ReRequestL();
- }
- }
-
- // Requesting an asyncronous timer/subscrive event
-
- void CSisInstaller::ReRequestL()
- {
- switch (iState)
- {
- // Verify the app cache list at time intervals
- case MDaemonInstallBehaviour::EStateVerifyAppCacheList:
- iTimer.Cancel();
- iTimer.After(iStatus,iTimeStep);
- SetActive();
- break;
-
- // Verify software installer property
- case MDaemonInstallBehaviour::EStateVerifySwisProperty:
- CompleteSelf();
- break;
-
- case MDaemonInstallBehaviour::EStateVerifySwisIdle:
- iProperty.Subscribe(iStatus);
- SetActive();
- break;
-
- case MDaemonInstallBehaviour::EStateInstall:
- CompleteSelf();
- break;
-
- default:
- // SisInstaller in an incorrect state
- User::Panic(KMCSisInstaller,KErrNotSupported);
- break;
- }
- }
-
- // Complete the request manually
-
- void CSisInstaller::CompleteSelf()
- {
- TRequestStatus* status = &iStatus;
- User::RequestComplete(status,KErrNone);
- SetActive();
- }
-
- // Cancel the active request
-
- void CSisInstaller::DoCancel()
- {
- iProperty.Cancel();
- iTimer.Cancel();
- }
-
- void CSisInstaller::Reset()
- {
- Cancel();
- iFileIndex = 0;
- iFilesToInstall.ResetAndDestroy();
- }
-
- // When the software installer has changed state
- // attemp to install a sisx file
-
- void CSisInstaller::RunL()
- {
- if (iStatus.Int() != KErrNone)
- {
- User::Leave(iStatus.Int()); // Invoke RunError
- }
-
- switch (iState)
- {
- // Check the cached list of applications
- case MDaemonInstallBehaviour::EStateVerifyAppCacheList:
- iState = iDaemonBehaviour->VerifyAppCacheListL();
- ReRequestL();
- break;
-
- case MDaemonInstallBehaviour::EStateVerifySwisProperty:
- iState = iDaemonBehaviour->VerifySwisPropertyL();
- ReRequestL();
- break;
-
- // Check the software installer is not busy
- case MDaemonInstallBehaviour::EStateVerifySwisIdle:
- iState = iDaemonBehaviour->VerifySwisIdleL();
- ReRequestL();
- break;
-
- // Install a file
- case MDaemonInstallBehaviour::EStateInstall:
- {
- iSisFile.Copy(*iFilesToInstall[iFileIndex]);
- iDaemonBehaviour->DoInstallRequestL(iSisFile);
- if (++iFileIndex < iFilesToInstall.Count())
- {
- iState = MDaemonInstallBehaviour::EStateVerifySwisProperty;
- CompleteSelf();
- }
- else
- {
- // All done
- iDaemonBehaviour->DoNotifyMediaProcessingComplete();
- }
-
- break;
- }
-
- // Active object in unknown state
- default:
- User::Panic(KMCSisInstaller,KErrNotSupported);
- break;
- }
- }
-
- // If RunL leaves then ignore errors
-
- TInt CSisInstaller::RunError(TInt aError)
- {
- DEBUG_PRINTF3(_L8("SWI Daemon - Daemon failed in state %d with code %d"),
- iState, aError);
-
- Reset();
- TInt err(KErrNone);
- if (aError == KErrCancel)
- {
- iState = MDaemonInstallBehaviour::EStateVerifyAppCacheList;
- }
- return err;
- }
- }