remotestoragefw/remotefileengine/src/rsfwrfestatemachine.cpp
branchRCL_3
changeset 19 88ee4cf65e19
parent 16 87c71b25c937
child 20 1aa8c82cb4cb
--- a/remotestoragefw/remotefileengine/src/rsfwrfestatemachine.cpp	Wed Jun 09 10:37:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +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:  Base class for all operation state machines
-*
-*/
-
-
-#include "mdebug.h"
-#include "rsfwrfestatemachine.h"
-#include "rsfwinterface.h"
-#include "rsfwfiletable.h"
-#include "rsfwrferequest.h"
-#include "rsfwfileengine.h"
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::BaseConstructL
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::BaseConstructL()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::BaseConstructL"));
-    iCompleteAndDestroyState =
-        new (ELeave) CRsfwRfeStateMachine::TCompleteAndDestroyState(this);   
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::~CRsfwRfeStateMachine
-// Note that normally when we come here iState = iCompleteAndDestroyState,
-// only delete once
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::~CRsfwRfeStateMachine()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::~CRsfwRfeStateMachine"));
-    if (CurrentState() == CompleteAndDestroyState()) 
-        {
-        delete iState;
-        }
-    else 
-        {
-        delete iState;
-        delete iCompleteAndDestroyState;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::ErrorOnStateEntry
-// Entering the current state failed, so loop in EnterState() will replace 
-// it by CompleteAndDestroy state as we return that state.
-// Deleting the current state happens in EnterState()
-// The state machine logic does not do that, as it allows us to eg resolve
-// the problem by fixing the current state. 
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState* CRsfwRfeStateMachine::ErrorOnStateEntry(TInt aError) 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::ErrorOnStateEntry"));
-    iCompleteAndDestroyState->SetErrorCode(aError);
-    return iCompleteAndDestroyState;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::ChangeState
-// Enters aNextState, and makes it our current state.
-// Deletes the previous state
-// (assumes we never go backwards in the state machine)
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::ChangeState(CRsfwRfeStateMachine::TState* aNextState)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::ChangeState"));
-    if (iState && (iState != aNextState) )
-        {
-        delete iState;
-        iState = NULL;
-        }
-    EnterState(aNextState);
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::EnterState
-// Enters aNextState, and makes it our current state.
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::EnterState(CRsfwRfeStateMachine::TState* aNextState)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::EnterState"));
-    TInt err;
-    while (aNextState) 
-        {// State change required.
-        iState = aNextState;
-        TRAP(err, iState->EnterL());
-        if (err)
-            {
-            aNextState = ErrorOnStateEntry(err);
-            delete iState;
-            iState = NULL;
-            }
-        else
-            {
-            aNextState = NULL;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::SetNextState
-// Sets the current state, but doesn't actually enter it.
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::SetNextState(TState* aNextState)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::SetNextState"));
-    iState = aNextState;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::ReEnterCurrentState
-// Re-enters the state we're currently in.
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::ReEnterCurrentState()  
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::ReEnterCurrentState"));
-    EnterState(iState);
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::SetRequest
-// Sets the backpointer to our request
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::SetRequest(CRsfwRfeRequest* aRequest)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::SetRequest"));
-    iRFeRequest = aRequest;
-    }
-    
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::Request 
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeRequest* CRsfwRfeStateMachine::Request()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::Request"));
-    return iRFeRequest;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::SetVolumes
-// ----------------------------------------------------------------------------
-//    
-void CRsfwRfeStateMachine::SetVolumes(CRsfwVolumeTable* aImplementor)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::SetVolumes"));
-    iImplementor = aImplementor;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::SetFileEngine
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::SetFileEngine(CRsfwFileEngine* aFileEngine) 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::SetFileEngine"));
-    iFileEngine = aFileEngine;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::SetArguments
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::SetArguments(TRfeInArgs* aInArgs, TRfeOutArgs* aOutArgs)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::SetArguments"));
-    iInArgs = aInArgs;
-    iOutArgs = aOutArgs;
-    
-    // Set the target node for this operation.
-    if (iInArgs && iFileEngine) 
-        {
-        TFid* fidp = &(iInArgs->iFid);
-        iFep = iFileEngine->iFileTable->Lookup(*fidp);  
-        }
-    else 
-        {
-        iFep = NULL;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::Volumes
-// ----------------------------------------------------------------------------
-//    
-CRsfwVolumeTable* CRsfwRfeStateMachine::Volumes()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::Volumes"));
-    return iImplementor;
-    }
-  
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::FileEngine
-// ----------------------------------------------------------------------------
-//    
-CRsfwFileEngine* CRsfwRfeStateMachine::FileEngine()
-    {
-    return iFileEngine;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::Node
-// ----------------------------------------------------------------------------
-//
-CRsfwFileEntry* CRsfwRfeStateMachine::Node() 
-    {
-    return iFep;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::ErrorOnStateExit
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState* CRsfwRfeStateMachine::ErrorOnStateExit(TInt aError) 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::ErrorOnStateExit %d", aError));
-    iCompleteAndDestroyState->SetErrorCode(aError);
-    return iCompleteAndDestroyState;
-    }
-        
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::HandleRemoteAccessResponse
-// ----------------------------------------------------------------------------
-//    
-void CRsfwRfeStateMachine::HandleRemoteAccessResponse(TUint /*aId*/, TInt aStatus)
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::HandleRemoteAccessResponse"));
-    TState* nextState = NULL;
-    TRAPD(err, nextState = aStatus ? iState->ErrorL(aStatus)
-          : iState->CompleteL());
-    if (err)
-        {
-        nextState = ErrorOnStateExit(err);
-        }
-    ChangeState(nextState);
-    }
-
-// empty defaults for CRsfwRfeStateMachine::TState functions CompleteL(), ErrorL() and Cancel()
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TState::CompleteL
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState* CRsfwRfeStateMachine::TState::CompleteL()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::TState::CompleteL"));
-    return NULL;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TState::ErrorL
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState* CRsfwRfeStateMachine::TState::ErrorL(TInt /*aCode*/) 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::TState::ErrorL"));
-    return NULL;
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TState::Cancel
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::TState::Cancel() 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::TState::Cancel"));
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TCompleteAndDestroyState::TCompleteAndDestroyState
-// Completes the remote request with error code aErrCode and
-//  destroys it (CRsfwRfeRequest) 
-// as well as the classes pointed to by it, that it the instances of 
-// CRsfwRfeAsyncOperation, CRsfwRfeStateMachine and CRsfwRfeStateMachine::TState classes.
-//
-// In RemoteFS requests error code is 0,
-// as the error is returned in iOutArgs->iResult
-// For RemoteEngine API requests aErrCode should have the error code
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::
-TCompleteAndDestroyState::TCompleteAndDestroyState(CRsfwRfeStateMachine* aParent,
-                                                   TInt aErrCode)
-    : iOperation(aParent), iErrCode(aErrCode)
-    {
-    DEBUGSTRING(("TCompleteAndDestroyState::TCompleteAndDestroyState"));
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TCompleteAndDestroyState::EnterL
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::TCompleteAndDestroyState::EnterL()
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::TCompleteAndDestroyState::EnterL"));
-    iOperation->Request()->CompleteAndDestroy(iErrCode);   
-    // nothing can be called here as we have been deallocated!!!    
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwRfeStateMachine::TCompleteAndDestroyState::SetErrorCode
-// ----------------------------------------------------------------------------
-//
-void CRsfwRfeStateMachine::TCompleteAndDestroyState::SetErrorCode(TInt aErrorCode) 
-    {
-    DEBUGSTRING(("CRsfwRfeStateMachine::TCompleteAndDestroyState::SetErrorCode"));
-    iErrCode = aErrorCode;
-    }
-