--- /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
+//-----------------------------------------------------------------------------
+