diff -r c32dc0be5eb4 -r 6b4fc789785b remotestoragefw/remotefileengine/src/rsfwsyncoperations.cpp --- a/remotestoragefw/remotefileengine/src/rsfwsyncoperations.cpp Mon Jan 18 21:00:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* -* Copyright (c) 2005-2006 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: Encapsulated all sync operations -* -*/ - - -#include "rsfwsyncoperations.h" -#include "rsfwrfemessagerequest.h" -#include "rsfwvolumetable.h" -#include "rsfwvolume.h" -#include "rsfwfileengine.h" -#include "rsfwfiletable.h" -#include "rsfwfileentry.h" -#include "rsfwrfesession.h" -#include "rsfwinterface.h" -#include "rsfwcontrol.h" -#include "mdebug.h" - - -// ---------------------------------------------------------------------------- -// TRFeSynCRsfwRfeRequest::DoRequestL -// wrapper for all sync requests -// ---------------------------------------------------------------------------- -// -void TRFeSynCRsfwRfeRequest::DoRequestL(CRsfwRfeRequest* aRequest) - { - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - request->Session()->Volume()->DispatchL(request->iInArgs, - request->iOutArgs); - } - -// ---------------------------------------------------------------------------- -// TRFeDismountVolumeId::DoRequestL -// dismount a previously mounted volume by volume ID -// ---------------------------------------------------------------------------- -// -void TRFeDismountVolumeId::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeDismountVolumeId::DoRequestL")); - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - TInt volumeId = reinterpret_cast(request->Message().Ptr0()); - DEBUGSTRING(("EDismount: volume %d", volumeId)); - request->Session()->Volume()->DismountByVolumeIdL(volumeId, ETrue); - // This is called from the fileserver main thread. - // Therefore, we should return quickly. - } - -// ---------------------------------------------------------------------------- -// TRFeDismountByDriveLetter::DoRequestL -// dismount a previously mounted volume by drive letter -// ---------------------------------------------------------------------------- -// -void TRFeDismountByDriveLetter::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeDismountByDriveLetter::DoRequestL")); - // Dismount a volume by drive letter - // synchronous request - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - TChar driveLetter = reinterpret_cast(request->Message().Ptr0()); - DEBUGSTRING(("EDismountByDriveLetter: '%c'", TUint(driveLetter))); - request->Session()->Volume()->DismountByDriveLetterL(driveLetter, ETrue); - } - - -// ---------------------------------------------------------------------------- -// TRFeGetMountList::DoRequestL -// get a list of currently active mounts -// ---------------------------------------------------------------------------- -// -void TRFeGetMountList::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeGetMountList::DoRequestL")); - // synchronous request - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - TDriveList mountList; - request->Session()->Volume()->GetMountList(mountList); - TPckg p(mountList); - request->Message().WriteL(0, p); - DEBUGSTRING8(("EGetMountList: '%S'", &mountList)); - } - - -// ---------------------------------------------------------------------------- -// TRFeGetMountInfo::DoRequestL -// get information about a specific mount -// ---------------------------------------------------------------------------- -// -void TRFeGetMountInfo::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeGetMountInfo::DoRequestL")); - // synchronous request - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - TRsfwMountInfo* mountInfo = new (ELeave) TRsfwMountInfo; - CleanupStack::PushL(mountInfo); - mountInfo->iMountConfig.iDriveLetter = - reinterpret_cast(request->Message().Ptr0()); - TInt err = request->Session()->Volume()->GetMountInfo(*mountInfo); - DEBUGSTRING(("EGetMountInfo for '%c' (err=%d)", - TUint(mountInfo->iMountConfig.iDriveLetter), - err)); - if (err != KErrNone) - { - mountInfo->iMountConfig.iUri.Zero(); - } - TPckg mountInfoPackage(*mountInfo); - request->Message().WriteL(1, mountInfoPackage); - CleanupStack::PopAndDestroy(mountInfo); - } - - -// ---------------------------------------------------------------------------- -// TRFeWriteData::DoRequestL -// get permission to write certain amount of data -// ---------------------------------------------------------------------------- -// -void TRFeWriteData::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeWriteData::DoRequestL")); - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - TRfeWriteDataInArgs* inArgs = - static_cast(request->iInArgs); - TRfeWriteDataOutArgs* outArgs = - static_cast(request->iOutArgs); - outArgs->iOkToWrite = - request->iVolumeTable->EnsureCacheCanBeAddedL(inArgs->iBytes); - - if (outArgs->iOkToWrite) - { - // make sure "dirty bit" is on (file has uncommited modifications) - CRsfwFileEntry* entry= - request->iVolume->iFileEngine->iFileTable->Lookup(inArgs->iFid); - if (entry) - { - entry->SetOpenedForWriting(ETrue); - request->iVolume->iFileEngine->iFileTable->SaveMetaDataDelta(); - } - // if writing has been cancelled, we have to inform the file server plugin - if (entry->IsCancelled()) - { - User::Leave(KErrCancel); - } - - } - } - -void TRFeDirectoryRefresh::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeDirectoryRefresh::DoRequestL")); - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - HBufC* refreshBuf = HBufC::NewLC(KMaxPath); - TPtr refPtr = refreshBuf->Des(); - request->Message().ReadL(0, refPtr); - User::LeaveIfError(request->Session()->Volume()->PurgeFromCache(refPtr)); - CleanupStack::PopAndDestroy(refreshBuf); - } - - -void TRFeCancelAll::DoRequestL(CRsfwRfeRequest* aRequest) - { - DEBUGSTRING(("TRFeCancelAll::DoRequestL")); - CRsfwRfeMessageRequest* request = (CRsfwRfeMessageRequest*) aRequest; - HBufC* fileBuf = HBufC::NewLC(KMaxPath); - TPtr filePtr = fileBuf->Des(); - request->Message().ReadL(0, filePtr); - User::LeaveIfError(request->Session()->Volume()->CancelTransferL(filePtr)); - CleanupStack::PopAndDestroy(fileBuf); - } -