diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdParser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdParser.cpp Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,133 @@ +// Copyright (c) 2002-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: +// $Header$ +// GT0149 Applications Protocol Integration Test Harness +// blank application +// This file contains the implementation for CCmdPar class' member +// functions. CCmdPar is an abstract base class for deriving different +// SET command classes. CCmdPar contains parsing of SET commands. +// rev: mjdavey, symbian@mjdss.com, July 2002 +// for: Typhoon (7.0s) & JetStream (8.0) +// Include Files +// +// + +#include "CCmdParser.h" + +//----------------------------------------------------------------------------- + +CCmdPar::~CCmdPar ( ) +{ +} + +//----------------------------------------------------------------------------- + +void CCmdPar::ConstructL(TInt aCommandId, // in: command identifier + const TDesC& aKeyphrase ) // in: beginning of the command name +{ +CCmdBase::ConstructL(aCommandId, aKeyphrase); +} + +//----------------------------------------------------------------------------- +// This function parses and processes a SET command line + +TInt CCmdPar::ProcessL( const TDesC& aCommand) // command line +{ +// Complete the test machine - will then get the next cmd +Machine()->CompleteRequest(); + +TPtrC param; +TRAPD( ret, param.Set( ParamsL( aCommand )) ); +if ( ret != KErrNone ) + return Error(ret, KFmtErrInvalidCmd, &Keyphrase()); + +// Mark that the value is set +TInt old = iHasBeenSet; +iHasBeenSet = ETrue; + +// Check that "=" or "+=" or ":=" follows +TBool assignment = ETrue; +TBool is_setfrom = EFalse; + +TLex parse(param); +parse.SkipSpace(); +if (TfrLex::ValF(parse, KTxtAssign) == KErrNone) + assignment = ETrue; +else if (TfrLex::ValF(parse, KTxtAddition) == KErrNone) + assignment = EFalse; +else if (TfrLex::ValF(parse, KTxtSetFrom) == KErrNone) + assignment = is_setfrom = ETrue; +else if (parse.TokenLength() == 0) + ret = Error(KErrArgument, KFmtErrInvalidCmd, &Keyphrase()); +else + ret = Error(KErrArgument, KFmtErrMissing, &KTxtAssign); + +// Check that the value exists and set or add the value +if (ret == KErrNone) + { + parse.SkipSpace(); + TPtrC token = parse.Remainder(); + if (token.Length() == 0) + ret = Error(KErrArgument, KTxtErrValueMissing); + else if (assignment) + ret = (is_setfrom ? SetFrom(token) : SetValue(token)); + else + ret = AddValue( token ); + } + +// If not succeeded, reset information about setting +if (ret != KErrNone) + iHasBeenSet = old; + +return ret; +} + +//----------------------------------------------------------------------------- +// This function provides the default implementation which gives an +// error message about addition + +TInt CCmdPar::AddValue(const TDesC& aValue) +{ +aValue.Length(); // to avoid warning about unused parameter +return Error(KErrArgument, KTxtErrNoAddition); +} + +//----------------------------------------------------------------------------- +// This function provides the default implementation which gives an +// error message about setting the value from file. +TVi + +TInt CCmdPar::SetFrom(const TDesC& aValue) +{ +aValue.Length(); // to avoid warning about unused parameter +return Error(KErrArgument, KTxtErrNoSetFrom); +} + +//----------------------------------------------------------------------------- + +TBool CCmdPar::HasBeenSet ( ) +{ +return iHasBeenSet; +} + +//----------------------------------------------------------------------------- + +void CCmdPar::MarkNotSet ( ) +{ +iHasBeenSet = EFalse; +} + +//----------------------------------------------------------------------------- +// End of File +//----------------------------------------------------------------------------- +