devicediagnosticsfw/diagframework/inc/diagexecplanentryimplsuite.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:42 +0100
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2007 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:  Class declaration for CDiagExecPlanEntryImplSuite
*
*/


#ifndef DIAGEXECPLANENTRYIMPLSUITE_H
#define DIAGEXECPLANENTRYIMPLSUITE_H

// SYSTEM INCLUDE FILES
#include <DiagSuitePlugin.h>            // MDiagSuitePlugin::TStopReason
#include <DiagSuiteObserver.h>          // MDiagSuiteObserver

// USER INCLUDE FILES
#include "diagexecplanentryimpl.h"      // CDiagExecPlanEntryImpl

// FORWARD DECLARATION
class MDiagSuitePlugin;

/**
* Diagnostics Plug-in Execution Plan Entry Implementation for Suite plugin
*
* This class implements CDiagExecPlanEntryImplSuite. It is meant to be private
*   to Diagnostics Framework and not exported.
*
* @since S60 v5.0
*
*/
NONSHARABLE_CLASS( CDiagExecPlanEntryImplSuite ) : public CDiagExecPlanEntryImpl,
                                                   public MDiagSuiteObserver
    {
public: // Public constructors and destructors
    /**
    * Symbian two-phased constructor
    *   
    * @param aEngine - Diagnostics Engine
    * @param aEngineConfig - Engine configuration.
    * @param aObserver - Execution plan entry observer.
    * @param aPlugin - Suite plug-in that this plan entry represents.
    * @param aAsDependency - Whether this item is being executed as dependency or not.
    * @param aType - Type of execution. @see CDiagExecPlanEntryImpl::TType
    *
    * @return a new instance of CDiagExecPlanEntryImplSuite
    */
    static CDiagExecPlanEntryImplSuite* NewL( MDiagEngineCommon& aEngine,
                                              const TDiagEngineConfig& aEngineConfig,
                                              MDiagExecPlanEntryImplObserver& aObserver,
                                              MDiagSuitePlugin& aPlugin,
                                              TBool aAsDependency,
                                              TType aType );

    /**
    * Symbian two-phased constructor
    *  This will leave a entry in clean up stack.
    *
    * @param aEngine - Diagnostics Engine
    * @param aEngineConfig - Engine configuration.
    * @param aObserver - Execution plan entry observer.
    * @param aPlugin - Suite plug-in that this plan entry represents.
    * @param aAsDependency - Whether this item is being executed as dependency or not.
    * @param aType - Type of execution. @see CDiagExecPlanEntryImpl::TType
    *
    * @return a new instance of CDiagExecPlanEntryImplSuite
    */
    static CDiagExecPlanEntryImplSuite* NewLC( MDiagEngineCommon& aEngine,
                                               const TDiagEngineConfig& aEngineConfig,
                                               MDiagExecPlanEntryImplObserver& aObserver,
                                               MDiagSuitePlugin& aPlugin,
                                               TBool aAsDependency,
                                               TType aType );

    /**
    * C++ destructor
    */
    virtual ~CDiagExecPlanEntryImplSuite();

public:     // new public api
    /**
    * Get suite plugin associated.
    */
    MDiagSuitePlugin& SuitePlugin();

private:    // from CActive
    /*
    * @see CActive::RunL
    */
    virtual void RunL();

    /*
    * @see CActive::DoCancel
    */
    virtual void DoCancel();
    

private:     // from CDiagExecPlanEntryImpl
    /**
    * @see CDiagExecPlanEntryImpl::ExecuteL
    */
    virtual void ExecuteL();

    /**
    * @see CDiagEXecPlanEntryImpl::StopExecutionByWatchdogL
    */
    virtual void StopExecutionByWatchdogL();

    /**
    * @see CDiagEXecPlanEntryImpl::StopExecutionByClientL
    */
    virtual void DoStopExecutionByClientL( MDiagEngineCommon::TCancelMode aCancelMode );

    /**
    * @see CDiagEXecPlanEntryImpl::SuspendL
    */
    virtual void SuspendL();

    /**
    * @see CDiagEXecPlanEntryImpl::ResumeL
    */
    virtual void ResumeL();


private: // from MDiagSuiteObserver
    /**
    * Notify engine of suite plug-in execution completion.
    * 
    * @see MDiagSuitePlugin::ContinueExecutionL
    */
    virtual void ContinueExecutionL( const MDiagSuitePlugin& aSender );


private:    // private methods
    /**
    * C++ constructor
    *   
    * @param aEngine - Diagnostics Engine
    * @param aEngineConfig - Engine configuration.
    * @param aObserver - Execution plan entry observer.
    * @param aPlugin - Suite plug-in that this plan entry represents.
    * @param aAsDependency - Whether this item is being executed as dependency or not.
    * @param aType - Type of execution. @see CDiagExecPlanEntryImpl::TType
    */
    CDiagExecPlanEntryImplSuite( MDiagEngineCommon& aEngine,
                                 const TDiagEngineConfig& aEngineConfig,
                                 MDiagExecPlanEntryImplObserver& aObserver,
                                 MDiagSuitePlugin& aPlugin,
                                 TBool aAsDependency,
                                 TType aType );

    /**
    * Stop suite plug-in.
    * 
    * @param aStopReason - Stop reason to pass to suite.
    */
    void StopSuitePluginL( MDiagSuitePlugin::TStopReason aStopReason );
    };

#endif // DIAGEXECPLANENTRYIMPLSUITE_H

// End of File