locationtriggering/ltserver/ltserverlogic/inc/lbtcleanuphandler.h
author hgs
Wed, 03 Nov 2010 23:28:39 +0530
changeset 56 4e949f03ecc5
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 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:  This header file describes the class reposnible cleanuping
hgs
parents:
diff changeset
    15
*				 of triggers based on some filter after a particular duration
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 C_LBTCLEANUPHANDLER_H
hgs
parents:
diff changeset
    21
#define C_LBTCLEANUPHANDLER_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// INCLUDE FILES
hgs
parents:
diff changeset
    24
#include <e32base.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    27
class CLbtContainer;
hgs
parents:
diff changeset
    28
class CLbtCleanupItem;
hgs
parents:
diff changeset
    29
class TTime;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
class CLbtCleanupHandler : public CTimer
hgs
parents:
diff changeset
    32
	{
hgs
parents:
diff changeset
    33
	public:
hgs
parents:
diff changeset
    34
		/**
hgs
parents:
diff changeset
    35
	     * Constructs a new instance of cleanup handler. As soon as this object is 
hgs
parents:
diff changeset
    36
	     * created the a low priority timer is started and the cleanup is done after
hgs
parents:
diff changeset
    37
	     * the specified time. 
hgs
parents:
diff changeset
    38
	     *
hgs
parents:
diff changeset
    39
	     *
hgs
parents:
diff changeset
    40
	     * @return The new instance of cleanup handler object.
hgs
parents:
diff changeset
    41
	     */
hgs
parents:
diff changeset
    42
		static CLbtCleanupHandler* NewL( CLbtContainer &aContainer );
hgs
parents:
diff changeset
    43
				
hgs
parents:
diff changeset
    44
		/**
hgs
parents:
diff changeset
    45
		 * Adds triggers into the cleanup mechanism. The specified triggers will be
hgs
parents:
diff changeset
    46
		 * cleaned up after the specified cleanup time retreived from central repository.
hgs
parents:
diff changeset
    47
		 * The triggers specified will be saved onto a file for retreiving the trigger ids
hgs
parents:
diff changeset
    48
		 * in case of system reboot.
hgs
parents:
diff changeset
    49
		 *
hgs
parents:
diff changeset
    50
		 * @param aTriggers the trigger ids that need to be cleanedup
hgs
parents:
diff changeset
    51
		 */
hgs
parents:
diff changeset
    52
		void AddTriggersForCleanupL( const RArray<TLbtTriggerId>& aTriggers );
hgs
parents:
diff changeset
    53
		
hgs
parents:
diff changeset
    54
		/**
hgs
parents:
diff changeset
    55
		 * Removes the specified triggers from cleanup.
hgs
parents:
diff changeset
    56
		 *
hgs
parents:
diff changeset
    57
		 * @param aTriggers the trigger ids that need to be removed from clean up
hgs
parents:
diff changeset
    58
		 */
hgs
parents:
diff changeset
    59
		void RemoveTriggersFromCleanupL(const RArray<TLbtTriggerId>& aTriggers );
hgs
parents:
diff changeset
    60
		
hgs
parents:
diff changeset
    61
		/**
hgs
parents:
diff changeset
    62
		 * Cancels the ongoing operation. 
hgs
parents:
diff changeset
    63
		 */
hgs
parents:
diff changeset
    64
		void Cancel();
hgs
parents:
diff changeset
    65
		
hgs
parents:
diff changeset
    66
		/**
hgs
parents:
diff changeset
    67
	     * Destructor.
hgs
parents:
diff changeset
    68
	     */
hgs
parents:
diff changeset
    69
		~CLbtCleanupHandler();
hgs
parents:
diff changeset
    70
	
hgs
parents:
diff changeset
    71
	private: // new functions
hgs
parents:
diff changeset
    72
	
hgs
parents:
diff changeset
    73
		// Default constructor
hgs
parents:
diff changeset
    74
		CLbtCleanupHandler( CLbtContainer &aContainer );
hgs
parents:
diff changeset
    75
		
hgs
parents:
diff changeset
    76
		/**
hgs
parents:
diff changeset
    77
	     * Symbian 2nd phase of construction
hgs
parents:
diff changeset
    78
	     */
hgs
parents:
diff changeset
    79
		void ConstructL( );
hgs
parents:
diff changeset
    80
		
hgs
parents:
diff changeset
    81
		/**
hgs
parents:
diff changeset
    82
		 * Write the cleanup triggers into a file. This is needed in cases
hgs
parents:
diff changeset
    83
		 * when the system is rebooted.
hgs
parents:
diff changeset
    84
		 */
hgs
parents:
diff changeset
    85
		void WriteCleanupDataToFileL();
hgs
parents:
diff changeset
    86
		
hgs
parents:
diff changeset
    87
		/**
hgs
parents:
diff changeset
    88
		 * Reads the cleanup triggers from the saved file. This is done during
hgs
parents:
diff changeset
    89
		 * system startup
hgs
parents:
diff changeset
    90
		 */
hgs
parents:
diff changeset
    91
		void ReadCleanupDataFromFileL();
hgs
parents:
diff changeset
    92
		
hgs
parents:
diff changeset
    93
		/**
hgs
parents:
diff changeset
    94
		 * Cleans up the next item on the cleanup list. The cleanup list is
hgs
parents:
diff changeset
    95
		 * maintained and saved in a chronological order.
hgs
parents:
diff changeset
    96
		 *
hgs
parents:
diff changeset
    97
		 */
hgs
parents:
diff changeset
    98
		void CleanupNextItemL();
hgs
parents:
diff changeset
    99
			
hgs
parents:
diff changeset
   100
	private: // From CActive		
hgs
parents:
diff changeset
   101
		void RunL();		
hgs
parents:
diff changeset
   102
		TInt RunError(TInt aError);
hgs
parents:
diff changeset
   103
		
hgs
parents:
diff changeset
   104
	private: // data members
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
		// Pointer to instance of Lbt Container
hgs
parents:
diff changeset
   107
		CLbtContainer &iContainer;
hgs
parents:
diff changeset
   108
	
hgs
parents:
diff changeset
   109
		// Array of pointers to hold the clean items
hgs
parents:
diff changeset
   110
		RPointerArray<CLbtCleanupItem> iCleanupItems;
hgs
parents:
diff changeset
   111
		
hgs
parents:
diff changeset
   112
		// Days for cleanup read up from repository
hgs
parents:
diff changeset
   113
		TInt iDaysForCleanup;
hgs
parents:
diff changeset
   114
		
hgs
parents:
diff changeset
   115
		// Local integer to ascertain the asynch operation
hgs
parents:
diff changeset
   116
		TInt iOperation;
hgs
parents:
diff changeset
   117
		
hgs
parents:
diff changeset
   118
		// operation code for container requests
hgs
parents:
diff changeset
   119
		TInt iContainerOp;
hgs
parents:
diff changeset
   120
	};
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
/**
hgs
parents:
diff changeset
   123
 * 
hgs
parents:
diff changeset
   124
 */
