remotestoragefw/remotefileengine/src/rsfwrfemessagerequest.cpp
changeset 13 6b4fc789785b
parent 2 c32dc0be5eb4
--- a/remotestoragefw/remotefileengine/src/rsfwrfemessagerequest.cpp	Mon Jan 18 21:00:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +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:  A request sent by a client (i.e. non-internal request)
-*
-*/
-
-
-#include "rsfwrfemessagerequest.h"
-#include "rsfwrfeoperation.h"
-#include "rsfwvolumetable.h"
-#include "rsfwvolume.h"
-#include "rsfwcommon.h"
-#include "rsfwinterface.h"
-#include "mdebug.h"
-#include "rsfwrfesession.h"
-
-
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::CRsfwRfeMessageRequest
-// ----------------------------------------------------------------------------
-//     
-CRsfwRfeMessageRequest::CRsfwRfeMessageRequest() 
-    {
-    SetRequestType(EMessageRequest);
-    iMessageCompleted = EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::SetL
-// ----------------------------------------------------------------------------
-//     
-void CRsfwRfeMessageRequest::SetL(const RMessage2& aMessage,
-                             CRsfwRfeSession* aSession)
-    {    
-    DEBUGSTRING(("CRsfwRfeMessageRequest::Set"));
-    
-    // common for all operations
-    iMessage = aMessage;
-    iSession = aSession;
-    iVolumeTable = aSession->Volume(); 
-    
-    // if a file system access operation
-    if (aMessage.Function() >=  ERenameReplace) 
-        {
-        switch (aMessage.Function())
-            {
-            // read input parameters
-        case ERenameReplace:
-            {
-            TRfeRenameInArgs* inArgs = new (ELeave) TRfeRenameInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeRenameInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-        case ESetAttr:
-            {
-            TRfeSetAttrInArgs* inArgs = new (ELeave) TRfeSetAttrInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeSetAttrInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-        case EFsIoctl:
-            {
-            TRfeIoctlInArgs* inArgs = new (ELeave) TRfeIoctlInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeIoctlInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-        
-        case EGetAttr:
-            {
-            TRfeGetAttrInArgs* inArgs = new (ELeave) TRfeGetAttrInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeGetAttrOutArgs* outArgs = new (ELeave )TRfeGetAttrOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeGetAttrInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs); // inArgs, outArgs
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;
-            }
-
-        case EOpenByPath:
-            {
-            TRfeOpenByPathInArgs* inArgs = new (ELeave) TRfeOpenByPathInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeOpenByPathOutArgs* outArgs = new (ELeave) TRfeOpenByPathOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeOpenByPathInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs); // inArgs, outArgs
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;      
-            }   
-
-        case EFsRoot:
-            {
-            TRfeRootInArgs* inArgs = new (ELeave) TRfeRootInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeRootOutArgs* outArgs = new (ELeave) TRfeRootOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeRootInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs); // inArgs, outArgs
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;      
-            }   
-
-        case EMkDir:
-            {
-            TRfeMkdirInArgs* inArgs = new (ELeave) TRfeMkdirInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeMkdirInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-
-        case ERemoveDir:
-            {
-            TRfeRmdirInArgs* inArgs = new (ELeave) TRfeRmdirInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeRmdirInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-
-        case ECreateFile:
-            {
-            TRfeCreateInArgs* inArgs = new (ELeave) TRfeCreateInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeCreateOutArgs* outArgs = new (ELeave) TRfeCreateOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeCreateInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs); // inArgs, outArgs
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;      
-            }   
-
-        case ERemove:
-            {
-            TRfeRemoveInArgs* inArgs = new (ELeave) TRfeRemoveInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeRemoveInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-
-        case ELookUp:
-            {
-            TRfeLookupInArgs* inArgs = new (ELeave) TRfeLookupInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeLookupOutArgs* outArgs = new (ELeave) TRfeLookupOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeLookupInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs);
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;      
-            }   
-
-        case EClose:
-            {
-            TRfeCloseInArgs* inArgs = new (ELeave) TRfeCloseInArgs();
-            inArgs->iFid.iVolumeId = aMessage.Int0();
-            inArgs->iFid.iNodeId = aMessage.Int1();
-            inArgs->iOpCode = EClose;
-            inArgs->iFlags = aMessage.Int2();
-            iInArgs = inArgs;
-            iOutArgs = NULL;
-            break;
-            }
-
-       case EFlush:
-            {
-            TRfeFlushInArgs* inArgs = new (ELeave) TRfeFlushInArgs();
-            CleanupStack::PushL(inArgs);
-            TPckg<TRfeFlushInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(inArgs);
-            iInArgs = inArgs;
-            break;
-            }
-
-        case EFetch:
-            {
-            TRfeFetchInArgs* inArgs = new (ELeave) TRfeFetchInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeFetchOutArgs* outArgs = new (ELeave) TRfeFetchOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeFetchInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs);
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;  
-            }
-
-        case EFetchData:
-            {
-            TRfeFetchDataInArgs* inArgs = new (ELeave) TRfeFetchDataInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeFetchDataOutArgs* outArgs = new (ELeave) TRfeFetchDataOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeFetchDataInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs);
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;
-            }
-
-        case EOkToWrite:
-            {
-            TRfeWriteDataInArgs* inArgs = new (ELeave) TRfeWriteDataInArgs();
-            CleanupStack::PushL(inArgs);
-            TRfeWriteDataOutArgs* outArgs = new (ELeave) TRfeWriteDataOutArgs();
-            CleanupStack::PushL(outArgs);
-            TPckg<TRfeWriteDataInArgs> pkgInArgs(*inArgs);
-            aMessage.ReadL(0, pkgInArgs);
-            CleanupStack::Pop(2, inArgs);
-            iInArgs = inArgs;
-            iOutArgs = outArgs;
-            break;
-            }   
-            }
-    
-        DEBUGSTRING(("volume id %d", iInArgs->iFid.iVolumeId));
-        // Here volumeId may be 0 to denote "no volume id"
-        // This is OK - we assume that drive letter A is never allocated
-        iVolume = iVolumeTable->VolumeByVolumeId(iInArgs->iFid.iVolumeId);
-        
-        // As this is a file system access operation - not mount operation,
-        // if volume is null we are not ready for file operations
-        // - indicate this to the client who needs to call mount
-        TBool ready =
-            iVolume &&
-            (iVolume->iMountInfo.iMountStatus.iMountState !=
-             KMountStateDormant);
-        if (!ready && aMessage.Function() != EFsRoot && aMessage.Function() != EClose) 
-            {
-            aMessage.Complete(KErrNotReady);
-            iMessageCompleted = ETrue;
-            }
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::Message
-// ----------------------------------------------------------------------------
-//     
-const RMessage2& CRsfwRfeMessageRequest::Message()
-    {
-    return iMessage;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::Session
-// ----------------------------------------------------------------------------
-//         
-CRsfwRfeSession* CRsfwRfeMessageRequest::Session()
-    {
-    return iSession;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::Session
-// ----------------------------------------------------------------------------
-//         
-void CRsfwRfeMessageRequest::SetSession(CRsfwRfeSession* aSession)
-    {
-    iSession = aSession;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::Complete
-// ----------------------------------------------------------------------------
-//         
-void CRsfwRfeMessageRequest::Complete(TInt aError)
-    {
-   	DEBUGSTRING(("CRsfwRfeMessageRequest::Complete"));
-    if (iSession) 
-        {
-        DEBUGSTRING((">>> Dispatch exit (operation %d, error %d, return %d)",
-                     Operation()->iFunction,
-                     aError,
-                     aError));
-        DEBUGSTRING(("completing request"));  
-        if (!Message().IsNull()) 
-            {
-            Message().Complete(aError);
-            }
-        DEBUGSTRING(("request completed")); 
-        iMessageCompleted = ETrue;  
-        }
-    }   
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeMessageRequest::CompleteAndDestroy
-// ----------------------------------------------------------------------------
-//     
-void CRsfwRfeMessageRequest::CompleteAndDestroy(TInt aError)
-    {
-  	DEBUGSTRING(("CRsfwRfeMessageRequest::CompleteAndDestroy"));
-  	
-  	TInt err;
-    err = KErrNone;
-    if (iSession) 
-        {
-        DEBUGSTRING((">>> Dispatch exit (operation %d, error %d, return %d)",
-                     Operation()->iFunction, aError, aError));
-        switch (Operation()->iFunction)
-            {
-            // write output parameters
-        case EFetch:
-            {
-            DEBUGSTRING(("writing parameters: EFetch"));	
-            TRfeFetchOutArgs* outArgs = (TRfeFetchOutArgs *)(iOutArgs);
-            TPckg<TRfeFetchOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;                  
-            }   
-
-        case EFetchData:
-            {
-           DEBUGSTRING(("writing parameters: EFetchData"));	
-            TRfeFetchDataOutArgs* outArgs = (TRfeFetchDataOutArgs *)(iOutArgs);
-            TPckg<TRfeFetchDataOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;                  
-            }   
-
-        case EOkToWrite:
-            {
-           DEBUGSTRING(("writing parameters: EOkToWrite"));	 	
-            TRfeWriteDataOutArgs* outArgs = (TRfeWriteDataOutArgs *)(iOutArgs);
-            TPckg<TRfeWriteDataOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;                  
-            }           
-
-        case ELookUp:
-            {
-            DEBUGSTRING(("writing parameters: ELookup"));		
-            TRfeLookupOutArgs* outArgs = (TRfeLookupOutArgs *)(iOutArgs);
-            TPckg<TRfeLookupOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;                  
-            }   
-
-        case ECreateFile:
-            {
-           DEBUGSTRING(("writing parameters: ECreateFile"));		 	
-            TRfeCreateOutArgs* outArgs = (TRfeCreateOutArgs *)(iOutArgs);
-            TPckg<TRfeCreateOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;  
-            }           
-
-        case EOpenByPath:
-            {
-           DEBUGSTRING(("writing parameters: EOpenByPath"));		 	
-            TRfeOpenByPathOutArgs* outArgs =
-                (TRfeOpenByPathOutArgs *)(iOutArgs);
-            TPckg<TRfeOpenByPathOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;  
-            }
-            
-        case EGetAttr:
-            {
-            DEBUGSTRING(("writing parameters: EGetAttr"));		
-            TRfeGetAttrOutArgs* outArgs = (TRfeGetAttrOutArgs *)(iOutArgs);
-            TPckg<TRfeGetAttrOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;      
-            }
-
-        case EFsRoot:
-            {
-            DEBUGSTRING(("writing parameters: EFsRoot"));			
-            TRfeRootOutArgs* outArgs = (TRfeRootOutArgs *)(iOutArgs);
-            TPckg<TRfeRootOutArgs> pkgOutArgs(*outArgs);
-            err = Message().Write(1, pkgOutArgs);
-            break;      
-            }
-          }
-          
-  		if (err)
-  		    {
-  		    aError = err;
-  			}
-  
-        DEBUGSTRING(("completing request"));
-        if (!Message().IsNull()) 
-            {
-            Message().Complete(aError);
-            }
-        DEBUGSTRING(("request completed")); 
-        iMessageCompleted = ETrue;  
-        }
-  
-    Destroy();
-    }
-    
-    
- // ----------------------------------------------------------------------------
-// CRsfwRfeRequest::Destroy
-// ----------------------------------------------------------------------------
-// 
-void CRsfwRfeMessageRequest::Destroy()
-    {
-    if (iSession) 
-        {
-        iSession->RemoveFromMessageRequestArray(this);
-        }
-        
-    CRsfwRfeRequest::Destroy();
-    }
-       
-