diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/T_HttpIntegration/CDumpFile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CDumpFile.cpp Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,288 @@ +// 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$ +// CCommandDO.cpp +// This module implements the CDmpfile (dump output file) class. +// rev: mjdavey, symbian@mjdss.com, July 2002 +// for: Typhoon (7.0s) & JetStream (8.0) +// Include Files +// +// + +#include "CDumpFile.h" // This module + +//----------------------------------------------------------------------------- + +CDmpfile* CDmpfile::New( ) +//Return Values: Pointer to a new Dmpfile class object, NULL if fails. +{ +CDmpfile* self = NULL; +TRAPD(error,self=NewL()); +return ( error == KErrNone ? self : NULL ); +} + +//----------------------------------------------------------------------------- + +CDmpfile* CDmpfile::NewL( ) +{ +CDmpfile* self = NewLC(); +CleanupStack::Pop(); +return self; +} + +//----------------------------------------------------------------------------- + +CDmpfile* CDmpfile::NewLC( ) +{ +CDmpfile* self = new (ELeave) CDmpfile(); +CleanupStack::PushL(self); +self->ConstructL(); +return self; +} + +//----------------------------------------------------------------------------- + +CDmpfile::~CDmpfile( ) +{ +Close(); +} + +//----------------------------------------------------------------------------- + +void CDmpfile::ConstructL( ) +{ +iIsOpen = EFalse; +iDoFlush = EFalse; +iError = KErrNone; +iFileName.Zero(); +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Open( const TDesC& aName ) +// Open existing file without replacing it. If it does not already exist, +// create it. +{ +Close(); +iError = iParse.Set( aName, NULL, NULL ); +if ( iError == KErrNone ) + { + iFileName.Copy( iParse.FullName() ); + iError = DoOpen(); + } + +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Open( const TDesC& aPath, const TDesC& aName ) +{ +Close(); +iError = iParse.Set( aName, NULL, &aPath ); +if ( iError == KErrNone ) + { + iFileName.Copy( iParse.FullName() ); + iError = DoOpen(); + } +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Open() +{ +Close(); +return ( iError = DoOpen() ); +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Replace( const TDesC& aName ) +// Open existing file replacing its contents. If it does not already exist, +// create it. +{ +Close(); +iError = iParse.Set( aName, NULL, NULL ); +if (iError == KErrNone ) + { + iFileName.Copy( iParse.FullName() ); + iError = DoReplace(); + } +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Replace( const TDesC& aPath, const TDesC& aName ) +{ +Close(); +iError = iParse.Set( aName, NULL, &aPath ); +if ( iError == KErrNone ) + { + iFileName.Copy( iParse.FullName() ); + iError = DoReplace(); + } +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Replace() +{ +Close(); +return ( iError = DoReplace() ); +} + +//----------------------------------------------------------------------------- + +void CDmpfile::Close( ) +// Close file iff is open. +{ +if ( iIsOpen ) + { + iFile.Close(); + iFs.Close(); + iIsOpen = EFalse; + } +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Write( const TDesC8& aDes ) +{ +iError = iFile.Write( aDes ); +if ( iError == KErrNone && iDoFlush ) + iError = iFile.Flush(); +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Write( const TDesC8& aDes, TInt aLength ) +{ +iError = iFile.Write( aDes, aLength ); +if ( iError == KErrNone && iDoFlush ) + iError = iFile.Flush(); +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Flush( ) +{ +return ( iError = iFile.Flush() ); +} + +//----------------------------------------------------------------------------- + +void CDmpfile::SetFlush( TBool doFlush ) +{ +iDoFlush = doFlush; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Size( ) +// Get file size. Negative KErr* if fails. +{ +TInt size; +iError = iFile.Size( size ); +return ( iError == KErrNone ? size : iError ); +} + +//----------------------------------------------------------------------------- + +TBool CDmpfile::IsOpen( ) +{ +return iIsOpen; +} + +//----------------------------------------------------------------------------- + +TPtrC CDmpfile::FileName( ) const +{ +TPtrC filename( iFileName ); +return filename; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::Error( ) +{ +return iError; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::DoOpen( ) +{ +TInt ret = iFs.Connect(); +if ( ret != KErrNone ) + return ret; + +ret = iFile.Open( iFs, iFileName, EFileWrite ); +if ( ret == KErrNotFound ) + ret = iFile.Create( iFs, iFileName, EFileWrite ); +if ( ret != KErrNone ) + { + iFs.Close(); + return ret; + } + +TInt filepos; +ret = iFile.Seek( ESeekEnd, filepos ); +if ( ret != KErrNone ) + { + iFs.Close(); + iFile.Close(); + return ret; + } + +iIsOpen = ETrue; +return ret; +} + +//----------------------------------------------------------------------------- + +TInt CDmpfile::DoReplace( ) +{ +TInt ret = iFs.Connect(); +if ( ret != KErrNone ) + return ret; + +ret = iFile.Replace( iFs, iFileName, EFileWrite ); +if ( ret != KErrNone ) + { + iFs.Close(); + return ret; + } + +TInt filepos; +ret = iFile.Seek( ESeekEnd, filepos ); +if ( ret != KErrNone ) + { + iFs.Close(); + iFile.Close(); + return ret; + } + +iIsOpen = ETrue; +return ret; +} + +//----------------------------------------------------------------------------- +// End of File +//----------------------------------------------------------------------------- +