phoneclientserver/phoneserver/Inc/Standard/CPhSrvServer.h
changeset 0 ff3b6d0fd310
child 12 ae8abd0db65c
child 43 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneclientserver/phoneserver/Inc/Standard/CPhSrvServer.h	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,355 @@
+/*
+* Copyright (c) 2002-2005 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:  Server.
+*
+*/
+
+
+#ifndef CPHSRVSERVER_H
+#define CPHSRVSERVER_H
+
+
+// INCLUDES
+#include "MPhSrvPhoneInterface.h"
+#include "PhCltClientServer.h"
+#include <RPhCltServer.h>
+#include <fbs.h>
+#include <f32file.h>
+
+
+// FORWARD DECLARATIONS
+class CPhSrvSession;
+class CPhSrvUssdManager;
+class CPhSrvPhoneController;
+class CPhSrvResourceManager;
+class CPhSrvCallRequestManager;
+class CPhSrvEmergencyRequestManager;
+class CPhSrvEmergencyNumberManager;
+class MPhSrvNegotiatorCall;
+class MPhSrvEmergencyNumberManager;
+class MPhSrvComHandNegotiator;
+class CPhSrvComHandRequestManager;
+class CPhSrvMessengerRequestManager;
+class MPhSrvMessengerNegotiator;
+class MPhSrvEmergencyNegotiatorCall;
+
+
+// CLASS DECLARATION
+
+/**
+*  It is the server class for Phone Server.
+*
+*  @since 1.0
+*/
+class CPhSrvServer : 
+    public CServer2
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * Creates a new server and starts it.
+        */
+        static CPhSrvServer* NewL();
+       
+        /**
+        * Destructor.
+        */
+        ~CPhSrvServer();
+        
+
+    public: // New functions
+
+        /**
+        * Connects to Font and bitmap server.
+        * @return Symbian error code
+        */
+        TInt ConnectFBS();
+
+        /**
+        * Disconnects Font and bitmap server.
+        * @param aForce do we force disconnect
+        */
+        void DisconnectFBS( TBool aForce = EFalse );
+
+        /**
+        * Creates all managers.
+        *
+        * @param aSession The session for subsessions.
+        */ 
+        void CreateAllL( CPhSrvSession& aSession );
+
+        /** 
+        * Cancels create all.
+        *
+        * @param aSession The session for subsessions.
+        */
+        void CancelCreateAll( CPhSrvSession& aSession );
+
+        /**
+        * Creates a new object container.
+        *
+        * @return Returns the created instance.
+        */
+        CObjectCon* NewContainerL() const;
+        
+        /**
+        * Removes an object container.
+        *
+        * @param  aCon object container 
+        */
+        void RemoveContainer( CObjectCon* aCon );
+
+        /**
+        * Access to the call negotiator
+        *
+        * @return The call negotiator
+        */
+        MPhSrvNegotiatorCall& CallNegotiatorL();
+        
+        /**
+        * Access to the call negotiator
+        * NOTE: This is not safe call if IsCallNegotiator() return False
+        * @return The call negotiator
+        */
+        MPhSrvNegotiatorCall& CallNegotiator() const;
+
+        /**
+        * Access to the USSD manager
+        *
+        * @return The USSD manager
+        */
+        CPhSrvUssdManager& UssdManagerL();
+        
+        
+        /**
+        * Access to the call negotiator
+        *
+        * @return The call negotiator
+        */
+        MPhSrvEmergencyNegotiatorCall& EmergencyCallNegotiatorL();
+        
+        /**
+        * Access to the call negotiator
+        * NOTE: This is not safe call if IsEmergencyCallNegotiator() return
+        * false.
+        * @return The call negotiator
+        */
+        MPhSrvEmergencyNegotiatorCall& EmergencyCallNegotiator() const;
+
+        /**
+        * Ask if there is a emergency call negotiator.
+        *
+        * @return ETrue if there is emergency call negotiator.
+        */
+        TBool IsEmergencyCallNegotiator() const;
+
+        /**
+        * Access to the phone
+        *
+        * @return The phone interface
+        */
+        MPhSrvPhoneInterface& PhoneInterfaceL();
+
+        /**
+        * Access to the emergency number manager
+        *
+        * @return The emergency number manager
+        */
+        MPhSrvEmergencyNumberManager& EmergencyNumberManagerL();
+
+        /**
+        * Ask if there is a call negotiator.
+        *
+        * @return ETrue if there is call negotiator.
+        */
+        TBool IsCallNegotiator() const;
+
+        /**
+        * Ask if there is a ussd manager
+        *
+        * @return ETrue if there is ussd manager.
+        */
+        TBool IsUssdManager() const;
+
+        /**
+        * Access to the command handler negotiator.
+        * @since 2.6
+        *
+        * @return The command handler negotiator
+        */
+        MPhSrvComHandNegotiator& ComHandNegotiatorL();
+        
+        /**
+         * Access to the command handler negotiator.
+         * NOTE: This is not a safe call if
+         * IsComHandNegotiator() return false.
+         */
+        MPhSrvComHandNegotiator& ComHandNegotiator() const;
+
+        /**
+        * Ask if there is a command handler negotiator.
+        * @since 2.6
+        *
+        * @return ETrue if there is command handler negotiator.
+        */
+        TBool IsComHandNegotiator() const;
+
+        /**
+        * Access to the messenger negotiator.
+        * @since 2.6
+        *
+        * @return The messenger negotiator
+        */
+        MPhSrvMessengerNegotiator& MessengerNegotiatorL();
+        
+        /**
+        * Access to the messenger negotiator.
+        * NOTE: This is not a safe call if IsMessengerNegotiator()
+        * return false.
+        * @since 5.0
+        *
+        * @return The messenger negotiator
+        */
+        MPhSrvMessengerNegotiator& MessengerNegotiator() const;
+
+        /**
+        * Ask if there is a messenger negotiator.
+        * @since 2.6
+        *
+        * @return ETrue if there is messenger negotiator.
+        */
+        TBool IsMessengerNegotiator() const;
+
+
+    public: // Functions from base classes
+        
+        /**
+        * From CServer, create a new session.
+        *
+        * @param aVersion It is the version of the client api.
+        * @param aMessage Connect message from Client.
+        * @return Returns a new session.
+        */          
+        CSession2* NewSessionL(
+            const TVersion &aVersion,
+            const RMessage2& aMessage ) const;
+        
+
+    private: // New functions
+        
+        /**
+        * C++ constructor.
+        */
+        CPhSrvServer( TInt aPriority );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        * @since 2.8
+        */
+        void ConstructL();
+           
+        /**
+        * Returns file server session.
+        */
+        RFs& FsSessionL();
+
+
+        /**
+        * Returns resource manager.
+        */
+        CPhSrvResourceManager& ResourceManagerL();
+
+        /**
+        * Performs step in create all.
+        */
+        TInt CreateAllStepL();
+
+        /**
+        * Performs an step.
+        */
+        void PerformNextStepL();
+
+        /**
+        * Complete create all.
+        */
+        void CompleteCreateAll( TInt aError );
+
+        /**
+        * Create all step.
+        */
+        static TInt DoCreateAllStepL( TAny* aAny );       
+
+    private:     // Data
+    
+        // The file server session for the whole server.
+        RFs                            iFsSession;
+
+
+        // The object responsible for controlling the server resource file.
+        CPhSrvResourceManager*         iResourceFileManager;
+
+        // The object responsible for controlling the interface to the phone.
+        CPhSrvPhoneController*         iPhoneController;
+
+        // The object container indexer which owns and manages the CObjectCon 
+        // instances ensuring that each container has a unique handle spanning 
+        // all sub-sessions.
+        // As well as owning the object containers, it also is responsible 
+        // for creating new ones.
+        mutable CObjectConIx*          iObjectConIx;
+
+        // The object responsible for acting as the bridge between an external 
+        // call client, and the phone app engine notifier client.
+        CPhSrvCallRequestManager*      iCallRequestManager;
+        
+        // The object responsible for acting as the bridge between an external 
+        // call client, and the phone app engine notifier client.
+        CPhSrvEmergencyRequestManager*      iEmergencyRequestManager;
+
+        // Responsible for all USSD related server functionality.
+        CPhSrvUssdManager*             iUssdManager;
+
+        // Responsible for all emergency number related functionality.
+        CPhSrvEmergencyNumberManager*  iEmergencyNumberManager;
+        
+        // The object responsible for acting as the bridge between an external
+        // command handler client, and the phone app engine notifier client.
+        CPhSrvComHandRequestManager*   iComHandRequestManager;
+
+        // The object responsible for handling messenger requests.
+        CPhSrvMessengerRequestManager* iMessengerRequestManager;
+
+        // CREATE ALL VARIABLES
+
+        // Idle object for create all.
+        CIdle*                         iCreateAll;
+
+        // Step index.
+        TInt                           iCreateAllStep;
+
+        // Error.
+        TInt                           iCreateAllError;
+
+        // Array of sessions.
+        RPointerArray< CPhSrvSession > iCreateAllArray;
+
+        // Reference count for font and bitmap server connections.
+        TInt                           iFBSConnections;
+    };
+
+#endif      // CPHSRVSERVER_H
+
+
+// End of File