diff -r 000000000000 -r 1e05558e2206 usbclasses/usbphoneasmodem/classimplementation/mscfileserver/src/filesystemimage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbclasses/usbphoneasmodem/classimplementation/mscfileserver/src/filesystemimage.cpp Thu Dec 17 09:14:30 2009 +0200 @@ -0,0 +1,99 @@ +// Copyright (c) 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: +// +// + +/** + @file + CFileSystemImage implementation + */ + +#include "FileSystemImage.h" +#include "debug.h" + +const TInt KImageFileMode = EFileShareReadersOnly | EFileRead; + +CFileSystemImage::CFileSystemImage() : + iIsOpened( EFalse ) + { + // No implementation required + } + +CFileSystemImage::~CFileSystemImage() + { + // iFile will be closed with the session if it's still open + iFs.Close(); + delete iFileName; + } + +CFileSystemImage* CFileSystemImage::NewL( const TDesC& aFileName ) + { + CFileSystemImage* self = new (ELeave) CFileSystemImage(); + CleanupStack::PushL( self ); + self->ConstructL( aFileName ); + CleanupStack::Pop( self ); + return self; + } + +void CFileSystemImage::ConstructL( const TDesC& aFileName ) + { + TRACE_FUNC + User::LeaveIfError( iFs.Connect() ); + iFileName = aFileName.AllocL(); + TRACE_INFO(( _L( "Image file is '%S'" ), iFileName )) + } + +TInt CFileSystemImage::Open() + { + TRACE_FUNC + if ( iIsOpened ) + { + TRACE_INFO(( _L( "Image already opened" ) )) + return KErrNone; + } + TInt err = iFile.Open( iFs, *iFileName, KImageFileMode ); + if ( err == KErrNone ) + { + iIsOpened = ETrue; + } + TRACE_INFO(( _L( "Image opened with error %d" ), err )) + return err; + } + +TInt CFileSystemImage::Close() + { + if ( iIsOpened ) + { + iFile.Close(); + iIsOpened = EFalse; + } + return KErrNone; + } + +TInt CFileSystemImage::Read( const TInt64& aPos, TInt aLength, TDes8& aBuf ) + { + return iFile.Read( aPos, aBuf, aLength ); + } + +TInt CFileSystemImage::Write( const TInt64& /*aPos*/, TDesC8& /*aBuf*/ ) + { + return KErrAccessDenied; + } + +TInt64 CFileSystemImage::Size() + { + TInt size; + iFile.Size( size ); + return size; + }