diff -r 000000000000 -r ff3b6d0fd310 satengine/SatServer/Engine/inc/CSatSSession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satengine/SatServer/Engine/inc/CSatSSession.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,183 @@ +/* +* Copyright (c) 2002-2009 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: The Sat Server session manages a connection to a client and +* handles client requests. +* +*/ + +#ifndef CSATSSESSION_H +#define CSATSSESSION_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class TSatEventMediator; +class CSatSServer; +class CSatSSubSession; +class MSatUiSession; +class CSatSServer; +class MSatApi; +class MThreadDeathNotifier; +class CSatIconHandler; +class MSatSIconAPI; +// CLASS DECLARATION + +/** +* CSatSSession represents the server-side session object. +* +* @lib SatEngine.lib +* @since Series 60 3.0 +*/ +class CSatSSession : public CSession2 + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aServer SatServer class + * @param aEventMediator Event mediator class + * @param aUsatApi An USat API interface + * @param aThreadDeathNotifier ThreadDeath notifier interface + */ + static CSatSSession* NewL( CSatSServer* aServer, + TSatEventMediator& aEventMediator, + MSatApi& aUsatApi, + MThreadDeathNotifier& aThreadDeathNotifier ); + + /** + * Destructor. + */ + virtual ~CSatSSession(); + + public: // Functions from base classes + + /** + * From CSession2 Handles an incoming message. + * @param aMessage Handle to the client message. + */ + void ServiceL( const RMessage2 &aMessage ); + + public: // New functions + + /** + * Gives pointer of ui sub session interface. May be null. + * @return Pointer of ui subsession interface. + */ + MSatUiSession* UiSubSession(); + + /** + * Closes icon sub-session. + * @param aMessage Handle to the client message. + * @return TRUE if subsession exists. Otherwise return FALSE. + */ + TBool CloseSubSession( const RMessage2& aMessage ); + + /** + * Gets the sub-session using handle. + * @param aHandle Sub-session handle. + * @return Sub-session. NULL if not found. + */ + CSatSSubSession* GetSubSessionFromHandle( TInt aHandle ) const; + + /** + * Panic the client. + * @param aMessage The panic message + * @param aPanic The panic code. + */ + void PanicClient( const RMessage2& aMessage, TInt aPanic ) const; + + /** + * Notifies Thread death monitor for thread is dying + */ + void NotifyThreadDeathMonitor(); + + /** + * Gets pointer to SatServer + * @param Pointer to SatServer + */ + CSatSServer* SatServer(); + + /** + * Tells that UI Sub session is closed. + */ + void UiSessionClosed(); + + /** + * Creates icon handler and returns it to icon sub session + * return Pointer to created icon handler + */ + MSatSIconAPI* CreateIconHandlerL(); + + private: // New functions + + /** + * Adds sub session to container. Sub session is deleted + * if leave occurs. + * @param aSubSession A Session that is needed to be added + * @param aMessage An instance of RMessage2 + */ + void AddSubSessionL( CSatSSubSession* aSubSession, + const RMessage2& aMessage ); + + private: // Constructors + + /** + * ConstrucL + */ + void ConstructL(); + + /** + * C++ default constructor. + * @param aServer SatServer class + * @param aEventMediator Event mediator class + * @param aUsatApi An USat API interface + * @param aThreadDeathNotifier ThreadDeath notifier interface + */ + CSatSSession( CSatSServer* aServer, + TSatEventMediator& aEventMediator, + MSatApi& aSatApi, + MThreadDeathNotifier& aThreadDeathNotifier ); + + private: // Data + + // A reference to the server. + CSatSServer* iSatServer; + + // Event mediator reference + TSatEventMediator& iEventMediator; + + // Sat api + MSatApi& iSatApi; + + // Generates a unique handle for subsession. + CObjectIx* iSubSessionIx; + + // Container for sub-sessions. + CObjectCon* iSubSessionCon; + + // Interface for ui sub session + MSatUiSession* iUiSubSession; + + // Thread death monitor notifier + MThreadDeathNotifier& iThreadDeathNotifier; + + // Indicates is SatUiSubSession closed + TBool iSatUiSubSessionClosed; + + }; + +#endif // CSATSSESSION_H + +// End of File