diff -r 238255e8b033 -r 84d9eb65b26f email/pop3andsmtpmtm/imapservermtm/test/src/ScriptFileProcessor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/imapservermtm/test/src/ScriptFileProcessor.cpp Mon May 03 12:29:07 2010 +0300 @@ -0,0 +1,128 @@ +// 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: +// + +#include "scriptfileprocessor.h" + + +const TChar KDelimiter=0x0A; +// +//CScriptFileProcessor +// + +CScriptFileProcessor* CScriptFileProcessor::NewLC(const TDesC& aScriptFile) + { + CScriptFileProcessor* self=new (ELeave)CScriptFileProcessor; + CleanupStack::PushL(self); + self->ConstructL(aScriptFile); + return self; + } + + +CScriptFileProcessor* CScriptFileProcessor::NewL(const TDesC& aScriptFile) + { + CScriptFileProcessor* self=CScriptFileProcessor::NewLC(aScriptFile); + CleanupStack::Pop(self); + return self; + } + +void CScriptFileProcessor::ConstructL(const TDesC& aScriptFile) + { + User::LeaveIfError(iFSession.Connect()); + User::LeaveIfError(iFile.Open(iFSession, aScriptFile, EFileRead)); + iFileReadStream.Attach(iFile); + } + +CScriptFileProcessor::CScriptFileProcessor() + { + } +CScriptFileProcessor::~CScriptFileProcessor() + { + iFile.Close(); + iFileReadStream.Close(); + iFSession.Close(); + } + +// +//DataDirection +// + +CScriptFileProcessor::TDataDirection CScriptFileProcessor::DataDirection() const + { + return iDataDirection; + } + +// +//ProcessLine +// + + TInt CScriptFileProcessor::ProcessLine(TDes8& aLine) + { + + //get the direction of the data + const TInt KSpecifierLength=3; + _LIT8(KFromServer,"<< "); + _LIT8(KFromClient,">> "); + + //if the data is from the server then the specifier should be at the begining of the line + TInt pos; + pos=aLine.Find(KFromServer); + if(pos==0) + { + iDataDirection=EFromServer; + } + else + { + //if the data is from the client then the specifier should be at the begining of the line + pos=aLine.Find(KFromClient); + if(pos==0) + { + iDataDirection=EFromClient; + } + else + { + //there has been an error, the spefifier was not found + return KErrNotFound; + } + } + + //trim the specifier from the start of the line + aLine=aLine.Right(aLine.Length()-KSpecifierLength); + //trim off trailing \r\n + aLine.TrimRight(); + + return KErrNone; + } + +// +//ReadLine +// + +TInt CScriptFileProcessor::ReadLine(TDes8& aLine) + { + + aLine.Zero(); + //read the line + TRAPD(err, iFileReadStream.ReadL(aLine, KDelimiter)); + if (err != KErrNone) + { + return err; + } + //process the line + err=ProcessLine(aLine); + + // Haven't reached end of the file yet + return err; + } +