convergedconnectionhandler/cchserver/inc/cchserverbase.h
branchRCL_3
changeset 22 d38647835c2e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/convergedconnectionhandler/cchserver/inc/cchserverbase.h	Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,355 @@
+/*
+* Copyright (c) 2006-2010 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:  CCCHServerBase declaration
+*
+*/
+
+
+#ifndef C_CCHSERVERBASE_H
+#define C_CCHSERVERBASE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <cchclientserver.h>
+#include "cchwakeupeventobserver.h"
+#include "cchconnmonhandlernotifier.h"
+
+// CONSTANTS
+
+// Security Policy
+const TUint KCCHRangeCount = 2;
+
+const TInt KCCHRanges[ KCCHRangeCount ] =
+    {
+    0,  /// Session
+    24, // Non implemented requests (requests out of range)
+    };
+
+const TUint8 KCCHElementsIndex[ KCCHRangeCount ] =
+    {
+    0,
+    CPolicyServer::ENotSupported,
+    };
+
+const CPolicyServer::TPolicyElement KCCHElements[] =
+    {
+        {
+        _INIT_SECURITY_POLICY_C1( ECapabilityNetworkServices ),
+            CPolicyServer::EFailClient
+        },
+        // Policy "0"; Fail call if ECapabilityNetworkServices not present
+    };
+
+const CPolicyServer::TPolicy KCCHPolicy =
+    {
+    CPolicyServer::EAlwaysPass,     // Connection attempts allowed
+    KCCHRangeCount,                 // Range count
+    KCCHRanges,                     // Ranges
+    KCCHElementsIndex,              // Elements index
+    KCCHElements,                   // Elements
+    };
+
+// MACROS
+// None
+
+// DATA TYPES
+// None
+
+// FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+class CCCHRequestStorage;
+class CCCHPluginHandler;
+class CCCHSPSHandler;
+class CCCHServiceHandler;
+class CCCHConnMonHandler;
+class CCchFeatureManager;
+class CCchWakeUpEventNotifier;
+class CCchStartupCounter;
+
+// CLASS DECLARATION
+
+/**
+ *  CCCHServerBase declaration
+ *  The server of CCH services.
+ *  @lib cchserver.exe
+ *  @since S60 3.2
+ */
+NONSHARABLE_CLASS( CCCHServerBase ) : public CPolicyServer,
+			                          public MCchWakeUpEventObserver,
+			                          public MCCHConnMonHandlerNotifier
+    {
+
+public: // Constructors and destructor
+
+    /**
+    * Two-phased constructor.
+    */
+    static CCCHServerBase* NewL();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CCCHServerBase* NewLC();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCCHServerBase();
+
+public: // New functions
+
+    /**
+     * Notify the server that a session has been created.
+     * @since S60 3.2
+     */
+    void NotifySessionCreatedL();
+
+    /**
+     * Notify the server that a session has been closed.
+     * @since S60 3.2
+     */
+    void NotifySessionClosed();
+
+    /**
+     * Panic the client.
+     * @since S60 3.2
+     * @param aMessage The panic message
+     * @param aPanic The panic code.
+     */
+    void PanicClient( const RMessage2& aMessage, TInt aPanic );
+
+    /**
+     * Panic the server.
+     * @since S60 3.2
+     * @param aPanic The panic code.
+     */
+    void PanicServer( TInt aPanic );
+
+    /**
+     * Gives reference to container for object containers.
+     * @since S60 3.2
+     * @return Container for object containers.
+     */
+    CObjectConIx& ObjectContainerIx();
+
+    /**
+     * Return reference to CCCHRequestStorage
+     * @since S60 3.2
+     * @return Reference to CCCHRequestStorage
+     */
+    CCCHRequestStorage& RequestStorage();
+
+    /**
+     * Return reference to CCCHConnMonHandler
+     * @since S60 3.2
+     * @return Reference to CCCHConnMonHandler
+     */
+    CCCHConnMonHandler& ConnMonHandler();
+
+    /**
+     * Return reference to CCCHConnMonHandler
+     * @since S60 3.2
+     * @return Reference to CCCHConnMonHandler
+     */
+    CCCHSPSHandler& SPSHandler();
+    
+    /**
+     * Return reference to CCCHPluginHandler
+     * @since S60 3.2
+     * @return Reference to CCCHPluginHandler
+     */
+    CCCHPluginHandler& PluginHandler();
+    
+    /**
+     * Return reference to CCCHServiceHandler
+     * @since S60 3.2
+     * @return Reference to CCCHServiceHandler
+     */
+    CCCHServiceHandler& ServiceHandler();
+    
+    /**
+     * Return reference to CCCHFeatureManager
+     * @since S60 3.2
+     * @return Reference to CCCHFeatureManager
+     */
+    CCchFeatureManager& FeatureManager();
+    
+    /**
+     * Create startup counter.
+     * @since S60 3.2
+     */
+    void CreateStartupCounterL();
+             
+    /**
+     * Reset startup counter.
+     * @since S60 3.2
+     */
+    void ResetStartupCounterL();
+
+    /**
+     * Indicates if the voip emergency note has been shown or not.
+     * @since S60 3.2
+     */
+    TBool VoIPEmergencyNoteShown();
+    
+    /**
+     * Sets the voip emergency note shown flag.
+     * @since S60 3.2
+     */
+    void SetVoIPEmergencyNoteShown( TBool aShown );
+    
+    /**
+     * Restarts server.
+     * @since S60 3.2
+     */
+    void Restart();
+    
+public: // Methods from base classes
+
+    /**
+     * (From CServer2) Creates a new session for a client.
+     *
+     * @param aVersion (OUT) The version of the server.
+     * @param aMessage IPC message
+     * @return A new instance of CWLMSession.
+     */
+     virtual CSession2*  NewSessionL(
+            const TVersion& aVersion,
+            const RMessage2& aMessage ) const;
+     
+     /**
+      * (From MCchWakeUpEventObserver) Creates a new session for a client.
+      *
+      * Switch server to monitoring mode
+      */
+     void WakeUp();
+
+private: // From MCCHConnMonHandlerNotifier
+    
+    void NetworkScanningCompletedL( const TConnMonSNAPInfo& aSNAPs, TInt aError );
+    
+    void SNAPsAvailabilityChanged( TInt aError );
+         
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CCCHServerBase();
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+
+    /**
+     * Shutdowns server
+     */
+    void ShutDownServerL();
+
+    /**
+     * Initialize server and it's components
+     */
+    void InitServerObjectsL();
+    
+    /**
+     * Switch server to monitoring mode
+     */
+    void StartMinimalServerL();
+ 
+    TBool IsServerShutdownAllowedL();
+    
+    /**
+     * Release all dynamic memory allocations and other resources
+     */
+    void ReleaseAllResources();
+	
+    /**
+     * Starts service
+     */
+    void ServiceStartupL();
+        
+    template <class T>T& ConstructObject( CCCHServerBase* aThis, T*& aObject );
+    template <class T>T& ConstructObject( T*& aObject );
+
+
+private: // data
+
+    /**
+     * Session counter
+     */
+    TInt                iSessionCounter;
+
+    /**
+     * Object container factory for sessions
+     */
+    CObjectConIx*       iObjectConIx;
+
+    /**
+     * Storage for asynchronous requests.
+     */
+    CCCHRequestStorage* iRequestStorage;
+
+    /**
+     * Object for handling ConnMon
+     */
+    CCCHConnMonHandler* iConnMonHandler;
+
+    /**
+     * Object for handling Service Provider Settings
+     */
+    CCCHSPSHandler*     iSPSHandler;
+    
+    /**
+     * Object for handling Plug-ins.
+     */
+    CCCHPluginHandler*  iPluginHandler;
+    
+    /**
+     * Object for handling Services
+     */
+    CCCHServiceHandler* iServiceHandler;
+    
+    /**
+     * Cch's feature manager
+     */
+    CCchFeatureManager* iFeatureManager;
+    
+    /**
+     * Wake-up event notifer
+     */
+    CCchWakeUpEventNotifier *iWakeUpEventNotifier;
+    
+    /**
+     * Counts startups
+     */
+    CCchStartupCounter* iStartupCounter;
+    
+    /**
+     * Have we already shown the emergency call note?
+     */    
+    TBool iVoIPEmergencyNoteShown;
+    
+    /**
+     * Have we already initialized the server objects?
+     */    
+    TBool iServerObjectsInit;  
+    };
+
+#endif // C_CCHSERVERBASE_H
+
+// End of file