telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/config.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/config.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,176 @@
+// Copyright (c) 2008-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:
+//
+
+#include "config.h"
+
+TConfig::TConfig()
+	{	
+	}
+
+TBool TConfig::IsSupported(TInt aIpc)
+	{
+	TBool ret= ETrue;
+	
+	RFs	fs;
+	RFile file;
+	
+	if( fs.Connect() == KErrNone)
+		{
+		if( file.Open(fs, KConfigFile, EFileRead) == KErrNone)
+			{
+			TBuf8<1000> buf;
+			TBuf<100> temp;
+			TInt bufLength=1000;
+			TBuf<100> ipc;
+			ipc.Num(aIpc);
+			
+			TBool commentFlag=EFalse;
+			TBool valueFlag=EFalse;
+			TBool storeFlag=EFalse;
+			TBool valueRetrieved=EFalse;
+			
+			
+			while (bufLength==1000)
+				{
+				file.Read(buf,1000);
+				bufLength=buf.Length();
+			
+				for (TInt i=0; i<bufLength; ++i)
+					{
+					if(buf[i]=='#') 
+						{
+						commentFlag=ETrue;
+						}
+					else
+						{
+						if(!commentFlag)
+							{//read the content	
+							if(buf[i]!=' ' && buf[i]!='\n' && buf[i]!='\r' && buf[i]!='=' && buf[i]!='\t')
+								{
+								temp.Append(buf[i]);
+								//end of the file and the file doesn't have a new line at the end
+								if((i==bufLength-1 && bufLength<1000) && (valueFlag))
+									valueRetrieved=ETrue;
+								}
+							else if ((valueFlag)&& buf[i]=='\r')
+								{
+								valueRetrieved=ETrue;	
+								}
+							else
+								{
+								storeFlag=ETrue;	
+								}
+							
+							//storing a port names						
+							if (storeFlag) 
+								{
+								if(temp.CompareC(ipc) == 0) valueFlag = ETrue;
+								temp.Zero();
+								storeFlag=EFalse;
+								}
+							else
+							if(valueRetrieved)
+								{
+								temp.LowerCase();
+								if (temp.CompareC(_L("notsupported")) == 0)
+									{
+									file.Close();
+									fs.Close();
+									return EFalse;
+									}
+								else
+									{
+									file.Close();
+									fs.Close();
+									return ETrue;
+									}						
+								}
+							}
+						else //skip the comment until \n
+						if(buf[i]=='\n') 
+							{
+							commentFlag=EFalse;	
+							}
+						}
+					}//for
+				}//while
+			}
+		}
+	
+	file.Close();
+	fs.Close();
+	return ret;
+	}
+	
+TInt TConfig::SetSupportedValue(TInt aIpc, TBool aSupported)
+	{
+	TInt ret=KErrGeneral;
+
+	RFs	fs;
+	RFile file;
+
+	if(fs.Connect() == KErrNone)
+		{
+		if( file.Replace(fs, KConfigFile, EFileWrite) == KErrNone)
+			{
+			// write the content
+			TBuf8<1000> buf;
+			_LIT8(KTemp, "%d ");
+			_LIT8(KSupported, "supported");
+			_LIT8(KNotSupported, "notsupported");
+			
+			buf.Format(KTemp,aIpc);
+			if (aSupported)
+				{
+				buf.Append(KSupported);
+				}
+			else
+				{
+				buf.Append(KNotSupported);
+				}
+			ret = file.Write(buf);
+			}
+		}
+	
+	file.Close();
+	fs.Close();
+	return ret;
+	}
+
+TInt TConfig::Reset()
+	{
+	TInt ret=KErrGeneral;
+	RFs	fs;
+		
+	if(fs.Connect() == KErrNone)
+		{
+		ret = fs.Delete(KConfigFile);
+		}
+	
+	fs.Close();
+	return ret;
+	}
+
+/* static */
+void TConfig::ResetThis(TAny* aThis)
+	{
+	(void)(static_cast<TConfig*>(aThis))->Reset();
+	}
+
+void TConfig::PushL()
+	{
+	CleanupStack::PushL(TCleanupItem(ResetThis, this));
+	}
+