satengine/SatServer/Engine/inc/CSatSSession.h
changeset 0 ff3b6d0fd310
--- /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    <e32svr.h>
+
+// 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