--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdLog.cpp Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,136 @@
+// 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$
+// rev: mjdavey, symbian@mjdss.com, July 2002
+// for: Typhoon (7.0s) & JetStream (8.0)
+// This module implements the CCmdLog (log mode) command class.
+//
+//
+
+#include "CCmdLog.h"
+
+//-----------------------------------------------------------------------------
+
+CCmdLog *CCmdLog::NewL(TInt aCommandId, const TDesC& aKeyphrase, const TDesC& aHelpPhrase)
+{
+CCmdLog *self = NewLC( aCommandId, aKeyphrase, aHelpPhrase);
+CleanupStack::Pop();
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdLog *CCmdLog::NewLC( TInt aCommandId, const TDesC& aKeyphrase, const TDesC& aHelpPhrase)
+{
+CCmdLog *self = new (ELeave) CCmdLog();
+CleanupStack::PushL( self );
+self->ConstructL(aCommandId, aKeyphrase, aHelpPhrase);
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+void CCmdLog::ConstructL( TInt aCommandId, const TDesC& aKeyphrase, const TDesC& aHelpPhrase)
+{
+CCmdBase::ConstructL(aCommandId, aKeyphrase, aHelpPhrase);
+}
+
+//-----------------------------------------------------------------------------
+// LOG sets controls on logging of input/output
+//
+// LOG ALL sets comments, commands and cases to ON
+// LOG NONE resets all comment options to OFF
+// LOG [COMMENTS | COMMANDS | CASES] will enable the appropriate subclass
+
+TInt CCmdLog::ProcessL( const TDesC& aCommand )
+{
+TPtrC param;
+TRAPD( error, param.Set(ParamsL(aCommand)));
+if ( error != KErrNone )
+ return Error(error, KFmtErrInvalidCmd, &Keyphrase());
+
+TBool logComments = EFalse;
+TBool logCommands = EFalse;
+TBool logCases = EFalse;
+param.Set( TfrLex::Trim( param ) );
+if ( param.CompareF(KTxtLogALL) == 0 )
+ {
+ logComments = ETrue;
+ logCommands = ETrue;
+ logCases = ETrue;
+ }
+else if (param.CompareF(KTxtLogNONE) == 0)
+ {
+ logComments = EFalse;
+ logCommands = EFalse;
+ logCases = EFalse;
+ }
+else if (param.Length() == 0)
+ error = KErrArgument;
+else
+ {
+ TLex parse(param);
+ parse.SkipSpace();
+ while (!parse.Eos())
+ {
+ if (TfrLex::ValF(parse,KTxtLogCOMMENTS) == KErrNone)
+ logComments = ETrue;
+ else if (TfrLex::ValF(parse,KTxtLogCOMMANDS) == KErrNone)
+ logCommands = ETrue;
+ else if (TfrLex::ValF(parse,KTxtLogCASES) == KErrNone)
+ logCases = ETrue;
+ else
+ {
+ error = KErrArgument;
+ break;
+ }
+
+ parse.SkipSpace();
+
+ if ( !parse.Eos() && parse.Get() != ',' )
+ {
+ error = KErrArgument;
+ break;
+ }
+
+ parse.SkipSpace();
+ }
+ }
+
+if ( error != KErrNone )
+ return Error(error, KFmtErrInvalidCmd, &Keyphrase());
+
+// now set the flag in each command case
+TInt i;
+CCmdBase* cmd;
+for ( i = 0; i < Family()->Count(); i++ )
+ {
+ cmd = Family()->At(i);
+ if (cmd->CommandId() == THA_KCmdRemark )
+ cmd->SetFlag(CCmdBase::EDoLog, logComments);
+
+ else if (cmd->CommandId() == ECase )
+ cmd->SetFlag(CCmdBase::EDoLog, logCases);
+
+ else
+ cmd->SetFlag(CCmdBase::EDoLog, logCommands);
+ }
+
+return error;
+}
+
+//-----------------------------------------------------------------------------
+// End of File
+//-----------------------------------------------------------------------------
+