First public contribution.
1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
17 #include "logservpanic.h"
18 #include "LogServDatabaseTransactionInterface.h"
21 const TInt KLogMaxWastedSpacePercentage = 25;
22 const TInt KLogMaxWastedSpace = 128 * 1024;
23 const TInt KLogMinWastedSpace = 32 * 1024;
26 CLogCompact::CLogCompact(MLogServDatabaseTransactionInterface& aDatabase, TInt aPriority)
27 : CLogActive(aPriority), iDatabase(aDatabase)
31 void CLogCompact::Start(TRequestStatus& aStatus)
33 __ASSERT_DEBUG(!IsActive(), Panic(ELogAlreadyActive5));
35 TInt error = iOperation.UpdateStats(iDatabase.DTIDatabase(), iStep());
39 TRequestStatus* st = &iStatus;
40 User::RequestComplete(st, error);
44 void CLogCompact::DoRunL()
48 iOperation.Next(iStep, iStatus);
51 else if (!iCompact && CompactRequired())
56 User::LeaveIfError(iOperation.Compact(iDatabase.DTIDatabase(), iStep()));
60 TRequestStatus* st = &iStatus;
61 User::RequestComplete(st, KErrNone);
68 TBool CLogCompact::CompactRequired() const
70 RDbDatabase::TSize size = iDatabase.DTIDatabase().Size();
74 const TInt wastedSpace = (size.iSize * (100 - size.iUsage)) / 100;
75 return (wastedSpace > KLogMinWastedSpace && (100 - size.iUsage) > KLogMaxWastedSpacePercentage) || wastedSpace > KLogMaxWastedSpace;
78 void CLogCompact::DoComplete(TInt&)