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