sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include "LogServCacheConfig.h" sl@0: #include "LOGQUERY.H" sl@0: #include "logservpanic.h" sl@0: #include "LogServDatabaseTransactionInterface.h" sl@0: sl@0: ///////////////////////////////////////////////////////////////////////////////////////// sl@0: // -----> CLogServCacheConfig (source) sl@0: ///////////////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: CLogServCacheConfig::CLogServCacheConfig(MLogServDatabaseTransactionInterface& aDatabase) sl@0: : iDatabase(aDatabase) sl@0: { sl@0: } sl@0: sl@0: CLogServCacheConfig::~CLogServCacheConfig() sl@0: { sl@0: } sl@0: sl@0: void CLogServCacheConfig::ConstructL() sl@0: { sl@0: ReadL(); sl@0: } sl@0: sl@0: CLogServCacheConfig* CLogServCacheConfig::NewL(MLogServDatabaseTransactionInterface& aDatabase) sl@0: { sl@0: CLogServCacheConfig* self = new(ELeave) CLogServCacheConfig(aDatabase); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: Get the current configuration sl@0: */ sl@0: const TLogConfig& CLogServCacheConfig::Config() const sl@0: { sl@0: return iConfig; sl@0: } sl@0: sl@0: /** sl@0: Update the config table sl@0: */ sl@0: void CLogServCacheConfig::UpdateL(const TLogConfig& aConfig) sl@0: { sl@0: RLogConfigDbTable tbl; sl@0: tbl.OpenLC(iDatabase.DTIDatabase()); sl@0: if(!tbl.FirstL()) sl@0: { sl@0: User::Leave(KErrNotFound); sl@0: } sl@0: tbl.UpdateL(); sl@0: tbl.SetColL(RLogConfigDbTable::iAgeColNo, aConfig.iMaxEventAge); sl@0: tbl.SetColL(RLogConfigDbTable::iSizeColNo, aConfig.iMaxLogSize); sl@0: tbl.SetColL(RLogConfigDbTable::iRecentColNo, aConfig.iMaxRecentLogSize); sl@0: tbl.PutL(); sl@0: CleanupStack::PopAndDestroy(&tbl); sl@0: iRequestedConfiguration = aConfig; sl@0: iInTransaction = ETrue; sl@0: } sl@0: sl@0: /** sl@0: Commit the requested configuration sl@0: */ sl@0: void CLogServCacheConfig::Commit() sl@0: { sl@0: __ASSERT_ALWAYS(iInTransaction, Panic(ELogCacheConfigNotInTransaction)); sl@0: iConfig = iRequestedConfiguration; sl@0: iInTransaction = EFalse; sl@0: } sl@0: sl@0: ///////////////////////////////////////////////////////////////////////////////////////// sl@0: ///////////////////////////////////////////////////////////////////////////////////////// sl@0: ///////////////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: void CLogServCacheConfig::ReadL() sl@0: { sl@0: RLogConfigDbTable tbl; sl@0: tbl.OpenLC(iDatabase.DTIDatabase(), RDbRowSet::EReadOnly); sl@0: if(!tbl.FirstL()) sl@0: { sl@0: User::Leave(KErrNotFound); sl@0: } sl@0: __ASSERT_ALWAYS(tbl.CountL() == 1, Panic(ELogTooManyRows4)); sl@0: tbl.GetL(); sl@0: iConfig.iMaxEventAge = tbl.ColUint32(RLogConfigDbTable::iAgeColNo); sl@0: iConfig.iMaxLogSize = tbl.ColUint16(RLogConfigDbTable::iSizeColNo); sl@0: iConfig.iMaxRecentLogSize = tbl.ColUint8(RLogConfigDbTable::iRecentColNo); sl@0: CleanupStack::PopAndDestroy(&tbl); sl@0: }