--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/loggingservices/eventlogger/LogServ/inc/LogServDatabaseMarshall.h Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,135 @@
+// Copyright (c) 2002-2009 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:
+//
+
+#ifndef __LOGSERVDATABASEMARSHALL__
+#define __LOGSERVDATABASEMARSHALL__
+
+#include <d32dbms.h>
+#include <logcli.h>
+#include "LogServBackupObserver.h"
+#include "LogServDatabaseTransactionInterface.h"
+#include <centralrepository.h>
+
+// Classes referenced
+class MLogServBackupInterface;
+class CLogServResourceInterpreter;
+class CLogServSecurity;
+
+/**
+Implements MLogServBackupObserver and MLogServDatabaseTransactionInterface interfaces.
+Owns and provides access to strings, config and types caches.
+
+@see CLogServCacheConfig
+@see CLogServCacheStrings
+@see CLogServCacheTypes
+@see MLogServBackupObserver
+@see MLogServDatabaseTransactionInterface
+@internalComponent
+*/
+class CLogServDatabaseMarshall : public CBase, public MLogServBackupObserver, public MLogServDatabaseTransactionInterface
+ {
+public:
+ static CLogServDatabaseMarshall* NewL(RFs& aFsSession, CLogServResourceInterpreter& aResourceInterface, MLogServBackupInterface& aBackupInterface);
+ ~CLogServDatabaseMarshall();
+ inline const TDesC& DatabaseName() const;
+ inline void SetChangeInterface(MLogServDatabaseChangeInterface& aChangeInterface);
+
+private:
+ CLogServDatabaseMarshall(RFs& aFsSession, CLogServResourceInterpreter& aResourceInterface, MLogServBackupInterface& aBackupInterface);
+ void ConstructL();
+
+// From MLogServDatabaseTransactionInterface
+ TInt DTIBegin();
+ TInt DTICommitAndEnd();
+ void DTIRollBack();
+ TInt DTIExecuteSql(const TDesC& aStatement, TDbTextComparison aComparison = EDbCompareNormal);
+ TBool DTIInTransaction() const;
+ TBool DTIDatabaseIsDamaged() const;
+ CLogServResourceInterpreter& DTIResourceInterface() const;
+ MLogServDatabaseChangeInterface& DTIChangeInterface() const;
+ CLogServCacheConfig& DTICacheConfig() const;
+ CLogServCacheStrings& DTICacheStrings() const;
+ CLogServCacheTypes& DTICacheTypes() const;
+ RDbDatabase& DTIDatabase();
+ TBool DTIIsAllowed(TEventOp aEventOp, const RMessage2& aMessage, TUid aEventType, const char* aDiagnostic = 0) const;
+ const RArray<TUid>& DTIUidsOfStandardTypes();
+
+// From MLogServBackupObserver
+ void BOHandleEventL(TLogServBackupEvent aEvent);
+
+// Internal methods
+ void DatabaseLocateL();
+ void DatabaseOpenL();
+ void DatabaseCreateL(const TDesC& aFileName);
+ //
+ void CreateTablesL();
+ void CreateTypesL(TBool aReadOnly = EFalse);
+ void CreateIndiciesL();
+ void CreateConfigurationL();
+ //
+ void ReadRepositoryFileConfigurationL(TLogConfig& aConfig, CRepository& repository) const;
+ void ReadResourceFileConfigurationL(TLogConfig& aConfig) const;
+ //
+ void MakeColumnAutoIncremetingL(const TDesC& aTable, const TDesC& aColumn);
+ //
+ inline void RestoreStandardTypesL();
+
+ TInt DoDbOpen();
+ TBool DbTableCntCheckL();
+ TInt AlterDbIfOldFmtL();
+ TInt AlterEventTblIfOldFmt(CDbColSet& aEventTblColSet);
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM
+ TInt AlterEventTblIfNoSimIdL(CDbColSet& aEventTblColSet);
+#endif
+ void DbDelete();
+ TInt DbCreate();
+ void CreateCachesL();
+
+private:
+ RFs& iFsSession;//File server interface handle
+ CLogServResourceInterpreter& iResourceInterface;//Used to access resources
+ MLogServDatabaseChangeInterface* iChangeInterface;//Used to access change interface
+ HBufC* iDatabaseName;//So we know what to open after a backup
+ MLogServBackupInterface& iBackupInterface;//Notifies us when a backup takes place
+ RDbNamedDatabase iDatabase;//The actual log database
+ CLogServCacheConfig* iCacheConfig;//Config table cache
+ CLogServCacheStrings* iCacheStrings;//String table cache
+ CLogServCacheTypes* iCacheTypes;//Type table cache
+ CLogEventType* iEventType;//Used to get event type TUid from the cache before calling the security manager
+ CLogServSecurity* iSecurity;//Platform security implementation
+ RArray<TUid> iStandardTypeUids;//Needed here for use by views during backups. When a backup is in progress, access to CacheTypes isn't allowed.
+
+ };
+
+inline const TDesC& CLogServDatabaseMarshall::DatabaseName() const
+ {
+ return *iDatabaseName;
+ }
+
+inline void CLogServDatabaseMarshall::SetChangeInterface(MLogServDatabaseChangeInterface& aChangeInterface)
+ {
+ // Bit ugly, but anyway...
+ iChangeInterface = &aChangeInterface;
+ }
+
+inline void CLogServDatabaseMarshall::RestoreStandardTypesL()
+ {
+ // Force LogServCacheTypes to read the TUids of all built-in types.
+ // The ETrue argument will stop LogServCacheTypes from writing the results
+ // into the database - i.e. a read-only operation on the cache types.
+ CreateTypesL(ETrue);
+ }
+
+#endif