--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/sql/SRC/Server/SqlSrvMain.h Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,169 @@
+// Copyright (c) 2005-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 __SQLSRVMAIN_H__
+#define __SQLSRVMAIN_H__
+
+#include <f32file.h>
+#include "SqlPanic.h" //TSqlPanic
+#include "SqlSrvFileData.h" //TSqlSrvFileData
+#include "SqlSrvAuthorizer.h" //MSqlPolicyInspector
+#include "SqlSrvSecurityMap.h" //
+#include "SqlSrvDriveSpace.h" //RSqlDriveSpaceCol
+#include "SqlSrvBurInterface.h" //MSqlSrvBurInterface
+#include "SqlBur.h"
+#include "SqlBufFlat.h" //RSqlBufFlat
+
+//Forward declarations
+class CSqlCompactor;
+class CSqlServer;
+
+CSqlServer& SqlServer(void);
+
+/**
+CSqlServer class derives from CServer2 and offers methods for:
+ - creating new server side sessions;
+ - accessing the last RMessage2 object;
+ - accessing the TSqlSrvFileData instance (one per server);
+ - accessing the security settings map (one per server);
+
+CSqlServer class also implements MSqlPolicyInspector and MSqlSrvBurInterface interfaces;
+
+The class owns also the folowing set of data:
+- iFileData - see TSqlSrvFileData;
+- iSecurityMap - see RSqlSecurityMap and RSqlMap;
+
+@see CServer2
+@see MSqlPolicyInspector
+@see TSqlSrvFileData
+@see RSqlMap
+@see RSqlSecurityMap
+@see CSqlServer::NewLC()
+@see CSqlServer::NewSessionL()
+@see CSqlServer::FileData()
+@see CSqlServer::SecurityMap()
+@see CSqlServer::Check()
+
+@internalComponent
+*/
+NONSHARABLE_CLASS(CSqlServer) : public CServer2, public MSqlPolicyInspector, public MSqlSrvBurInterface
+ {
+public:
+ static CSqlServer* NewLC();
+ ~CSqlServer();
+ inline TSqlSrvFileData& FileData();
+ inline RSqlSecurityMap& SecurityMap();
+ inline RSqlDriveSpaceCol& DriveSpaceCol();
+ inline const TDesC& CollationDllName() const;
+ inline MSqlPolicyInspector& SecurityInspector();
+ //Server buffers
+ RSqlBufFlat& GetFlatBufL(TInt aMinLen);
+ TDes8& GetBuf8L(TInt aMinLen);
+ TDes16& GetBuf16L(TInt aMinLen);
+ inline TDes& FileNameBuf();
+ void MinimizeBuffers();
+ //Compactor
+ inline CSqlCompactor& Compactor();
+ //Overriding CServer2 abstract methods
+ virtual CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
+ //Overriding MSqlPolicyInspector abstract methods
+ virtual TBool Check(const TSecurityPolicy& aPolicy) const;
+ //Overriding MSqlSrvBurInterface abstract methods
+ virtual RFs& Fs();
+ virtual void GetBackUpListL(TSecureId aUid, RArray<TParse>& aFileList);
+
+private:
+ CSqlServer();
+ void ConstructL();
+ void GetCollationDllNameL();
+ void CacheDbConfigFileNamesL(RFs& aFs, const TDesC& aServerPrivatePath);
+ TInt ReAllocBuf(TInt aNewBufSize);
+
+private:
+ TSqlSrvFileData iFileData; //Used as a temporary storage for file data (file name, drive, path, secure uid)
+ RSqlSecurityMap iSecurityMap; //Collection of database security policies
+ RSqlDriveSpaceCol iDriveSpaceCol; //Collection of "drive space" objects (reserved drive space management)
+ CSqlBackupClient* iBackupClient; // the backup and restore instance
+ TFileName iCollationDllName;//Default collation - dll name - uniquely identifies the collation method
+ RSqlBufFlat iFlatBuf; //general purpose flat buffer. do not keep a state in it between calls!
+ TUint8* iBuf; //general purpose buffer. do not keep a state in it between calls!
+ TPtr8 iBufPtr8; //8-bit pointer to iBuf
+ TPtr16 iBufPtr16; //16-bit pointer to iBuf
+ TFileName iFileNameBuf; //General purpose buffer, can be used for storing file names
+ CDbConfigFiles* iDbConfigFiles; //Holds the database config file names, if any exist (will be NULL if no files exist)
+ CSqlCompactor* iCompactor; //The background compacting object (container for the db entries to be compacted)
+ };
+
+/**
+@return A reference to the file data object (one per server).
+*/
+inline TSqlSrvFileData& CSqlServer::FileData()
+ {
+ return iFileData;
+ }
+
+/**
+@return A reference to the security settings map object which maintains a map of
+ {Database name, security settings container} entries.
+*/
+inline RSqlSecurityMap& CSqlServer::SecurityMap()
+ {
+ return iSecurityMap;
+ }
+
+/**
+@return A reference to the "drive space" collection
+*/
+inline RSqlDriveSpaceCol& CSqlServer::DriveSpaceCol()
+ {
+ return iDriveSpaceCol;
+ }
+
+/**
+@return A reference to the default collation - the dll name.
+*/
+inline const TDesC& CSqlServer::CollationDllName() const
+ {
+ return iCollationDllName;
+ }
+
+/**
+Returns a reference to the security policy inspector interface.
+@return A reference to the security policy inspector interface.
+*/
+inline MSqlPolicyInspector& CSqlServer::SecurityInspector()
+ {
+ return static_cast <MSqlPolicyInspector&> (*this);
+ }
+
+/**
+@return A reference to the file name buffer.
+*/
+inline TDes& CSqlServer::FileNameBuf()
+ {
+ return iFileNameBuf;
+ }
+
+/**
+@return A reference to the compactor.
+@panic SqlDb 7 In _DEBUG mode if the compactor is NULL.
+*/
+inline CSqlCompactor& CSqlServer::Compactor()
+ {
+ __SQLASSERT(iCompactor != NULL, ESqlPanicInternalError);
+ return *iCompactor;
+ }
+
+#endif//__SQLSRVMAIN_H__