camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxememorymonitor/oommonitorsession.h
author hgs
Thu, 15 Jul 2010 01:53:45 +0300
changeset 42 feebad15db8c
permissions -rw-r--r--
201027_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
feebad15db8c 201027_1
hgs
parents:
diff changeset
     1
/*
feebad15db8c 201027_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
feebad15db8c 201027_1
hgs
parents:
diff changeset
     3
* All rights reserved.
feebad15db8c 201027_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
feebad15db8c 201027_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
feebad15db8c 201027_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
feebad15db8c 201027_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
feebad15db8c 201027_1
hgs
parents:
diff changeset
     8
*
feebad15db8c 201027_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    11
*
feebad15db8c 201027_1
hgs
parents:
diff changeset
    12
* Contributors:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    13
*
feebad15db8c 201027_1
hgs
parents:
diff changeset
    14
* Description: Fake class for testing
feebad15db8c 201027_1
hgs
parents:
diff changeset
    15
*
feebad15db8c 201027_1
hgs
parents:
diff changeset
    16
*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    17
feebad15db8c 201027_1
hgs
parents:
diff changeset
    18
#ifndef OOMMONITORSESSION_H
feebad15db8c 201027_1
hgs
parents:
diff changeset
    19
#define OOMMONITORSESSION_H
feebad15db8c 201027_1
hgs
parents:
diff changeset
    20
feebad15db8c 201027_1
hgs
parents:
diff changeset
    21
#include <e32base.h>
feebad15db8c 201027_1
hgs
parents:
diff changeset
    22
feebad15db8c 201027_1
hgs
parents:
diff changeset
    23
const TInt KOomMaxAllocationWithoutPermission = 1048576;
feebad15db8c 201027_1
hgs
parents:
diff changeset
    24
const TUid KOomMemoryMonitorStatusPropertyCategory = {0x10207218};
feebad15db8c 201027_1
hgs
parents:
diff changeset
    25
const TUint32 KOomMemoryMonitorStatusPropertyKey = 0;
feebad15db8c 201027_1
hgs
parents:
diff changeset
    26
enum TMemoryMonitorStatusPropertyValues
feebad15db8c 201027_1
hgs
parents:
diff changeset
    27
    {
feebad15db8c 201027_1
hgs
parents:
diff changeset
    28
    // Above Treshhold: Free Ram is above good treshhold point and memory monitor isn't freeing any memory
feebad15db8c 201027_1
hgs
parents:
diff changeset
    29
    EAboveTreshHold,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    30
feebad15db8c 201027_1
hgs
parents:
diff changeset
    31
    // Freeing Memory: Memory monitor is in the middle of freeing memory
feebad15db8c 201027_1
hgs
parents:
diff changeset
    32
    EFreeingMemory,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    33
feebad15db8c 201027_1
hgs
parents:
diff changeset
    34
    // Below Treshhold: Memory monitor has tried to free some RAM but total memory is still below treshhold and memory monitor has given up freeing more memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    35
    EBelowTreshHold
feebad15db8c 201027_1
hgs
parents:
diff changeset
    36
    };
feebad15db8c 201027_1
hgs
parents:
diff changeset
    37
class ROomMonitorSession
feebad15db8c 201027_1
hgs
parents:
diff changeset
    38
    {
feebad15db8c 201027_1
hgs
parents:
diff changeset
    39
public:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    40
feebad15db8c 201027_1
hgs
parents:
diff changeset
    41
    /**  Defines the application priorities of OOM monitor. */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    42
    enum TOomPriority
feebad15db8c 201027_1
hgs
parents:
diff changeset
    43
        {
feebad15db8c 201027_1
hgs
parents:
diff changeset
    44
        /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    45
        * Application can be closed if needed.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    46
        */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    47
        EOomPriorityNormal = 0,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    48
feebad15db8c 201027_1
hgs
parents:
diff changeset
    49
        /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    50
        * Application should not be closed if possible.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    51
        */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    52
        EOomPriorityHigh,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    53
feebad15db8c 201027_1
hgs
parents:
diff changeset
    54
        /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    55
        * Application is busy and should not be closed.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    56
        */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    57
        EOomPriorityBusy
feebad15db8c 201027_1
hgs
parents:
diff changeset
    58
        };
feebad15db8c 201027_1
hgs
parents:
diff changeset
    59
feebad15db8c 201027_1
hgs
parents:
diff changeset
    60
public:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    61
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    62
    * Connects a new session.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    63
    * Sessions must be connected before any other APIs can be used.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    64
    * When the client has finished using a session, Close() must be called.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    65
    * @return KErrNone if successful, error code otherwise.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    66
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    67
    TInt Connect();
feebad15db8c 201027_1
hgs
parents:
diff changeset
    68
feebad15db8c 201027_1
hgs
parents:
diff changeset
    69
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    70
    * Request that the OOM monitor attempts to free some paged memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    71
    * This function may take several seconds to execute, depending on
feebad15db8c 201027_1
hgs
parents:
diff changeset
    72
    * the memory state. It will not return until the attempt to recover
feebad15db8c 201027_1
hgs
parents:
diff changeset
    73
    * memory has completed.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    74
    * @param aBytesRequested The number of bytes of free memory that the client requests.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    75
    * @return KErrNone if the request memory is free. KErrNoMemory if that
feebad15db8c 201027_1
hgs
parents:
diff changeset
    76
    *         amount of memory could not be recovered. Other error codes may
