--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/Server/src/TSIPMemAllocFailureSimulation.cpp Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,111 @@
+// Copyright (c) 2005-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:
+// Name : TSIPMemAllocFailureSimulation.cpp
+// Part of : SIPServerCore
+// Version : SIP/4.0
+//
+
+
+
+
+#include "TSIPMemAllocFailureSimulation.h"
+#include <f32file.h>
+
+
+_LIT(KIniFileName, "\\sip\\MemAllocFailureSimulation.ini");
+const TInt KParamBufferSize = 100;
+
+// -----------------------------------------------------------------------------
+// TSIPMemAllocFailureSimulation::Start
+// -----------------------------------------------------------------------------
+//
+TInt TSIPMemAllocFailureSimulation::Start()
+ {
+ TInt err = KErrNone;
+
+ TBuf8<KParamBufferSize> buf;
+ err = ReadParamBufferFromFile(buf);
+ if (err != KErrNone)
+ {
+ return err;
+ }
+ TUint type;
+ TUint value;
+ err = ParseParams(buf,type,value);
+ if (err != KErrNone)
+ {
+ return err;
+ }
+
+ __UHEAP_SETFAIL (static_cast<RHeap::TAllocFail>(type),value);
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// TSIPMemAllocFailureSimulation::Stop
+// -----------------------------------------------------------------------------
+//
+void TSIPMemAllocFailureSimulation::Stop()
+ {
+ __UHEAP_RESET;
+ }
+
+// -----------------------------------------------------------------------------
+// TSIPMemAllocFailureSimulation::ReadParamBufferFromFile
+// -----------------------------------------------------------------------------
+//
+TInt TSIPMemAllocFailureSimulation::ReadParamBufferFromFile (TDes8& aDes)
+ {
+ RFs fileSession;
+ TInt err = fileSession.Connect();
+ if (err != KErrNone)
+ {
+ return err;
+ }
+ RFile file;
+ err = file.Open(fileSession, KIniFileName, EFileRead|EFileShareAny);
+ if (err != KErrNone)
+ {
+ fileSession.Close();
+ return err;
+ }
+ err = file.Read(aDes);
+ file.Close();
+ fileSession.Close();
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// TSIPMemAllocFailureSimulation::ParseParams
+// -----------------------------------------------------------------------------
+//
+TInt TSIPMemAllocFailureSimulation::ParseParams (const TDesC8& aDes,
+ TUint& aType,
+ TUint& aValue)
+ {
+ TLex8 lex(aDes);
+ lex.SkipSpace();
+ TInt err = lex.Val(aType);
+ if (err != KErrNone)
+ {
+ return err;
+ }
+ if (aType > RAllocator::EFailNext)
+ {
+ return KErrCorrupt;
+ }
+ lex.SkipSpace();
+ return lex.Val(aValue);
+ }