realtimenetprots/sipfw/SIP/Server/src/TSIPMemAllocFailureSimulation.cpp
changeset 0 307788aac0a8
--- /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);
+	}