hgs
parents:
diff changeset
   125
class CLbtCleanupItem : public CBase
hgs
parents:
diff changeset
   126
	{
hgs
parents:
diff changeset
   127
	public:
hgs
parents:
diff changeset
   128
	    /**
hgs
parents:
diff changeset
   129
	     *
hgs
parents:
diff changeset
   130
	     */
hgs
parents:
diff changeset
   131
		void AddCleanupItem( const RArray<TLbtTriggerId>& aTriggers, TTime& aUTCTime );
hgs
parents:
diff changeset
   132
		
hgs
parents:
diff changeset
   133
		/**
hgs
parents:
diff changeset
   134
	     *
hgs
parents:
diff changeset
   135
	     */
hgs
parents:
diff changeset
   136
		const TTime& GetTime() const;
hgs
parents:
diff changeset
   137
		
hgs
parents:
diff changeset
   138
		/**
hgs
parents:
diff changeset
   139
	     *
hgs
parents:
diff changeset
   140
	     */
hgs
parents:
diff changeset
   141
		RArray<TLbtTriggerId>& GetTriggers();
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
		/**
hgs
parents:
diff changeset
   144
		 * Destructor
hgs
parents:
diff changeset
   145
		 */
hgs
parents:
diff changeset
   146
		 ~CLbtCleanupItem();
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
	private:
hgs
parents:
diff changeset
   149
		// Array of trigger ids that need to be cleaned up
hgs
parents:
diff changeset
   150
		RArray<TLbtTriggerId> iTriggers;
hgs
parents:
diff changeset
   151
		
hgs
parents:
diff changeset
   152
		// The time at which the items have to be cleanedup
hgs
parents:
diff changeset
   153
		TTime iUTCTime;
hgs
parents:
diff changeset
   154
	};
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
#endif //C_LBTCLEANUPHANDLER_H
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// end of file
hgs
parents:
diff changeset
   160