sl@0: // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef T_DBFAIL_H sl@0: #define T_DBFAIL_H sl@0: sl@0: GLREF_D RTest test; sl@0: GLREF_D RDbs TheDbs; sl@0: GLREF_D RDbNamedDatabase TheDatabase; sl@0: sl@0: GLREF_C void Connect(); sl@0: GLREF_C void Disconnect(); sl@0: GLREF_C void PrepareDbFmtString(); sl@0: GLREF_C void TestOpen2(); sl@0: GLREF_C void Origins2(); sl@0: sl@0: class THeapFail sl@0: { sl@0: public: sl@0: virtual void Mark() const =0; sl@0: virtual void Fail(TInt aCount) const =0; sl@0: virtual void Reset() const =0; sl@0: virtual void Check() const =0; sl@0: }; sl@0: sl@0: class TContext sl@0: { sl@0: public: sl@0: virtual void OpenDbL() const =0; sl@0: }; sl@0: sl@0: class TFail sl@0: { sl@0: private: sl@0: void Test(const THeapFail& aHeap,const TContext* aContext); sl@0: virtual void RunL() sl@0: { sl@0: } sl@0: virtual void End() sl@0: { sl@0: } sl@0: sl@0: public: sl@0: inline void Test(const THeapFail& aHeap,const TContext& aContext) sl@0: { sl@0: Test(aHeap,&aContext); sl@0: } sl@0: inline void Test(const THeapFail& aHeap) sl@0: { sl@0: Test(aHeap,0); sl@0: } sl@0: }; sl@0: sl@0: class TClientHeap : public THeapFail sl@0: { sl@0: public: sl@0: TClientHeap() sl@0: { sl@0: } sl@0: sl@0: private: sl@0: void Mark() const sl@0: { sl@0: User::__DbgMarkStart(RHeap::EUser); sl@0: } sl@0: void Fail(TInt aCount) const sl@0: { sl@0: User::__DbgSetAllocFail(RHeap::EUser,RHeap::EFailNext,aCount); sl@0: } sl@0: void Reset() const sl@0: { sl@0: User::__DbgSetAllocFail(RHeap::EUser,RHeap::ENone,1); sl@0: } sl@0: void Check() const sl@0: { sl@0: User::__DbgMarkEnd(RHeap::EUser,0); sl@0: } sl@0: sl@0: }; sl@0: sl@0: class TServerHeap : public THeapFail sl@0: { sl@0: public: sl@0: TServerHeap() sl@0: { sl@0: } sl@0: sl@0: private: sl@0: void Mark() const sl@0: { sl@0: } sl@0: void Fail(TInt aCount) const sl@0: { sl@0: TheDbs.SetHeapFailure(RHeap::EFailNext,aCount); sl@0: } sl@0: void Reset() const sl@0: { sl@0: TheDbs.SetHeapFailure(RHeap::ENone,0); sl@0: } sl@0: void Check() const sl@0: { sl@0: } sl@0: sl@0: }; sl@0: sl@0: GLREF_D TClientHeap KClientHeap; sl@0: GLREF_D TServerHeap KServerHeap; sl@0: sl@0: #endif//T_DBFAIL_H