contextframework/cfw/inc/cfserver/cfphasebase.h
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfw/inc/cfserver/cfphasebase.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,136 @@
+/*
+* Copyright (c) 2006-2008 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:  CFPhaseBase class declaration.
+*
+*/
+
+
+#ifndef C_CFPHASEBASE_H
+#define C_CFPHASEBASE_H
+
+#include <e32base.h>
+#include "cfstartereventhandler.h"
+
+class MCFContextInterface;
+
+/**
+* CF starter phase base class.
+* Note:
+* Do not use iCF in oncstruct phase. iCF is still being initiazlied.
+* iCF can be used when RunL is called.
+*/
+NONSHARABLE_CLASS( CCFPhaseBase ): public CBase
+    {
+    public:
+    
+        // Currently supported phases
+        enum TCFPhaseId
+            {
+            // Device start up
+            ECFDeviceStarting,
+            
+            // Device start up completed
+            ECFDeviceStarted,
+            
+            // Loading plugins
+            ECFLoadingPlugins,
+            
+            // Loading rules
+            ECFLoadingRules,
+            
+            // Context Framework initialized and ready
+            ECFCfwReady,
+            
+            // Keep this last!
+            ECFStartEnd
+            };
+    
+    public:
+    
+        // C++ destructor
+        ~CCFPhaseBase();
+        
+    public: // Implementation specific
+        
+        /**
+        * States is allowed to run.
+        * Complete aStatus when the phase has been fully completed.
+        * 
+        * @since S60 4.0
+        * @param aStatus Client status to complete.
+        * @return None.
+        */
+        virtual void ExecuteL( TRequestStatus* aStatus ) = 0;
+        
+        /**
+        * Current phase instructions for next phase.
+        *
+        * @since S60 4.0
+        * @param None.
+        * @return TCFPhaseId
+        */
+        virtual TCFPhaseId NextPhase() const = 0;
+        
+        /**
+        * Hanldes CFW starter events.
+        *
+        * @since S60 3.2
+        * @param CFStarterEventHandler::TCFStarterEvents.
+        * @return TCFPhaseId
+        */
+        virtual void HandleEvent( MCFStarterEventHandler::TCFStarterEvents /*aEvent*/ );
+        
+    public: // New methods
+    
+        /**
+        * Returns phase id.
+        *
+        * @since S60 4.0
+        * @param None.
+        * @return TInt
+        */
+        TInt PhaseId() const;
+
+        /**
+         * Cancels the outgoing phase execution.
+         * 
+         * @since S60 5.1
+         * @param None.
+         * @return None.
+         */
+        void Cancel();
+        
+    protected: // New methods
+    
+        // Completes phase
+        void Complete( TInt aError );
+        
+    protected:
+    
+        CCFPhaseBase( TCFPhaseId aId, MCFContextInterface& aCF );
+        void ConstructL();
+        
+    protected: // Data
+    
+        /** Starter request status */
+        TRequestStatus* iStarterRequest;
+        
+        /** Phase id */
+        TCFPhaseId iId;
+        
+        /** Context Access API */
+        MCFContextInterface& iCF;
+    };
+
+#endif