deviceupdatesui/deviceupdates/inc/nsmldmdbnotifier.h
author hgs
Sun, 21 Mar 2010 15:34:22 +0530
changeset 36 9eefb50e711a
parent 33 7464c1e21dae
permissions -rw-r--r--
201011
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     1
/*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     3
* All rights reserved.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     8
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
     9
* Initial Contributors:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    11
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    12
* Contributors:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    13
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    14
* Description:  Header file for CNSmlDMDbNotifier
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    15
*
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    16
*/
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    17
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    18
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    19
#ifndef NSMLDMDBNOTIFIER_H
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    20
#define NSMLDMDBNOTIFIER_H
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    21
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    22
#include <e32std.h>
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    23
#include <SyncMLObservers.h>
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    24
#include <SyncMLClient.h>
36
hgs
parents: 33
diff changeset
    25
#include "nsmldmsyncutil.h"
33
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    26
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    27
// CLASS DECLARATION
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    28
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    29
/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    30
* DB events
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    31
* 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    32
*/
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    33
NONSHARABLE_CLASS (TNSmlDMDbEvent)
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    34
	{
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    35
	public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    36
		TInt iType;	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    37
		TInt iProfileId;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    38
		TInt iError;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    39
	};
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    40
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    41
/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    42
* Interface class to handle database events
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    43
* 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    44
*/
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    45
class MNSmlDMDbEventHandler
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    46
	{
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    47
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    48
	public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    49
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    50
        * CNSmlDMDbNotifier calls this to inform that database has changed.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    51
        * @param aStatus EClose, EUnlock, ECommit, ERollback, or ERecover (d32dbms.h).
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    52
		* @param aMoreEvents ETrue issue new request, EFalse no requests.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    53
        * @return None. 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    54
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    55
		virtual void HandleDbEventL( TNSmlDMDbEvent aEvent ) = 0;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    56
	};
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    57
	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    58
/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    59
* DB notifier
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    60
* 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    61
*/
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    62
NONSHARABLE_CLASS (CNSmlDMDbNotifier) : public CBase,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    63
                                        public MNSmlDMActiveCallerObserver,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    64
                                        public MSyncMLEventObserver
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    65
	{	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    66
    public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    67
	    enum TEventType
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    68
			{
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    69
			EUpdate,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    70
			EUpdateAll,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    71
			EDelete,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    72
	        EClose
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    73
			};
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    74
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    75
	public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    76
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    77
        * Two-phased constructor
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    78
        * @param aDatabase Reference to RDbDatabase instance.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    79
		* @param aHandler Pointer to MNSmlDMDbEventHandler instance.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    80
        * @return None. 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    81
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    82
		static CNSmlDMDbNotifier* NewL( RSyncMLSession* aSyncSession,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    83
		                                MNSmlDMDbEventHandler* aHandler );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    84
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    85
        /**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    86
        * Destructor.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    87
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    88
		virtual ~CNSmlDMDbNotifier();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    89
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    90
		// Functions from base classes
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    91
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    92
	private:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    93
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    94
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    95
        * Constructor
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    96
        * @param aDatabase Reference to RDbDatabase instance.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    97
		* @param aHandler Pointer to event handler.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    98
        * @return None. 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
    99
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   100
		CNSmlDMDbNotifier( RSyncMLSession* aSyncSession,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   101
		                   MNSmlDMDbEventHandler* aHandler);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   102
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   103
        /**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   104
        * By default Symbian OS constructor is private.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   105
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   106
		void ConstructL();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   107
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   108
	public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   109
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   110
		* Start requesting events from db.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   111
        * @param None. 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   112
        * @return None. 
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   113
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   114
		void RequestL();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   115
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   116
   
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   117
	private:   // from MNSmlDMActiveCallerObserver
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   118
	
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   119
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   120
        * From MNSmlDMActiveCallerObserver
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   121
		* Called when CNSmlDMActiveCaller completes.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   122
        * @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   123
        * @return None.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   124
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   125
		void HandleActiveCallL();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   126
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   127
    private:    // from MSyncMLEventObserver
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   128
        
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   129
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   130
        * From MSyncMLEventObserver
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   131
		* Called when SyncML session events oocur.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   132
        * @param aEvent.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   133
        * @param aIdentifier.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   134
        * @param aError.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   135
        * @param aAdditionalData.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   136
        * @return None.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   137
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   138
        void OnSyncMLSessionEvent( TEvent aEvent,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   139
                                   TInt aIdentifier,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   140
                                   TInt aError,
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   141
                                   TInt aAdditionalData);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   142
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   143
    public:
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   144
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   145
		* Call observer with delay
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   146
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   147
		* @return None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   148
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   149
		void CallObserverWithDelay();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   150
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   151
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   152
		* Call observer
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   153
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   154
		* @return None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   155
        */		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   156
		void CallObserver();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   157
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   158
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   159
		* Set as disabled
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   160
		* @param aDisable
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   161
		* @return None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   162
        */		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   163
		void SetDisabled( TBool aDisable );
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   164
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   165
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   166
		* Change profile count
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   167
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   168
		* @return TInt
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   169
        */		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   170
		TInt ChangedProfileCount();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   171
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   172
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   173
		* DB event
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   174
		* @param aIndex
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   175
		* @return db event
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   176
        */        
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   177
        TNSmlDMDbEvent Event(TInt aIndex);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   178
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   179
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   180
		* Event count
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   181
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   182
		* @return TInt
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   183
        */		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   184
		TInt EventCount();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   185
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   186
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   187
		* Reset
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   188
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   189
		* @return None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   190
        */		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   191
		void Reset();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   192
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   193
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   194
		* Find event
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   195
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   196
		* @return TInt
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   197
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   198
		TInt FindCloseEvent();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   199
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   200
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   201
		* Find event
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   202
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   203
		* @return TInt
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   204
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   205
		TInt FindSingleProfileEvent();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   206
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   207
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   208
		* Find event
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   209
		* @param None
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   210
		* @return TInt
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   211
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   212
		TInt FindProfileEvent();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   213
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   214
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   215
		* Check if profile id is unique
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   216
		* @param aId Profile id
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   217
		* @return ETrue if unique
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   218
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   219
		TBool IsUniqueProfileId(TInt aId);
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   220
		
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   221
		/**
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   222
		* Utility function.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   223
		* @return Sync session.
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   224
        */
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   225
		RSyncMLSession& Session();
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   226
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   227
	private:  
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   228
		// sync session
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   229
		RSyncMLSession* iSyncSession;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   230
		// Pointer to event handler
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   231
		MNSmlDMDbEventHandler* iHandler;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   232
		// for making function call via active scheduler
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   233
		CNSmlDMActiveCaller* iActiveCaller;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   234
		// for storing ids of changed profiles
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   235
		RArray<TNSmlDMDbEvent> iList;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   236
		// can observer be called
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   237
		TBool iDisabled;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   238
		// is synchronizing going on
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   239
		TBool iSyncRunning;
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   240
	};
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   241
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   242
#endif // NSMLDMDBNOTIFIER_H
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   243
7464c1e21dae 201008_internal
hgs
parents:
diff changeset
   244
// End of File