messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuLock.h
author hgs
Wed, 03 Nov 2010 09:52:46 +0530
changeset 79 2981cb3aa489
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
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:   The global lock class for messaging components
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 MUIULOCK_H
hgs
parents:
diff changeset
    21
#define MUIULOCK_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
class CRepository;
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <messaginginternalcrkeys.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// Lock identifier for messaging settings access
hgs
parents:
diff changeset
    29
//
hgs
parents:
diff changeset
    30
const TUid KMuiuLockSettings = { KCRUidMuiuVariationValue };
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
/**
hgs
parents:
diff changeset
    33
 *  The global lock class for messaging components
hgs
parents:
diff changeset
    34
 *
hgs
parents:
diff changeset
    35
 *  The service can be used for creating runtime "locks" for protecting
hgs
parents:
diff changeset
    36
 *  the shared resources over the process boundaries; i.e.the locks can be 
hgs
parents:
diff changeset
    37
 *  used for synchronisation between the processes.
hgs
parents:
diff changeset
    38
 *
hgs
parents:
diff changeset
    39
 *  The current implementation is based on the transaction mechanism of
hgs
parents:
diff changeset
    40
 *  Central Repository. The lock ID is the identifier of the repository
hgs
parents:
diff changeset
    41
 *  file. The "lock" is created by opening a write transaction to the
hgs
parents:
diff changeset
    42
 *  repository. Thus, the repository cannot be modified while the lock is on.
hgs
parents:
diff changeset
    43
 *
hgs
parents:
diff changeset
    44
 *  @lib muiu_internal.lib
hgs
parents:
diff changeset
    45
 *  @since S60 5.0
hgs
parents:
diff changeset
    46
 */
hgs
parents:
diff changeset
    47
NONSHARABLE_CLASS( CMuiuLock ) : public CBase
hgs
parents:
diff changeset
    48
    {
hgs
parents:
diff changeset
    49
public:
hgs
parents:
diff changeset
    50
    /**
hgs
parents:
diff changeset
    51
     * Creates a new instance of the class
hgs
parents:
diff changeset
    52
     *
hgs
parents:
diff changeset
    53
     * @since S60 5.0
hgs
parents:
diff changeset
    54
     * @param aLockId    The lock identifier. Currently, this has to be the ID
hgs
parents:
diff changeset
    55
     *                   of the existing central repository file that can be reserved
hgs
parents:
diff changeset
    56
     *                   for a write transaction while the lock is used.
hgs
parents:
diff changeset
    57
     * @return           New instance of the class
hgs
parents:
diff changeset
    58
     */
hgs
parents:
diff changeset
    59
     IMPORT_C static CMuiuLock* NewL( TUid aLockId );
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
    /**
hgs
parents:
diff changeset
    62
     * Destructor. Releases the lock if not done explicitly.
hgs
parents:
diff changeset
    63
     */
hgs
parents:
diff changeset
    64
    virtual ~CMuiuLock();
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    /**
hgs
parents:
diff changeset
    67
     * Reserves the lock for the client.
hgs
parents:
diff changeset
    68
     *
hgs
parents:
diff changeset
    69
     * @since S60 5.0
hgs
parents:
diff changeset
    70
     * @return           Operation status. KErrNone if successful. KErrGeneral, if the lock
hgs
parents:
diff changeset
    71
     *                   is already reserved by the client. The error codes of the underlying
hgs
parents:
diff changeset
    72
     *                   services forwarded as such.
hgs
parents:
diff changeset
    73
     */
hgs
parents:
diff changeset
    74
    IMPORT_C TInt Reserve();
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    /**
hgs
parents:
diff changeset
    77
     * Releases the lock
hgs
parents:
diff changeset
    78
     *
hgs
parents:
diff changeset
    79
     * @since S60 5.0
hgs
parents:
diff changeset
    80
     */
hgs
parents:
diff changeset
    81
    IMPORT_C void Release();
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
private:
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
     * Default constructor
hgs
parents:
diff changeset
    86
     *
hgs
parents:
diff changeset
    87
     * @since S60 5.0
hgs
parents:
diff changeset
    88
     */
hgs
parents:
diff changeset
    89
    CMuiuLock();
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
    /**
hgs
parents:
diff changeset
    92
     *  Second phase constructor
hgs
parents:
diff changeset
    93
     *
hgs
parents:
diff changeset
    94
     * @since S60 5.0
hgs
parents:
diff changeset
    95
     * @param aLockId    See description of NewL() method
hgs
parents:
diff changeset
    96
     */
hgs
parents:
diff changeset
    97
    void ConstructL( TUid aLockId );
hgs
parents:
diff changeset
    98
private: // data
hgs
parents:
diff changeset
    99
    /**
hgs
parents:
diff changeset
   100
     * Central repository handle
hgs
parents:
diff changeset
   101
     */
hgs
parents:
diff changeset
   102
    CRepository* iRepository;
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    /**
hgs
parents:
diff changeset
   105
     * State flag indicating whether the lock is reserved or not
hgs
parents:
diff changeset
   106
     */
hgs
parents:
diff changeset
   107
    TBool iLocked;
hgs
parents:
diff changeset
   108
    };
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
#endif // MUIULOCK_H