--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdMisc.cpp Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,284 @@
+// 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$
+// CCmdBase.cpp
+// This file contains the implementation for miscellaneous CCmd*
+// class' member functions.
+// rev: mjdavey, symbian@mjdss.com, July 2002
+// for: Typhoon (7.0s) & JetStream (8.0)
+// Include Files
+//
+//
+
+#include "CCmdMisc.h"
+
+//-----------------------------------------------------------------------------
+
+CCmdCase* CCmdCase::NewL( TInt aCommandId, const TDesC& aKeyphrase )
+// These functions allocate a CASE command object and construct it.
+{
+CCmdCase* self = NewLC( aCommandId, aKeyphrase );
+CleanupStack::Pop();
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdCase* CCmdCase::NewLC( TInt aCommandId, const TDesC& aKeyphrase )
+{
+CCmdCase* self = new (ELeave) CCmdCase();
+CleanupStack::PushL( self );
+self->ConstructL( aCommandId, aKeyphrase );
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdCase::~CCmdCase ( )
+// This function destructs the CASE command object.
+{
+}
+
+//-----------------------------------------------------------------------------
+
+void CCmdCase::ConstructL(TInt aCommandId, // in: command identifier
+ const TDesC& aKeyphrase ) // in: beginning of the command name
+// This function constructs the CASE command object.
+{
+CCmdBase::ConstructL(aCommandId, aKeyphrase);
+}
+
+//-----------------------------------------------------------------------------
+
+TBool CCmdCase::Recognize(const TDesC& aCommand)
+// This function overrides the CCmdBase::Recognize.
+{
+// Recognize the command and extract the parameter=description.
+TPtrC param;
+TRAPD(ret, param.Set(ParamsL(aCommand)));
+if (ret != KErrNone)
+ return EFalse;
+
+// Check if this case was selected and set the CASE's StepOver
+// flag and the command family's StepOver accordingly.
+param.Set(TfrLex::Trim( param));
+CCmdSelect *select = (CCmdSelect*)Family()->Command(ECmdSelect);
+TBool selected = (select == NULL || select->Selected(param));
+SetStepOver(!selected);
+Family()->SetStepOver(!selected);
+return ETrue;
+}
+
+//-----------------------------------------------------------------------------
+
+TInt CCmdCase::ProcessL(const TDesC& aCommand) // command line
+// This function parses and processes a CASE command line. As a matter of
+// fact, processing the CASE command does nothing (but see the Recognize).
+{
+// 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());
+return KErrNone;
+}
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// CCmdEndCase
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+CCmdEndCase* CCmdEndCase::NewL( TInt aCommandId, const TDesC& aKeyphrase )
+// These functions allocate a END CASE command object and construct it.
+{
+CCmdEndCase* self = NewLC( aCommandId, aKeyphrase );
+CleanupStack::Pop();
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdEndCase* CCmdEndCase::NewLC( TInt aCommandId, const TDesC& aKeyphrase )
+{
+CCmdEndCase* self = new (ELeave) CCmdEndCase();
+CleanupStack::PushL( self );
+self->ConstructL( aCommandId, aKeyphrase );
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdEndCase::~CCmdEndCase()
+{
+}
+
+//-----------------------------------------------------------------------------
+
+void CCmdEndCase::ConstructL(TInt aCommandId, // in: command identifier
+ const TDesC &aKeyphrase) // in: beginning of the command name
+{
+CCmdBase::ConstructL(aCommandId, aKeyphrase);
+}
+
+//-----------------------------------------------------------------------------
+
+TBool CCmdEndCase::Recognize( const TDesC& aCommand )
+// This function overrides the CCmdBase::Recognize
+{
+// Recognize the command and extract the remainder (is ignored).
+TPtrC param;
+TRAPD( ret, param.Set( ParamsL( aCommand )) );
+if ( ret != KErrNone )
+ return EFalse;
+// Set this END CASE command's StepOver as in command family
+SetStepOver( Family()->StepOver() );
+// Reset the command family's StepOver flag back to false i.e.
+// commands will be processed starting from the next one.
+Family()->SetStepOver( EFalse );
+return ETrue;
+}
+
+//-----------------------------------------------------------------------------
+
+TInt CCmdEndCase::ProcessL ( const TDesC& aCommand) // command line
+// This function parses and processes a END CASE command line. As a matter
+// of fact, processing the END CASE command in here does nothing (but see
+// the Recognize).
+{
+// 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());
+return ret; // = KErrNone
+}
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// CCmdSelect
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+CCmdSelect* CCmdSelect::NewL( TInt aCommandId, const TDesC& aKeyphrase )
+// These functions allocate a CCmdSelect command object and construct it.
+{
+CCmdSelect* self = NewLC( aCommandId, aKeyphrase );
+CleanupStack::Pop();
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdSelect* CCmdSelect::NewLC( TInt aCommandId, const TDesC& aKeyphrase )
+{
+CCmdSelect* self = new (ELeave) CCmdSelect();
+CleanupStack::PushL( self );
+self->ConstructL( aCommandId, aKeyphrase );
+return self;
+}
+
+//-----------------------------------------------------------------------------
+
+CCmdSelect::~CCmdSelect()
+{
+delete iSelector;
+iSelector = NULL;
+}
+
+//-----------------------------------------------------------------------------
+
+void CCmdSelect::ConstructL(TInt aCommandId, // in: command identifier
+ const TDesC& aKeyphrase ) // in: beginning of the command name
+// This function constructs the CCmdSelect command object.
+{
+CCmdBase::ConstructL(aCommandId, aKeyphrase);
+iSelector = NULL; // This means SELECT ALL!
+}
+
+//-----------------------------------------------------------------------------
+
+TInt CCmdSelect::ProcessL(const TDesC& aCommand) // command line
+// This function parses and processes a CCmdSelect command line
+{
+// Complete the test machine
+Machine()->CompleteRequest();
+
+TPtrC param;
+TRAPD(ret, param.Set(ParamsL(aCommand)));
+if (ret != KErrNone)
+ return Error(ret, TFR_KFmtErrBadCmd, &Keyphrase());
+
+if (Family()->Switch(CCmdFamily::EParseOnly))
+ return ret;
+
+// This is the selector string.
+param.Set(TfrLex::Trim(param));
+
+// Delete old selector if any and make a new one.
+if (iSelector != NULL)
+ delete iSelector;
+
+iSelector = NULL; // This means ALL.
+if (param.Length() > 0)
+ {
+ iSelector = param.Alloc();
+ if (iSelector == NULL)
+ {
+ ret = KErrNoMemory;
+ Printf(TFR_KFmtErrFailed, &Keyphrase(), ret);
+ }
+ }
+
+return ret;
+}
+
+//-----------------------------------------------------------------------------
+
+TPtrC CCmdSelect::Selector() const
+// This function gives the present selector
+{
+TPtrC selector = iSelector->Des();
+return selector;
+}
+
+//-----------------------------------------------------------------------------
+
+TBool CCmdSelect::Selected(const TDesC &aCandidate)
+// This function checks if a candidate is selected.
+{
+// Having no selector means select ALL.
+if ( iSelector == NULL )
+ return ETrue;
+
+// Having empty selector means select NONE.
+if ( iSelector->Length() == 0 )
+ return EFalse;
+
+// Selectors ALL and NONE are accepted as well.
+if ( iSelector->Des().CompareF( _L("ALL")) == 0 )
+ return ETrue;
+if ( iSelector->Des().CompareF( _L("NONE")) == 0 )
+ return EFalse;
+
+// Otherwise any match will do.
+return (aCandidate.MatchF( iSelector->Des() ) != KErrNotFound);
+}
+
+//-----------------------------------------------------------------------------
+// End of File
+//-----------------------------------------------------------------------------