feebad15db8c 201027_1
hgs
parents:
diff changeset
    77
    *         also be returned.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    78
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    79
    TInt RequestFreeMemory(TInt aBytesRequested);
feebad15db8c 201027_1
hgs
parents:
diff changeset
    80
feebad15db8c 201027_1
hgs
parents:
diff changeset
    81
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    82
    * Request that the OOM monitor attempts to free some paged memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    83
    * This is an asynchronous version of the request for free paged memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    84
    * @param aBytesRequested The number of bytes of free memory that the client requests.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    85
    * @param aStatus will be completed when the attempt to recover memory
feebad15db8c 201027_1
hgs
parents:
diff changeset
    86
    *        has finished. This may take several seconds, depending on
feebad15db8c 201027_1
hgs
parents:
diff changeset
    87
    *        the memory state. On completion, aStatus will be set to
feebad15db8c 201027_1
hgs
parents:
diff changeset
    88
    *        KErrNone if the request memory is free. KErrNoMemory if that
feebad15db8c 201027_1
hgs
parents:
diff changeset
    89
    *        amount of memory could not be recovered. Other error codes may
feebad15db8c 201027_1
hgs
parents:
diff changeset
    90
    *        also be set.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    91
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    92
    void RequestFreeMemory(TInt aBytesRequested, TRequestStatus& aStatus);
feebad15db8c 201027_1
hgs
parents:
diff changeset
    93
feebad15db8c 201027_1
hgs
parents:
diff changeset
    94
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    95
    * Request that the OOM monitor attempts to free some memory for an optional allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    96
    * The passed in plugin ID is used to determine the priority for this allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    97
    * Lower priority OOM actions may be executed to free enough RAM for this allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    98
    * This function may take several seconds to execute, depending on
feebad15db8c 201027_1
hgs
parents:
diff changeset
    99
    * the memory state. It will not return until the attempt to recover
feebad15db8c 201027_1
hgs
parents:
diff changeset
   100
    * memory has completed.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   101
    * @param aBytesRequested The number of bytes of free memory that the client requests.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   102
    * @param aPluginId The ID of the plugin that may delete the allocation in event of low memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   103
    * @return KErrNone if the request memory is free. KErrNoMemory if that
feebad15db8c 201027_1
hgs
parents:
diff changeset
   104
    *         amount of memory could not be recovered. Other error codes may
feebad15db8c 201027_1
hgs
parents:
diff changeset
   105
    *         also be returned.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   106
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   107
    TInt RequestOptionalRam(TInt aBytesRequested, TInt aMinimumBytesNeeded, TInt aPluginId, TInt& aBytesAvailable);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   108
feebad15db8c 201027_1
hgs
parents:
diff changeset
   109
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   110
    * Request that the OOM monitor attempts to free some memory for an optional allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   111
    * The passed in plugin ID is used to determine the priority for this allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   112
    * Lower priority OOM actions may be executed to free enough RAM for this allocation.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   113
    * This function may take several seconds to execute, depending on
feebad15db8c 201027_1
hgs
parents:
diff changeset
   114
    * the memory state. It will not return until the attempt to recover
feebad15db8c 201027_1
hgs
parents:
diff changeset
   115
    * memory has completed.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   116
    * @param aBytesRequested The number of bytes of free memory that the client requests.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   117
    * @param aPluginId The ID of the plugin that may delete the allocation in event of low memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   118
    * @param aStatus The TRequestStatus (completes with the number of bytes freed (aStatus >= 0) or an error (aStatus <= 0))
feebad15db8c 201027_1
hgs
parents:
diff changeset
   119
    * @return None
feebad15db8c 201027_1
hgs
parents:
diff changeset
   120
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   121
    void RequestOptionalRam(TInt aBytesRequested, TInt aMinimumBytesNeeded, TInt aPluginId, TRequestStatus& aStatus);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   122
feebad15db8c 201027_1
hgs
parents:
diff changeset
   123
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   124
    * Cancels the asynchronous request for free memory.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   125
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   126
    void CancelRequestFreeMemory();
feebad15db8c 201027_1
hgs
parents:
diff changeset
   127
feebad15db8c 201027_1
hgs
parents:
diff changeset
   128
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   129
    * Notify the OOM monitor that this application is not responding
feebad15db8c 201027_1
hgs
parents:
diff changeset
   130
    * to the EEikCmdExit request to exit the application.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   131
    * This function is used by the Avkon framework's app shutter.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   132
    * @param aWgId the window group identifier of the app that is not exiting.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   133
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   134
    void ThisAppIsNotExiting(TInt aWgId);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   135
feebad15db8c 201027_1
hgs
parents:
diff changeset
   136
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   137
    * Notify the OOM monitor that this application has the specified priority
feebad15db8c 201027_1
hgs
parents:
diff changeset
   138
    * @param aPriority the priority of the application
feebad15db8c 201027_1
hgs
parents:
diff changeset
   139
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   140
    void SetOomPriority(TOomPriority aPriority);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   141
feebad15db8c 201027_1
hgs
parents:
diff changeset
   142
    void Close();
feebad15db8c 201027_1
hgs
parents:
diff changeset
   143
feebad15db8c 201027_1
hgs
parents:
diff changeset
   144
    };
feebad15db8c 201027_1
hgs
parents:
diff changeset
   145
feebad15db8c 201027_1
hgs
parents:
diff changeset
   146
#endif // OOMMONITORSESSION_H