diff -r 000000000000 -r ba25891c3a9e appinstaller/AppinstUi/Plugin/TaskManager/Src/TaskManager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appinstaller/AppinstUi/Plugin/TaskManager/Src/TaskManager.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2002-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: This module contains the implementation of CTaskManager class +* member functions. +* +*/ + + +// INCLUDE FILES + +#include "SWInstTaskManager.h" +#include "SWInstTask.h" +#include "TaskManagerImpl.h" + +using namespace SwiUI; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CTaskManager::CTaskManager +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CTaskManager::CTaskManager() + { + } + +// ----------------------------------------------------------------------------- +// CTaskManager::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CTaskManager::ConstructL() + { + if ( !Dll::Tls() ) + { + Dll::SetTls( CTaskManagerImpl::NewL() ); + } + + // Increase the client count + iImpl = Impl(); + iImpl->IncreaseClientCount(); + } + +// ----------------------------------------------------------------------------- +// CTaskManager::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CTaskManager* CTaskManager::NewL() + { + CTaskManager* self = new( ELeave ) CTaskManager(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// Destructor +EXPORT_C CTaskManager::~CTaskManager() + { + // Decrease the client count + iImpl->DecreaseClientCount(); + + // Check if no more clients so that TLS can be freed. + if ( iImpl->CanBeFreed() ) + { + delete iImpl; + Dll::SetTls( NULL ); + } + } + +// ----------------------------------------------------------------------------- +// TaskManager::AddTaskL +// Adds a task to the task list. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::AddTaskL( CTask* aTask ) + { + if ( aTask == NULL ) + { + User::Leave( KErrArgument ); + } + + iImpl->AddTaskL( aTask ); + } + +// ----------------------------------------------------------------------------- +// TaskManager::RemoveTaskL +// Removes a task from the task list. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::RemoveTaskL( CTask* aTask ) + { + if ( aTask == NULL ) + { + User::Leave( KErrArgument ); + } + + iImpl->RemoveTaskL( aTask ); + } + +// ----------------------------------------------------------------------------- +// TaskManager::FlushTasks +// Removes tasks from task list without executing them. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::FlushTasks() + { + iImpl->FlushTasks(); + } + +// ----------------------------------------------------------------------------- +// TaskManager::ExecutePendingTasksL +// Executes all pending tasks that are added to the task list within the +// lifetime of this thread. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::ExecutePendingTasksL() + { + iImpl->ExecutePendingTasksL(); + } + +// ----------------------------------------------------------------------------- +// TaskManager::ExecuteRecoveryTasksL +// Executes all tasks from non persistent and persistent memory. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::ExecuteRecoveryTasksL() + { + iImpl->ExecuteRecoveryTasksL(); + } + +// ----------------------------------------------------------------------------- +// TaskManager::CommitL +// Writes all persistent tasks from the task list to a persistent storage. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CTaskManager::CommitL() + { + iImpl->CommitL(); + } + +// ----------------------------------------------------------------------------- +// TaskManager::Impl +// Return pointer to TaskManager implementation. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CTaskManagerImpl* CTaskManager::Impl() + { + return static_cast (Dll::Tls()); + } + +// End of File