phonebookui/Phonebook/Engine/src/CDiskSpaceWatcher.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/Engine/src/CDiskSpaceWatcher.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2002 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: 
+*       Database compression timeout timer
+*
+*/
+
+
+// INCLUDE FILES
+#include "CPbkDefaultCompressionStrategy.h"
+#include "CDiskSpaceWatcher.h" 
+#include "PbkCompressConfig.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+inline CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::CDiskSpaceWatcher
+        (MPbkCompressionStrategy& aCompressionStrategy, 
+        RFs& aFs, TInt64 aThreshold, TInt aDrive) :
+    CActive(CActive::EPriorityIdle),
+    iCompressionStrategy(aCompressionStrategy),
+    iFs(aFs), iThreshold(aThreshold), iDrive(aDrive)
+    {
+    CActiveScheduler::Add(this);
+    RequestNotification();
+    }
+
+CPbkDefaultCompressionStrategy::CDiskSpaceWatcher* 
+    CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::NewL
+        (MPbkCompressionStrategy& aCompressionStrategy, 
+        RFs& aFs, TInt64 aThreshold, TInt aDrive)
+    {
+    CDiskSpaceWatcher* self = new(ELeave) CDiskSpaceWatcher
+        (aCompressionStrategy, aFs, aThreshold, aDrive);
+    return self;
+    }
+
+CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::~CDiskSpaceWatcher()
+    {
+    Cancel();
+    }
+
+void CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::DoCancel()
+    {
+    iFs.NotifyDiskSpaceCancel();
+    }
+
+void CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::RunL()
+    {
+    PBK_COMPRESS_LOG(PBK_COMPRESS_STRING("CDiskSpaceWatcher::RunL() executed"));
+
+    // Leave if NotifyDiskSpace signals error
+    User::LeaveIfError(iStatus.Int());
+
+    // Disk space is below CL -> initiate a compress
+    iCompressionStrategy.CompressL();
+    // Renew notification request
+    RequestNotification();
+    }
+
+TInt CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::RunError(TInt /*aError*/)
+    {
+    // Compression is a silent background operation -> ignore all errors
+    return KErrNone;
+    }
+
+void CPbkDefaultCompressionStrategy::CDiskSpaceWatcher::RequestNotification()
+    {
+    Cancel();
+    iFs.NotifyDiskSpace(iThreshold,iDrive,iStatus);
+    SetActive();
+    }
+
+
+//  End of File