--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/dbms/tdbms/t_dbfail.h Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,121 @@
+// Copyright (c) 1998-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 T_DBFAIL_H
+#define T_DBFAIL_H
+
+GLREF_D RTest test;
+GLREF_D RDbs TheDbs;
+GLREF_D RDbNamedDatabase TheDatabase;
+
+GLREF_C void Connect();
+GLREF_C void Disconnect();
+GLREF_C void PrepareDbFmtString();
+GLREF_C void TestOpen2();
+GLREF_C void Origins2();
+
+class THeapFail
+ {
+public:
+ virtual void Mark() const =0;
+ virtual void Fail(TInt aCount) const =0;
+ virtual void Reset() const =0;
+ virtual void Check() const =0;
+ };
+
+class TContext
+ {
+public:
+ virtual void OpenDbL() const =0;
+ };
+
+class TFail
+ {
+private:
+ void Test(const THeapFail& aHeap,const TContext* aContext);
+ virtual void RunL()
+ {
+ }
+ virtual void End()
+ {
+ }
+
+public:
+ inline void Test(const THeapFail& aHeap,const TContext& aContext)
+ {
+ Test(aHeap,&aContext);
+ }
+ inline void Test(const THeapFail& aHeap)
+ {
+ Test(aHeap,0);
+ }
+ };
+
+class TClientHeap : public THeapFail
+ {
+public:
+ TClientHeap()
+ {
+ }
+
+private:
+ void Mark() const
+ {
+ User::__DbgMarkStart(RHeap::EUser);
+ }
+ void Fail(TInt aCount) const
+ {
+ User::__DbgSetAllocFail(RHeap::EUser,RHeap::EFailNext,aCount);
+ }
+ void Reset() const
+ {
+ User::__DbgSetAllocFail(RHeap::EUser,RHeap::ENone,1);
+ }
+ void Check() const
+ {
+ User::__DbgMarkEnd(RHeap::EUser,0);
+ }
+
+ };
+
+class TServerHeap : public THeapFail
+ {
+public:
+ TServerHeap()
+ {
+ }
+
+private:
+ void Mark() const
+ {
+ }
+ void Fail(TInt aCount) const
+ {
+ TheDbs.SetHeapFailure(RHeap::EFailNext,aCount);
+ }
+ void Reset() const
+ {
+ TheDbs.SetHeapFailure(RHeap::ENone,0);
+ }
+ void Check() const
+ {
+ }
+
+ };
+
+GLREF_D TClientHeap KClientHeap;
+GLREF_D TServerHeap KServerHeap;
+
+#endif//T_DBFAIL_H