PECengine/StorageManager2/ServerSrc/CPEngStorageSession.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/StorageManager2/ServerSrc/CPEngStorageSession.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,156 @@
+/*
+* Copyright (c) 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:  See class description below.
+*
+*/
+
+
+#ifndef __CPENGSTORAGESESSION_H__
+#define __CPENGSTORAGESESSION_H__
+
+//  INCLUDES
+#include <e32def.h>
+
+//  FORWARD DECLARATIONS
+class	MPEngStorageServer;
+class	RPEngMessage;
+class	CPEngStorageSubSession;
+class	CPEngAdminSubSession;
+
+/**
+ *  Main session class of the storage server
+ *	@since 3.0
+ */
+class   CPEngStorageSession
+            : public CSession2
+    {
+
+    public:		// Constructors and destructors
+        /**
+         * Two-phased constructor.
+         */
+        static CPEngStorageSession* NewL( MPEngStorageServer& aServer );
+
+        /**
+         * Two-phased constructor.
+         */
+        static CPEngStorageSession* NewLC( MPEngStorageServer& aServer );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CPEngStorageSession();
+
+    protected:	// Constructors and destructors
+
+        /**
+          * C++ default constructor.
+          */
+        CPEngStorageSession( MPEngStorageServer& aServer );
+
+        /**
+         * By default Symbian 2nd phase constructor is private.
+         */
+        void ConstructL();
+
+    private:	// New methods
+
+        /**
+         * Handles the message
+         *	@since 3.0
+         * @param aMessage is received message.
+         */
+        void DispatchMessageL( const RPEngMessage& aMessage );
+
+        /**
+         *	Create new Folder sub-session
+         *	@since 3.0
+         *	@param aMessage, message to write back handle of the new Sub session
+         */
+        void CreateNewFolderSubSessionL( const RPEngMessage& aMessage );
+
+        /**
+         *	Create new Admin sub-session
+         *	@since 3.0
+         *	@param aMessage, message to write back handle of the new Sub session
+         */
+        void CreateNewAdminSubSessionL( const RPEngMessage& aMessage );
+
+
+        /**
+         *	Remove sub-session
+         *	@since 3.0
+         *	@param	aHandle handle of the sub-session
+         *	Function leaves if there is no such a sub-session
+         */
+        void RemoveSubSessionL( TUint  aHandle );
+
+        /**
+         *	Find Folder Sub-session
+         *	@since 3.0
+         *	@param	aHandle handle of the sub-session to find
+         *	@return Folder sub-session
+         */
+        CPEngStorageSubSession* FindFolderSubSessionL(
+            TUint aHandle );
+
+        /**
+         *  Find Admin Sub-session
+         *
+         *  @since 3.0
+         *	@param	aHandle handle of the sub-session to find
+          *	@return Admin sub-session
+         */
+        CPEngAdminSubSession* FindAdminSubSessionL(
+            TUint aHandle );
+
+        /*
+         *	Client is panicked using this method.
+         *	@since 3.0
+         *  @param	aMessage clients message
+         *  @param	aPanic panic reason
+         */
+        void PanicClient( const RPEngMessage& aMessage, const TInt aPanic ) const;
+
+    public:		// Methods derived from CSession
+
+        /**
+         *  Handles the servicing of client requests to the server.
+         *  @since 3.0
+         *  @param aMessage is received message.
+         */
+        void ServiceL( const RMessage2 &aMessage );
+
+        /**
+         *  Handles the servicing of the error case
+         *  @since 3.0
+         *  @param aMessage is received message.
+         *  @param aError error
+         */
+        void ServiceError( const RMessage2& aMessage, TInt aError );
+
+    private:	// Data
+
+        /// OWN: Admin container indx
+        CObjectIx*							iSubSessions;
+
+        /// REF: Storage server
+        MPEngStorageServer&					iStorageServer;
+
+        /// OWN: Is procesed message completed
+        TBool								iCompleteMessage;
+
+    };
+
+#endif      //  __CPENGSTORAGESESSION_H__