diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/systemstarter/startsafesrc/startsafe.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstarter/startsafesrc/startsafe.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,77 @@ +// Copyright (c) 2006-2009 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: +// + + +#ifndef __STARTSAFE_H__ +#define __STARTSAFE_H__ + +#include +#include +#include +#include + + +/** +@internalTechnology +@released +*/ +const TInt KStartSafeNoTimeout = 0; + + +class CApaStarter; +class CStartupProperties; + +/** +Used to start a process or application reliably. +Which means, if the starting fails after designated number of attempts then system restarts or an error is returned. +@internalTechnology +@deprecated Instead of this use CSsmStartSafe +*/ +NONSHARABLE_CLASS( CStartSafe ) : public CBase + { +public: + IMPORT_C static CStartSafe* NewL(); + virtual ~CStartSafe(); + + IMPORT_C void StartL( const CStartupProperties &aStartupProperties, RProcess& aProcess, TInt& aNumRetried ); + IMPORT_C void StartL( const CStartupProperties &aStartupProperties, RProcess& aProcess, TRequestStatus& aCommandTrs ); + IMPORT_C void StartAndMonitorL( const CStartupProperties &aStartupProperties, RProcess& aProcess, TInt& aNumRetried ); + IMPORT_C void InitAppArcServer( TRequestStatus& aStatus ); + +private: + CStartSafe(); + void ConstructL(); + + void InstituteRestartL( const CStartupProperties& aStartupProperties ); + TInt AwaitRendezvous( RProcess& aProcess, TInt aTimeout ); + TInt AwaitProcessStartup( RProcess& aProcess, TInt aTimeout, TRequestStatus& aCommandTrs ); + void DoFireAndForgetL( const CStartupProperties& aStartupProperties, RProcess& aProcess ); + void DoWaitForStartL( const CStartupProperties& aStartupProperties, RProcess& aProcess, TInt& aNumRetried ); + TInt DoStartAppWithRetries( const CStartupProperties& aStartupProperties, RProcess& aProcess, TInt& aNumRetried ); + void GetProcessHandleL( RProcess& aProcess, const TThreadId& aThreadId ); + void GetHandleAndWaitForProcessL( const CStartupProperties& aStartupProperties, RProcess& aProcess, TThreadId& aThreadId, TRequestStatus& aCommandTrs ); + TInt DoStartProcessWithRetries( const CStartupProperties& aStartupProperties, RProcess& aProcess, TInt& aNumRetried ); + void DoStartAppL( const CStartupProperties& aStartupProperties, RProcess& aProcess ); + void DoStartProcessL( const CStartupProperties& aStartupProperties, RProcess& aProcess ); + void LoadApStartLibL(); + void ShootBadProcess( RProcess& aProcess, const TRequestStatus& aStatus ); + +private: + CApaStarter* iApaStarter; + RLibrary iApStartLib; + }; + + +#endif