--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swinstallationfw/inc_private/sifnotification_internal.h Tue Aug 31 15:21:33 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+* sifnotification_internal.h - Internal classes used by the Sif notifier.
+*
+*/
+
+/**
+ @file
+ @released
+ @internal
+*/
+
+#ifndef __SIFNOTIFICATION_INTERNAL_H__
+#define __SIFNOTIFICATION_INTERNAL_H__
+
+#include <e32std.h>
+#include <usif/sif/sifnotification.h>
+
+namespace Usif {
+
+const TUint KBufferSize = 100;
+const TInt KMaxNumberOfOperations = 11;//One more than the maximum number of operations that that could be tracked
+//The Global operation key, this property will contain the total number and list of all the ongoing operations.
+const TUint KSifOperationKey = 0x2002ED64;
+//StartEnd and progress key for the first operation
+const TUint KSifFirstOperationStartEndKey = 0x2002ED65;
+//StartEnd and progress key for the second operation
+const TUint KSifSecondOperationStartEndKey = 0x2002ED67;
+//StartEnd and progress key for the third operation
+const TUint KSifThirdOperationStartEndKey = 0x2002ED69;
+//StartEnd and progress key for the fourth operation
+const TUint KSifFourthOperationStartEndKey = 0x2002F7C4;
+//StartEnd and progress key for the fifth operation
+const TUint KSifFifthOperationStartEndKey = 0x2002F7C6;
+//StartEnd and progress key for the sixth operation
+const TUint KSifSixthOperationStartEndKey = 0x2002F7C8;
+//StartEnd and progress key for the seventh operation
+const TUint KSifSeventhOperationStartEndKey = 0x2002F7CA;
+//StartEnd and progress key for the eight operation
+const TUint KSifEightOperationStartEndKey = 0x2002F7CC;
+//StartEnd and progress key for the ninth operation
+const TUint KSifNinthOperationStartEndKey = 0x2002F7CE;
+//StartEnd and progress key for the tenth operation
+const TUint KSifTenthOperationStartEndKey = 0x2002F7D0;
+
+const TUint KSifPropertyTable [KMaxNumberOfOperations-1] = {KSifFirstOperationStartEndKey, KSifSecondOperationStartEndKey, KSifThirdOperationStartEndKey,
+ KSifFourthOperationStartEndKey, KSifFifthOperationStartEndKey, KSifSixthOperationStartEndKey,
+ KSifSeventhOperationStartEndKey, KSifEightOperationStartEndKey, KSifNinthOperationStartEndKey, KSifTenthOperationStartEndKey};
+
+const TInt KDeleteKeyDelay = 2000000; // 2 seconds
+
+const TInt KStartBufLength = 100;
+const TInt KProgressBufLength = 25;
+
+_LIT_SECURITY_POLICY_C1(KSecurityPolicyNone, ECapability_None);
+_LIT_SECURITY_POLICY_C1(KSecurityPolicyWDD, ECapabilityWriteDeviceData);
+
+/**
+ * This class will be used internally to start timer after publishing the completion data.
+ * The property which holds the Start-End and Progress data will be deleted after this timer.
+ */
+NONSHARABLE_CLASS(CDeleteKeyTimer) : public CTimer
+ {
+public:
+ static CDeleteKeyTimer* NewL(const TUint aKey);
+ CDeleteKeyTimer();
+ ~CDeleteKeyTimer();
+ void Start();
+private:
+ void ConstructL(const TUint aKey);
+ void RunL();
+ TInt RunError(TInt aError);
+ TUint iKey;//StartEnd key to be deleted
+ };
+
+
+NONSHARABLE_CLASS(CSifOperationKey) : public CBase
+ /**
+ * This class will be used internally to hold contents of KSIFOperationKey
+ */
+ {
+public:
+ IMPORT_C static CSifOperationKey* NewL();
+ IMPORT_C static CSifOperationKey* NewLC();
+ static CSifOperationKey* NewL(RReadStream& aStream);
+ ~CSifOperationKey();
+ void AddKeyL(TUint aKey);
+ void DeleteKey(TUint aPos);
+ const RArray<TUint>& StartEndKeys() const;
+ IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+private:
+ void InternalizeL(RReadStream& aStream);
+ CSifOperationKey();
+ void ConstructL();
+
+private:
+ RArray<TUint> iStartEndKeyArray;
+ };
+
+
+/**
+ * This class will be used internally to subscribe to changes in individual operations requested by the client.
+ */
+class CSifNotifierBase : public CActive
+ {
+public:
+ enum TNotifierType
+ {
+ EStartEndNotifier =1,
+ EProgressNotifier
+ };
+
+ IMPORT_C static CSifNotifierBase* NewL(MSifOperationsHandler& aHandler, TUint aKey, TNotifierType aType);
+ IMPORT_C static CSifNotifierBase* NewLC(MSifOperationsHandler& aHandler, TUint aKey, TNotifierType aType);
+ IMPORT_C TUint Key();
+ IMPORT_C ~CSifNotifierBase();
+
+private:
+ CSifNotifierBase(MSifOperationsHandler& aHandler, TUint aKey, TNotifierType aType);
+ void WaitForChangeL();
+ void ConstructL();
+ void RunL();
+ TInt RunError(TInt aError);
+ void DoCancel();
+
+private:
+ MSifOperationsHandler& iHandler;
+ TUint iKey;
+ RProperty iProperty;
+ TInt iBufferSize;
+ TNotifierType iType;
+ };
+
+
+} //namespace
+
+#endif //__SIFNOTIFICATION_INTERNAL_H__