--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/deviceupdatesui/deviceupdates/inc/nsmldmdbnotifier.h Fri Apr 16 14:53:31 2010 +0300
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Header file for CNSmlDMDbNotifier
+*
+*/
+
+
+#ifndef NSMLDMDBNOTIFIER_H
+#define NSMLDMDBNOTIFIER_H
+
+#include <e32std.h>
+#include <SyncMLObservers.h>
+#include <SyncMLClient.h>
+#include "nsmldmsyncutil.h"
+
+// CLASS DECLARATION
+
+/**
+* DB events
+*
+*/
+NONSHARABLE_CLASS (TNSmlDMDbEvent)
+ {
+ public:
+ TInt iType;
+ TInt iProfileId;
+ TInt iError;
+ };
+
+/**
+* Interface class to handle database events
+*
+*/
+class MNSmlDMDbEventHandler
+ {
+
+ public:
+ /**
+ * CNSmlDMDbNotifier calls this to inform that database has changed.
+ * @param aStatus EClose, EUnlock, ECommit, ERollback, or ERecover (d32dbms.h).
+ * @param aMoreEvents ETrue issue new request, EFalse no requests.
+ * @return None.
+ */
+ virtual void HandleDbEventL( TNSmlDMDbEvent aEvent ) = 0;
+ };
+
+/**
+* DB notifier
+*
+*/
+NONSHARABLE_CLASS (CNSmlDMDbNotifier) : public CBase,
+ public MNSmlDMActiveCallerObserver,
+ public MSyncMLEventObserver
+ {
+ public:
+ enum TEventType
+ {
+ EUpdate,
+ EUpdateAll,
+ EDelete,
+ EClose
+ };
+
+ public:
+ /**
+ * Two-phased constructor
+ * @param aDatabase Reference to RDbDatabase instance.
+ * @param aHandler Pointer to MNSmlDMDbEventHandler instance.
+ * @return None.
+ */
+ static CNSmlDMDbNotifier* NewL( RSyncMLSession* aSyncSession,
+ MNSmlDMDbEventHandler* aHandler );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNSmlDMDbNotifier();
+
+ // Functions from base classes
+
+ private:
+
+ /**
+ * Constructor
+ * @param aDatabase Reference to RDbDatabase instance.
+ * @param aHandler Pointer to event handler.
+ * @return None.
+ */
+ CNSmlDMDbNotifier( RSyncMLSession* aSyncSession,
+ MNSmlDMDbEventHandler* aHandler);
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public:
+ /**
+ * Start requesting events from db.
+ * @param None.
+ * @return None.
+ */
+ void RequestL();
+
+
+ private: // from MNSmlDMActiveCallerObserver
+
+ /**
+ * From MNSmlDMActiveCallerObserver
+ * Called when CNSmlDMActiveCaller completes.
+ * @param None
+ * @return None.
+ */
+ void HandleActiveCallL();
+
+ private: // from MSyncMLEventObserver
+
+ /**
+ * From MSyncMLEventObserver
+ * Called when SyncML session events oocur.
+ * @param aEvent.
+ * @param aIdentifier.
+ * @param aError.
+ * @param aAdditionalData.
+ * @return None.
+ */
+ void OnSyncMLSessionEvent( TEvent aEvent,
+ TInt aIdentifier,
+ TInt aError,
+ TInt aAdditionalData);
+
+ public:
+ /**
+ * Call observer with delay
+ * @param None
+ * @return None
+ */
+ void CallObserverWithDelay();
+
+ /**
+ * Call observer
+ * @param None
+ * @return None
+ */
+ void CallObserver();
+
+ /**
+ * Set as disabled
+ * @param aDisable
+ * @return None
+ */
+ void SetDisabled( TBool aDisable );
+
+ /**
+ * Change profile count
+ * @param None
+ * @return TInt
+ */
+ TInt ChangedProfileCount();
+
+ /**
+ * DB event
+ * @param aIndex
+ * @return db event
+ */
+ TNSmlDMDbEvent Event(TInt aIndex);
+
+ /**
+ * Event count
+ * @param None
+ * @return TInt
+ */
+ TInt EventCount();
+
+ /**
+ * Reset
+ * @param None
+ * @return None
+ */
+ void Reset();
+
+ /**
+ * Find event
+ * @param None
+ * @return TInt
+ */
+ TInt FindCloseEvent();
+
+ /**
+ * Find event
+ * @param None
+ * @return TInt
+ */
+ TInt FindSingleProfileEvent();
+
+ /**
+ * Find event
+ * @param None
+ * @return TInt
+ */
+ TInt FindProfileEvent();
+
+ /**
+ * Check if profile id is unique
+ * @param aId Profile id
+ * @return ETrue if unique
+ */
+ TBool IsUniqueProfileId(TInt aId);
+
+ /**
+ * Utility function.
+ * @return Sync session.
+ */
+ RSyncMLSession& Session();
+
+ private:
+ // sync session
+ RSyncMLSession* iSyncSession;
+ // Pointer to event handler
+ MNSmlDMDbEventHandler* iHandler;
+ // for making function call via active scheduler
+ CNSmlDMActiveCaller* iActiveCaller;
+ // for storing ids of changed profiles
+ RArray<TNSmlDMDbEvent> iList;
+ // can observer be called
+ TBool iDisabled;
+ // is synchronizing going on
+ TBool iSyncRunning;
+ };
+
+#endif // NSMLDMDBNOTIFIER_H
+
+// End of File