persistentstorage/sql/SRC/Server/Compact/SqlCompactConn.cpp
branchRCL_3
changeset 24 cc28652e0254
parent 23 26645d81f48d
equal deleted inserted replaced
23:26645d81f48d 24:cc28652e0254
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
    16 #include <f32file.h>
    16 #include <f32file.h>
    17 #include <sqldb.h>
    17 #include <sqldb.h>
    18 #include "SqlAssert.h"
    18 #include "SqlPanic.h"
    19 #include "sqlite3.h"
    19 #include "sqlite3.h"
    20 #include "SqliteSymbian.h"		//TSqlFreePageCallback
    20 #include "SqliteSymbian.h"		//TSqlFreePageCallback
    21 #include "SqlSrvUtil.h"
    21 #include "SqlSrvUtil.h"
    22 #include "SqlSrvStatementUtil.h"
    22 #include "SqlSrvStatementUtil.h"
    23 #include "SqlCompactConn.h"
    23 #include "SqlCompactConn.h"
    24 #include "OstTraceDefinitions.h"
       
    25 #ifdef OST_TRACE_COMPILER_IN_USE
       
    26 #include "SqlCompactConnTraces.h"
       
    27 #endif
       
    28 #include "SqlTraceDef.h"
       
    29 
    24 
    30 /**
    25 /**
    31 Creates a new CSqlCompactConn instance.
    26 Creates a new CSqlCompactConn instance.
    32 
    27 
    33 @param aFullName The full database name, including the path.
    28 @param aFullName The full database name, including the path.
    48 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter)
    43 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter)
    49 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
    44 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
    50 */
    45 */
    51 CSqlCompactConn* CSqlCompactConn::NewL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
    46 CSqlCompactConn* CSqlCompactConn::NewL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
    52 	{
    47 	{
    53 	SQL_TRACE_COMPACT(OstTraceExt1(TRACE_INTERNALS, CSQLCOMPACTCONN_NEWLC_ENTRY, "Entry;0;CSqlCompactConn::NewL;aFullName=%S", __SQLPRNSTR(aFullName)));
    48 	__SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument);
    54 	__ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC2(ESqlPanicBadArgument));
    49 	__SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument);
    55 	__ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC2(ESqlPanicBadArgument));
       
    56 	CSqlCompactConn* self = new (ELeave) CSqlCompactConn;
    50 	CSqlCompactConn* self = new (ELeave) CSqlCompactConn;
    57 	CleanupStack::PushL(self);
    51 	CleanupStack::PushL(self);
    58 	self->ConstructL(aFullName, aFreePageCallback);
    52 	self->ConstructL(aFullName, aFreePageCallback);
    59 	CleanupStack::Pop(self);
    53 	CleanupStack::Pop(self);
    60 	SQL_TRACE_COMPACT(OstTraceExt2(TRACE_INTERNALS, CSQLCOMPACTCONN_NEWLC_EXIT, "Exit;0x%X;CSqlCompactConn::NewL;aFullName=%S", (TUint)self, __SQLPRNSTR(aFullName)));
       
    61 	return self;
    54 	return self;
    62 	}
    55 	}
    63 
    56 
    64 /**
    57 /**
    65 Destroys the CSqlCompactConn instance.
    58 Destroys the CSqlCompactConn instance.
    66 */
    59 */
    67 CSqlCompactConn::~CSqlCompactConn()
    60 CSqlCompactConn::~CSqlCompactConn()
    68 	{
    61 	{
    69 	SQL_TRACE_COMPACT(OstTrace1(TRACE_INTERNALS, CSQLCOMPACTCONN_CSQLCOMPACTCONN2, "0x%X;CSqlCompactConn::~CSqlCompactConn", (TUint)this));
       
    70 	::CloseDbHandle(iHandle);
    62 	::CloseDbHandle(iHandle);
    71  	}
    63  	}
    72 
    64 
    73 /**
    65 /**
    74 Implements MSqlCompactConn::Release().
    66 Implements MSqlCompactConn::Release().
    95 @panic SqlDb 4 In _DEBUG mode. Negative aPageCount value.
    87 @panic SqlDb 4 In _DEBUG mode. Negative aPageCount value.
    96 @panic SqlDb 4 In _DEBUG mode. Negative aLength value.
    88 @panic SqlDb 4 In _DEBUG mode. Negative aLength value.
    97 */
    89 */
    98 TInt CSqlCompactConn::Compact(TInt aPageCount, TInt& aProcessedPageCount, TInt aLength)
    90 TInt CSqlCompactConn::Compact(TInt aPageCount, TInt& aProcessedPageCount, TInt aLength)
    99 	{
    91 	{
   100 	__ASSERT_DEBUG(aPageCount >= 0, __SQLPANIC(ESqlPanicBadArgument));
    92 	__SQLASSERT(aPageCount >= 0, ESqlPanicBadArgument);
   101 	__ASSERT_DEBUG(aLength >= 0, __SQLPANIC(ESqlPanicBadArgument));
    93 	__SQLASSERT(aLength >= 0, ESqlPanicBadArgument);
   102 	SQLCOMPACTCONN_INVARIANT();
    94 	SQLCOMPACTCONN_INVARIANT();
   103 	TInt err = ::DbCompact(iHandle, KNullDesC, aPageCount, aProcessedPageCount, aLength);
    95 	TInt err = ::DbCompact(iHandle, KNullDesC, aPageCount, aProcessedPageCount, aLength);
   104 	SQLCOMPACTCONN_INVARIANT();
    96 	SQLCOMPACTCONN_INVARIANT();
   105 	return err;
    97 	return err;
   106 	}
    98 	}
   129 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
   121 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
   130 @panic SqlDb 7 In _DEBUG mode. The database connection has been already established (not null db handle).
   122 @panic SqlDb 7 In _DEBUG mode. The database connection has been already established (not null db handle).
   131 */
   123 */
   132 void CSqlCompactConn::ConstructL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
   124 void CSqlCompactConn::ConstructL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
   133 	{
   125 	{
   134 	__ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC(ESqlPanicBadArgument));
   126 	__SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument);
   135 	__ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC(ESqlPanicBadArgument));
   127 	__SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument);
   136 	__ASSERT_DEBUG(!iHandle, __SQLPANIC(ESqlPanicInternalError));
   128 	__SQLASSERT(!iHandle, ESqlPanicInternalError);
   137 	
   129 	
   138 	TBuf8<KMaxFileName + 1> fname;
   130 	TBuf8<KMaxFileName + 1> fname;
   139 	(void)::UTF16ToUTF8Z(aFullName, fname);//The file is first open by the main connection. 
   131 	(void)::UTF16ToUTF8Z(aFullName, fname);//The file is first open by the main connection. 
   140 										   //The conversion here should always succeed.
   132 										   //The conversion here should always succeed.
   141 										   //Even in a case of a conversion failure, the next line will report a failure.
   133 										   //Even in a case of a conversion failure, the next line will report a failure.
   196 /**
   188 /**
   197 CSqlCompactConn invariant.
   189 CSqlCompactConn invariant.
   198 */
   190 */
   199 void CSqlCompactConn::Invariant() const
   191 void CSqlCompactConn::Invariant() const
   200 	{
   192 	{
   201 	__ASSERT_ALWAYS(iHandle != NULL, __SQLPANIC(ESqlPanicInternalError));
   193 	__SQLASSERT_ALWAYS(iHandle != NULL, ESqlPanicInternalError);
   202 	}
   194 	}
   203 #endif//_DEBUG
   195 #endif//_DEBUG
   204 
   196 
   205 /**
   197 /**
   206 A factory function for CSqlCompactConn.
   198 A factory function for CSqlCompactConn.
   228 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter)
   220 @panic SqlDb 4 In _DEBUG mode. Too short or too long database name (aFullName parameter)
   229 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
   221 @panic SqlDb 4 In _DEBUG mode. Invalid aFreePageCallback content.
   230 */
   222 */
   231 MSqlCompactConn* SqlCreateCompactConnL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
   223 MSqlCompactConn* SqlCreateCompactConnL(const TDesC& aFullName, TSqlFreePageCallback& aFreePageCallback)
   232 	{
   224 	{
   233 	__ASSERT_DEBUG(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, __SQLPANIC2(ESqlPanicBadArgument));
   225 	__SQLASSERT(aFullName.Length() > 0 && aFullName.Length() <= KMaxFileName, ESqlPanicBadArgument);
   234 	__ASSERT_DEBUG(aFreePageCallback.IsValid(), __SQLPANIC2(ESqlPanicBadArgument));
   226 	__SQLASSERT(aFreePageCallback.IsValid(), ESqlPanicBadArgument);
   235 	return CSqlCompactConn::NewL(aFullName, aFreePageCallback);
   227 	return CSqlCompactConn::NewL(aFullName, aFreePageCallback);
   236 	}
   228 	}