remotestoragefw/remotefileengine/inc/rsfwmountstatemachine.h
branchRCL_3
changeset 16 1aa8c82cb4cb
parent 0 3ad9d5175a89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotestoragefw/remotefileengine/inc/rsfwmountstatemachine.h	Wed Sep 01 12:15:08 2010 +0100
@@ -0,0 +1,128 @@
+/*
+* 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 mounting
+*
+*/
+
+#ifndef C_RSFW_MOUNTSTATEMACHINE_H
+#define C_RSFW_MOUNTSTATEMACHINE_H
+
+#include <rsfwmountentry.h> // KMaxMountNameLength
+
+#include "rsfwwaitnotestatemachine.h"
+#include "rsfwcontrol.h"
+#include "rsfwauthenticationdlgrequest.h"
+
+class CRsfwVolume;
+class CRsfwVolumeTable;
+
+/**
+ *  State machine for mounting.
+ *
+ *  This state machine assumes that connection awareness is off.
+ *  In "connection awareness" error state for mounting is quite different,
+ *  as failure to connect to the server is not considered to be fatal,
+ *  but instead puts the engine to disconnected mode.
+ *  Feasible strategy is probably to create an alternative initial state
+ *  with a different ErrorL, set if connection awareness is on.
+ *
+ */
+class CRsfwMountStateMachine : public CRsfwWaitNoteStateMachine
+    {
+public:
+    static CRsfwMountStateMachine* NewL(TRsfwMountConfig aMountConfig, 
+                                        TInt aMountState,
+                                        CRsfwVolumeTable* aVolumeTable);
+private:
+    void ConstructL(TRsfwMountConfig aMountConfig, 
+                                        TInt aMountState,
+                                        CRsfwVolumeTable* aVolumeTable);    
+public:
+    // STATES 
+    // requesting connection state e.g. sending OPTIONS to WebDAV server 
+    class TRequestConnectionState : public CRsfwMountStateMachine::TState
+        {
+    public:
+        TRequestConnectionState(CRsfwMountStateMachine* aOperation);
+        void EnterL();
+        TState* CompleteL();
+        TState* ErrorL(TInt aCode);
+    private:
+        // backpointer to the operation
+        CRsfwMountStateMachine* iOperation;
+        };
+        
+    // dismiss the wait note    
+    class TDismissConnectionWaitNoteState : public CRsfwMountStateMachine::TState
+        {
+    public:
+        TDismissConnectionWaitNoteState(CRsfwMountStateMachine* aOperation);   
+        void EnterL(); 
+        TState* CompleteL();
+        TState* ErrorL(TInt aCode);
+    private:
+        // backpointer to the operation
+        CRsfwMountStateMachine* iOperation;       
+        };    
+    
+    // asynchronously waits for user to type in authentication infomation    
+    class TGetAuthCredentials : public CRsfwMountStateMachine::TState
+        {
+    public:
+        TGetAuthCredentials(CRsfwMountStateMachine* aOperation);
+        void EnterL();
+        TState* CompleteL();
+        TState* ErrorL(TInt aCode);
+    private:
+        // backpointer to the operation
+        CRsfwMountStateMachine* iOperation;
+        TRsfwAuthenticationDlgRequest iAuthRequest;
+        
+        };    
+
+      // asynchronously waits for "drive unavailabe, retry? query" 
+    class TUnavailableRetry : public CRsfwMountStateMachine::TState
+        {
+    public:
+        TUnavailableRetry(CRsfwMountStateMachine* aOperation);
+        void EnterL();
+        TState* CompleteL();
+        TState* ErrorL(TInt aCode);
+    private:
+        // backpointer to the operation
+        CRsfwMountStateMachine* iOperation;
+        TRsfwNotPluginRequest iRetryRequest;
+        };    
+
+        
+public: 
+    CRsfwRfeStateMachine::TState* CompleteRequestL(TInt aError);
+    TState* ErrorOnStateEntry(TInt aError);                                            
+public:
+    CRsfwVolume* iVolume; // volume to be mounter or recovered
+
+    // parameters of the operation  
+    // we read from mountconfig a drive letter to be mounted or recovered
+    // currently volumeId is always set by us
+    TRsfwMountConfig iMountConfig;
+    TInt iVolumeId; 
+    TInt iMountState;
+private:        
+    TBuf<KMaxMountNameLength> iFriendlyName;
+    TBool iRequestingConnection; // flag indicating 'opening connection' event
+    TInt iConnectingError; // remember why the connection attempt failed
+    };
+
+
+#endif // C_RSFW_MOUNTSTATEMACHINE_H
\ No newline at end of file