gsprofilesrv_plat/settings_framework_api/inc/MGSWatchDog.h
author hgs
Thu, 04 Nov 2010 13:38:47 +0800
changeset 68 13e71d907dc3
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef GSWATCHDOG_INTERFACE_H
hgs
parents:
diff changeset
    21
#define GSWATCHDOG_INTERFACE_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// System includes
hgs
parents:
diff changeset
    24
#include <e32base.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#ifdef _DEBUG
hgs
parents:
diff changeset
    27
    #define GS_ENABLE_WATCH_DOG
hgs
parents:
diff changeset
    28
#endif
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// CONSTANTS
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// CLASS DECLARATION
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
*  MGSWatchDog is responsible for quarantining plugins and updating blacklist
hgs
parents:
diff changeset
    37
*  for crashing GS plugins. This is the class responsible for keeping GS
hgs
parents:
diff changeset
    38
*  application functional even if some plugin to panics all the time.
hgs
parents:
diff changeset
    39
*
hgs
parents:
diff changeset
    40
*  This is the interface for GSWatchDog. Client has no need to know the actual
hgs
parents:
diff changeset
    41
*  implementation as it is owned by GS application.
hgs
parents:
diff changeset
    42
*
hgs
parents:
diff changeset
    43
*  @since Series60_3.2
hgs
parents:
diff changeset
    44
*/
hgs
parents:
diff changeset
    45
class MGSWatchDog
hgs
parents:
diff changeset
    46
    {
hgs
parents:
diff changeset
    47
    public: // New
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
        /**
hgs
parents:
diff changeset
    50
        * Adds plugin to quarantine. In case GS crashes, quarantined plugin
hgs
parents:
diff changeset
    51
        * will be blacklisted so it is not loaded in next GS run. Same plugin
hgs
parents:
diff changeset
    52
        * can be quarantined multiple times or even have several uid instances
hgs
parents:
diff changeset
    53
        * in quarantine if needed as long as all these are removed
hgs
parents:
diff changeset
    54
        * correspondingly.
hgs
parents:
diff changeset
    55
        *
hgs
parents:
diff changeset
    56
        * NOTE: Plugin must ALWAYS be removed from quarantine after plugin's
hgs
parents:
diff changeset
    57
        * function execution.
hgs
parents:
diff changeset
    58
        * 1. QuarantineL().
hgs
parents:
diff changeset
    59
        * 2. Call quarantined plugin function.
hgs
parents:
diff changeset
    60
        * 3. RemoveFromQuarantineL().
hgs
parents:
diff changeset
    61
        *
hgs
parents:
diff changeset
    62
        * @param aPluginUid uid of the quarantined plugin.
hgs
parents:
diff changeset
    63
        */
hgs
parents:
diff changeset
    64
        virtual void QuarantineL( TUid aPluginUid ) = 0;
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
        /**
hgs
parents:
diff changeset
    67
        * Removes plugin from quarantine. In case plugin is not removed from
hgs
parents:
diff changeset
    68
        * quarantine before GS exits, the plugin will be blacklisted during
hgs
parents:
diff changeset
    69
        * next GS startup.
hgs
parents:
diff changeset
    70
        *
hgs
parents:
diff changeset
    71
        * @param aPluginUid uid of the plugin to be removed from quarantine.
hgs
parents:
diff changeset
    72
        */
hgs
parents:
diff changeset
    73
        virtual void RemoveFromQuarantineL( TUid aPluginUid ) = 0;
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
        /**
hgs
parents:
diff changeset
    76
        * @return ETrue if GS exited cleanly last time.
hgs
parents:
diff changeset
    77
        *         EFalse if GS crashed during last execution.
hgs
parents:
diff changeset
    78
        */
hgs
parents:
diff changeset
    79
        virtual TBool WasCleanExitL() = 0;
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
        /**
hgs
parents:
diff changeset
    82
        * This must be called in all the cases GS exits normally. If GS panics,
hgs
parents:
diff changeset
    83
        * this will not be called resulting in banning of all quarantined
hgs
parents:
diff changeset
    84
        * plugins.Increments iRunsAfterCrash counter for blacklisted plugins.
hgs
parents:
diff changeset
    85
        * Sets iGSAppRunning to EFalse.
hgs
parents:
diff changeset
    86
        */
hgs
parents:
diff changeset
    87
        virtual void ReportCleanExitL() = 0;
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
        /**
hgs
parents:
diff changeset
    90
        * Checks if plugin is in blacklist. This can be used to determine if
hgs
parents:
diff changeset
    91
        * plugin should be loaded.
hgs
parents:
diff changeset
    92
        *
hgs
parents:
diff changeset
    93
        * @return ETrue in case plugin is in blacklist and should not be loaded.
hgs
parents:
diff changeset
    94
        *         EFalse in case plugin should not be loaded
hgs
parents:
diff changeset
    95
        */
hgs
parents:
diff changeset
    96
        virtual TBool IsInBlackList( TUid aPluginUid ) = 0;
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    };
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
#endif // GSWATCHDOG_INTERFACE_H
hgs
parents:
diff changeset
   101
// End of File