uigraphics/AknIcon/srvinc/AknIconSrvSession.h
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/srvinc/AknIconSrvSession.h	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2002 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:   
+*
+*/
+
+
+
+
+#ifndef AKN_ICON_SRV_SESSION_H
+#define AKN_ICON_SRV_SESSION_H
+
+//  INCLUDES
+
+#include <e32base.h>
+#include "AknIconPanic.h"
+#include "AknIconSrvDef.h"
+
+// FORWARD DECLARATIONS
+class CAknIconServer;
+class CAknIconSrvIconItem;
+
+// CLASS DECLARATION
+
+/**
+*  This class represents a session in the server.
+*  Functions are provided to respond appropriately to client messages.
+*/
+
+NONSHARABLE_CLASS(CAknIconSrvSession) : public CSession2
+    {
+    public:  // Constructors and destructor
+  
+        /**
+        * C++ default constructor.
+        */
+        CAknIconSrvSession();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CAknIconSrvSession();
+
+    public: // New functions
+
+    public: // From CSharableSession
+
+        void ServiceL( const RMessage2& aMessage );
+        
+        RFile& AdoptedFileHandle();
+
+        /**
+         * @fn      SetClientPanicCode
+         *          sets the panic code, which will be used in panicing the client
+         * @param   aPanicCode  This panic code to set
+         * @see     TAknIconPanic
+         */
+        void SetClientPanicCode(TAknIconPanic aPanicCode);
+
+    private:    // New Functions
+
+        /**
+        * Handles a client request; tests the opcode and gives
+        * service according to that.
+        *
+        * @param aMessage service request message from client
+        * 
+        * Leaves if:
+        * - a service routine leaves
+        */
+        TInt DispatchMessageL( const RMessage2& aMessage );
+
+        /**
+        * Below are handlers for different services.
+        * They get the parameters from client message and
+        * call the desired service routine.
+        * 
+        * They also do the necessary inter-thread data transfers.
+        * 
+        * Leave if:
+        * - a service routine leaves
+        *
+        * Leaves are trapped by ServiceL() which returns the
+        * errorcode to the client.
+        */
+
+        /**
+        * Server down-cast.
+        */
+        inline CAknIconServer* Server();
+
+        /**
+        * Panics the client thread
+        * @param aPanic panic reason
+        */      
+        void PanicClient( const RMessage2& aMessage, TAknIconPanic aPanic ) const;
+
+        void ModifyUserCount( 
+            const CAknIconSrvIconItem* aItem,
+            TInt aCount );
+
+        void ModifyUserCount(
+            const CAknIconDataItem* aItem,
+            TInt aCount );
+
+    private:    // Data
+        
+        // Information of which icons this session is referring to.
+        // Needed for cleanup purposes in e.g. client thread panic case.
+        RArray<TAknIconSrvSessionIconItem> iIconItems;
+
+        // Information of which icon data this session has preserved.
+        // Needed for cleanup purposes in e.g. client thread panic case.
+        RArray<TAknIconSrvSessionPreservedItem> iPreservedItems;
+        
+        // File handle adopted from the client side.
+        // It is adopted in the beginning of the service request
+        // and always closed after the service request.
+        RFile iAdoptedFile;
+
+        //! Code to use while panicking the client
+        TAknIconPanic iClientPanicCode;
+        
+#ifdef _DEBUG
+        TInt iDbgHeapFailNextCount; // for heap testing
+#endif // _DEBUG
+    };
+
+    #include "AknIconSrvSession.inl"
+
+#endif      // AKN_ICON_SRV_SESSION_H   
+            
+// End of File