remotestoragefw/remotefileengine/src/rsfwopenbypathstatemachine.cpp
changeset 13 6b4fc789785b
parent 2 c32dc0be5eb4
--- a/remotestoragefw/remotefileengine/src/rsfwopenbypathstatemachine.cpp	Mon Jan 18 21:00:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +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:  State machine for opening a file or directory
-*
-*/
-
-
-#include "rsfwopenbypathstatemachine.h"
-#include "rsfwfileentry.h"
-#include "rsfwfiletable.h"
-#include "rsfwvolumetable.h"
-#include "rsfwvolume.h"
-#include "rsfwinterface.h"
-#include "rsfwfileengine.h"
-#include "rsfwlockmanager.h"
-#include "mdebug.h"
-
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::CRsfwOpenByPathStateMachine
-// ----------------------------------------------------------------------------
-//
-CRsfwOpenByPathStateMachine::CRsfwOpenByPathStateMachine()
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::~CRsfwOpenByPathStateMachine
-// ----------------------------------------------------------------------------
-//
-CRsfwOpenByPathStateMachine::~CRsfwOpenByPathStateMachine()
-    {
-    delete iLockToken;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::CompleteRequestL
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState*
-CRsfwOpenByPathStateMachine::CompleteRequestL(TInt aError)
-    {
-    DEBUGSTRING(("CRsfwOpenByPathStateMachine::CompleteRequestL %d", aError));
-    TRfeOpenByPathOutArgs* outArgs =
-        static_cast<TRfeOpenByPathOutArgs*>(iOutArgs);
-    if(!aError)
-        {
-        if ((Node()->Type() == KNodeTypeFile) &&
-            iRealOpen) 
-            {
-            // file opened successfully and was not already opened in create
-            Node()->iFileTable->UpdateOpenFileCount(1);
-            }
-  
-        outArgs->iPath.Copy(*iCacheName);
-        iAttrp->iAtt = Node()->Att();
-        iAttrp->iSize = Node()->Size();
-        iAttrp->iModified = Node()->Modified();
-        }
-
-    CompleteAndDestroyState()->SetErrorCode(aError);
-    return CompleteAndDestroyState();
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::TRequestOpenModeState::TRequestOpenModeState
-// ----------------------------------------------------------------------------
-//
-CRsfwOpenByPathStateMachine::TRequestOpenModeState::TRequestOpenModeState(
-    CRsfwOpenByPathStateMachine* aParent)
-    : iOperation(aParent)
-    {
-    iRequestedLock = EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::TRequestOpenModeState::EnterL
-// ----------------------------------------------------------------------------
-//
-void CRsfwOpenByPathStateMachine::TRequestOpenModeState::EnterL()
-    {
-    
-    DEBUGSTRING(("CRsfwOpenByPathStateMachine::TRequestOpenModeState::EnterL"));
-    
-    TRfeOpenByPathInArgs* inArgs =
-        static_cast<TRfeOpenByPathInArgs*>(iOperation->iInArgs);
-    TRfeOpenByPathOutArgs* outArgs =
-        static_cast<TRfeOpenByPathOutArgs*>(iOperation->iOutArgs);
-    iOperation->iRealOpen = inArgs->iTrueOpen;
-    // Use inArgs->iFlags to pass desired locking information
-    iOperation->iFlags = inArgs->iFlags;
-    iOperation->iAttrp = &(outArgs->iAttr);
-
-    if (!iOperation->Node())
-        {
-        User::Leave(KErrNotFound);
-        }
-
-    if (iOperation->Node()->Size() > iOperation->Volumes()->iMaxCacheSize)
-        {
-        DEBUGSTRING(("OPENBYPATH failed: file too large: file size %d, max cache size %d",
-                     iOperation->Node()->Size(),
-                     iOperation->Volumes()->iMaxCacheSize));
-        User::Leave(KErrTooBig);
-        }
-
-    DEBUGSTRING(("opening fid %d with flags 0x%x",
-                 iOperation->Node()->Fid().iNodeId,
-                 iOperation->iFlags));
-
-    if (!iOperation->FileEngine()->WriteDisconnected())
-        {
-        if (!(iOperation->Node()->IsLocked()) &&
-            (iOperation->Node()->Type() != KNodeTypeDir) &&
-            (iOperation->iFlags & EFileWrite))
-            {
-            DEBUGSTRING(("requesting lock"));
-            // For the time being
-            // if flag is 0 we are not interested in getting a lock
-            iOperation->FileEngine()->LockManager()->ObtainLockL(
-                iOperation->Node(),
-                iOperation->iFlags,
-                iOperation->iLockToken,
-                iOperation);
-            iRequestedLock = ETrue;
-            }
-        else
-            {
-            // IsLocked() || !(iOperation->iFlags & EFileWrite)
-            iOperation->HandleRemoteAccessResponse(0, KErrNone);
-            }
-        }
-    else
-        {
-        // if WriteDisconnected()
-        iOperation->HandleRemoteAccessResponse(0, KErrNone);
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::TRequestOpenModeState::CompleteL
-// ----------------------------------------------------------------------------
-//
-CRsfwOpenByPathStateMachine::TState*
-CRsfwOpenByPathStateMachine::TRequestOpenModeState::CompleteL()
-    {
-     DEBUGSTRING(("CRsfwOpenByPathStateMachine::TRequestOpenModeState::CompleteL"));
-    if (iRequestedLock)
-        {
-        //from CRsfwLockManager::ObtainLock()
-#ifdef _DEBUG
-        TPtrC p = iOperation->Node()->FullNameLC()->Des();
-        DEBUGSTRING16(("ObtainLockL(): flags %d returned %d for file '%S'",
-                       iOperation->iFlags,
-                       KErrNone,
-                       &p));
-        CleanupStack::PopAndDestroy();
-#endif // DEBUG
-        iOperation->Node()->SetLockedL(
-            iOperation->FileEngine()->LockManager(),
-            iOperation->iLockToken);
-        iOperation->iLockToken = NULL;
-        }
-
-    iOperation->iCacheName = iOperation->Node()->CacheFileName();
-
-    // make sure that the relevant cache file is on place
-    // (i.e. it has not been removed e.g. by other apps)
-    iOperation->Node()->ValidateCacheFile();
-
-    if (!iOperation->Node()->IsCached())
-        {
-        if (iOperation->FileEngine()->Disconnected())
-            {
-            if ((iOperation->Node()->Type() != KNodeTypeDir) &&
-                !(iOperation->iFlags & EFileWrite))
-                {
-                // While disconnected,
-                // write access of files returns "not found"
-                return iOperation->CompleteRequestL(KErrNotFound);
-                }
-            }
-        iOperation->FileEngine()->CreateContainerFileL(*(iOperation->Node()));
-        iOperation->iCacheName = iOperation->Node()->CacheFileName();
-        }
-    else // is cached
-        {
-        if (iOperation->Node()->IsLocallyDirty())
-            {
-            // This is a directory which has at least one kid
-            // that has been cached or flushed since the last opening
-            // of the directory
-            iOperation->FileEngine()->UpdateDirectoryContainerL(
-                *(iOperation->Node()));
-            }
-
-        // If this is a cached file,
-        // we must remove it from LRUlist as it is now open
-        if (iOperation->iRealOpen)
-            {
-            iOperation->Node()->iFileTable->Volume()->iVolumeTable->
-                RemoveFromLRUPriorityList(iOperation->Node());
-            }
-        }
-
-    // if file or dir has just been opened, remove it from metadata LRU list
-    iOperation->Node()->iFileTable->Volume()->iVolumeTable->
-        RemoveFromMetadataLRUPriorityList(iOperation->Node());
-
-    return iOperation->CompleteRequestL(KErrNone);
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwOpenByPathStateMachine::TRequestOpenModeState::ErrorL
-// fileEngine->RequestConnectionStateL() has returned with error
-// ----------------------------------------------------------------------------
-//
-CRsfwOpenByPathStateMachine::TState*
-CRsfwOpenByPathStateMachine::TRequestOpenModeState::ErrorL(TInt aCode)
-    {
-    DEBUGSTRING(("CRsfwOpenByPathStateMachine::TRequestOpenModeState::ErrorL %d", aCode));
-    // from CRsfwFileEngine::DoOpenByPath()
-    if (aCode == KErrNotSupported)
-        {
-        iRequestedLock = EFalse;
-        // locks not supported is not an error state
-        // instead we run the success state...
-        return CompleteL();
-        }
-
-    //from CRsfwLockManager::ObtainLock()
-#ifdef _DEBUG
-    TPtrC p = iOperation->Node()->FullNameLC()->Des();
-    DEBUGSTRING16(("ObtainLockL(): flags %d returned %d for file '%S'",
-                   iOperation->iFlags,
-                   aCode,
-                   &p));
-    CleanupStack::PopAndDestroy();
-#endif
-
-    return iOperation->CompleteRequestL(aCode);
-    }
-