persistentstorage/sql/SRC/Server/SqlSrvBlob.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 0 08ec8eefde2f
child 24 cc28652e0254
--- a/persistentstorage/sql/SRC/Server/SqlSrvBlob.cpp	Thu Aug 19 11:36:21 2010 +0300
+++ b/persistentstorage/sql/SRC/Server/SqlSrvBlob.cpp	Tue Aug 31 16:57:14 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 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"
@@ -14,12 +14,19 @@
 //
 
 #include "sqlite3.h"
-#include "SqlPanic.h"
+#include "SqlAssert.h"
 #include "SqlSrvBlob.h"
 #include "SqliteSymbian.h"
 #include "SqlSrvUtil.h"
 #include "SqlSrvStrings.h"
 #include "SqlDb.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "SqlSrvBlobTraces.h"
+#endif
+#include "SqlTraceDef.h"
+
+#define UNUSED_VAR(var) var = var
 
 /**
 Creates a new HBlobBuf instance.
@@ -45,14 +52,19 @@
 */
 HBlobBuf* HBlobBuf::NewL(sqlite3* aDb, const TDesC8& aDbName, const TDesC8& aTableName, const TDesC8& aColumnName, TInt64 aRowId, TMode aMode)
 	{
-	__SQLASSERT(aDb != NULL, ESqlPanicBadArgument);
-	__SQLASSERT(aRowId > 0, ESqlPanicBadArgument);
-	__SQLASSERT(aMode == HBlobBuf::EReadOnly || aMode == HBlobBuf::EReadWrite, ESqlPanicBadArgument);
+	__SQLTRACE_BLOBVAR(TBuf<100> des16prnbuf);
+	SQL_TRACE_BLOB(OstTraceExt4(TRACE_INTERNALS, HBLOBBUF_NEWL_ENTRY1, "Entry;0;HBlobBuf::NewL;sqlite3*=0x%X;aDbName=%s;aRowId=%lld;aMode=%d", (TUint)aDb, __SQLPRNSTR8(aDbName, des16prnbuf), aRowId, (TInt)aMode));
+	SQL_TRACE_BLOB(OstTraceExt1(TRACE_INTERNALS, HBLOBBUF_NEWL_ENTRY2, "Entry;0;HBlobBuf::NewL;aTableName=%s", __SQLPRNSTR8(aTableName, des16prnbuf)));
+	SQL_TRACE_BLOB(OstTraceExt1(TRACE_INTERNALS, HBLOBBUF_NEWL_ENTRY3, "Entry;0;HBlobBuf::NewL;aColumnName=%s", __SQLPRNSTR8(aColumnName, des16prnbuf)));
+	__ASSERT_DEBUG(aDb != NULL, __SQLPANIC2(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aRowId > 0, __SQLPANIC2(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aMode == HBlobBuf::EReadOnly || aMode == HBlobBuf::EReadWrite, __SQLPANIC2(ESqlPanicBadArgument));
 	
 	HBlobBuf* self = new (ELeave) HBlobBuf;
 	CleanupStack::PushL(self);
 	self->ConstructL(aDb, aDbName, aTableName, aColumnName, aRowId, aMode);
 	CleanupStack::Pop(self);
+	SQL_TRACE_BLOB(OstTraceExt2(TRACE_INTERNALS, HBLOBBUF_NEWL_EXIT, "Exit;0x%X;HBlobBuf::NewL;sqlite3_blob*=0x%X", (TUint)self, (TUint)self->iBlobHandle));
 	return self;
 	}
 
@@ -89,16 +101,16 @@
 */
 void HBlobBuf::ConstructL(sqlite3* aDb, const TDesC8& aDbName, const TDesC8& aTableName, const TDesC8& aColumnName, TInt64 aRowId, TMode aMode)
 	{
-	__SQLASSERT(aDb != NULL, ESqlPanicBadArgument);
-	__SQLASSERT(aRowId > 0, ESqlPanicBadArgument);
-	__SQLASSERT(aMode == HBlobBuf::EReadOnly || aMode == HBlobBuf::EReadWrite, ESqlPanicBadArgument);
+	__ASSERT_DEBUG(aDb != NULL, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aRowId > 0, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aMode == HBlobBuf::EReadOnly || aMode == HBlobBuf::EReadWrite, __SQLPANIC(ESqlPanicBadArgument));
 	
 	(void)sqlite3SymbianLastOsError();//clear last OS error
 			
 	TInt err = sqlite3_blob_open(aDb, (const char*)aDbName.Ptr(), (const char*)aTableName.Ptr(), (const char*)aColumnName.Ptr(), 
 								 aRowId, aMode & HBlobBuf::EReadWrite, &iBlobHandle);
 	__SQLLEAVE_IF_ERROR(::Sql2OsErrCode(err, sqlite3SymbianLastOsError()));
-	__SQLASSERT(iBlobHandle != NULL, ESqlPanicInternalError);
+	__ASSERT_DEBUG(iBlobHandle != NULL, __SQLPANIC(ESqlPanicInternalError));
 	iBlobSize = sqlite3_blob_bytes(iBlobHandle);
 	iWrPos = iRdPos = 0;
 	}
@@ -108,8 +120,11 @@
 */
 void HBlobBuf::DoRelease()
 	{
-	TRAP_IGNORE(DoSynchL());
-	}
+	SQL_TRACE_BLOB(OstTraceExt2(TRACE_INTERNALS, HBLOBBUF_DORELEASE_ENTRY, "Entry;0x%X;HBlobBuf::DoRelease;sqlite3_blob*=0x%X", (TUint)this, (TUint)iBlobHandle));
+	TRAPD(err, DoSynchL());
+	SQL_TRACE_BLOB(OstTraceExt2(TRACE_INTERNALS, HBLOBBUF_DORELEASE_EXIT, "Exit;0x%X;HBlobBuf::DoRelease;err=%d", (TUint)this, err));
+    UNUSED_VAR(err);
+    }
 	
 /**
 Closes the blob handle.
@@ -120,6 +135,7 @@
 	if(iBlobHandle)
 		{
 		TInt err = sqlite3_blob_close(iBlobHandle);
+		SQL_TRACE_BLOB(OstTraceExt2(TRACE_INTERNALS, HBLOBBUF_DOSYNCHL, "0x%X;HBlobBuf::DoSynchL;err=%d", (TUint)this, err));
 		iBlobHandle = NULL; // the close is unconditional, even if an error occurs
 		__SQLLEAVE_IF_ERROR(::Sql2OsErrCode(err, sqlite3SymbianLastOsError()));
 		}	
@@ -145,9 +161,11 @@
 */
 TInt HBlobBuf::DoReadL(TAny* aPtr, TInt aMaxLength)
 	{
-	__SQLASSERT(aPtr != NULL, ESqlPanicBadArgument);
-	__SQLASSERT(aMaxLength >= 0, ESqlPanicBadArgument);
-	__SQLASSERT(iBlobHandle != NULL, ESqlPanicInvalidObj);
+	__ASSERT_DEBUG(aPtr != NULL, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aMaxLength >= 0, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(iBlobHandle != NULL, __SQLPANIC(ESqlPanicInvalidObj));
+	
+	SQL_TRACE_BLOB(OstTraceExt5(TRACE_INTERNALS, HBLOBBUF_DOREADL, "0x%X;HBlobBuf::DoReadL;aMaxLength=%d;iBlobSize=%d;iWrPos=%d;iRdPos=%d", (TUint)this, aMaxLength, iBlobSize, iWrPos, iRdPos));
 	
 	if(aMaxLength <= 0)
 		{
@@ -188,9 +206,11 @@
 */
 void HBlobBuf::DoWriteL(const TAny* aPtr, TInt aLength)
 	{
-	__SQLASSERT(aPtr != NULL, ESqlPanicBadArgument);
-	__SQLASSERT(aLength >= 0, ESqlPanicBadArgument);
-	__SQLASSERT(iBlobHandle != NULL, ESqlPanicInvalidObj);
+	__ASSERT_DEBUG(aPtr != NULL, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(aLength >= 0, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(iBlobHandle != NULL, __SQLPANIC(ESqlPanicInvalidObj));
+	
+	SQL_TRACE_BLOB(OstTraceExt5(TRACE_INTERNALS, HBLOBBUF_DOWRITEL, "0x%X;HBlobBuf::DoWriteL;aLength=%d;iBlobSize=%d;iWrPos=%d;iRdPos=%d", (TUint)this, aLength, iBlobSize, iWrPos, iRdPos));
 	
 	if(aLength <= 0)
 		{
@@ -227,9 +247,10 @@
 */
 TStreamPos HBlobBuf::DoSeekL(MStreamBuf::TMark aMark, TStreamLocation aLocation, TInt aOffset)
 	{
-	__SQLASSERT_ALWAYS(!(aMark & ~(ERead | EWrite)), ESqlPanicStreamMarkInvalid);
-	__SQLASSERT(aOffset >= 0, ESqlPanicBadArgument);
-	__SQLASSERT(iBlobHandle != NULL, ESqlPanicInvalidObj);
+	SQL_TRACE_BLOB(OstTraceExt5(TRACE_INTERNALS, HBLOBBUF_DOSEEKL, "0x%X;HBlobBuf::DoSeekL;aMark=%d;aLocation=%d;aOffset=%d;iBlobSize=%d", (TUint)this, (TInt)aMark, (TInt)aLocation, aOffset, iBlobSize));
+	__ASSERT_ALWAYS(!(aMark & ~(ERead | EWrite)), __SQLPANIC(ESqlPanicStreamMarkInvalid));
+	__ASSERT_DEBUG(aOffset >= 0, __SQLPANIC(ESqlPanicBadArgument));
+	__ASSERT_DEBUG(iBlobHandle != NULL, __SQLPANIC(ESqlPanicInvalidObj));
 	
 	TInt newPos = 0;
 	switch(aLocation)
@@ -244,7 +265,7 @@
 		newPos = iBlobSize + aOffset;
 		break;
 	default:
-		__SQLASSERT(0, ESqlPanicStreamLocationInvalid);
+		__ASSERT_DEBUG(0, __SQLPANIC(ESqlPanicStreamLocationInvalid));
 		newPos = -1;
 		break;
 		}