diff -r 000000000000 -r ff3b6d0fd310 phoneclientserver/phoneserver/Inc/Standard/CPhSrvServer.h --- /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 +#include +#include + + +// 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