browserutilities/downloadmgr/DownloadMgrClntSrv/inc/DownloadMgrServer.h
changeset 0 dd21522fd290
child 37 cb62a4f66ebe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/inc/DownloadMgrServer.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,960 @@
+/*
+* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  This file contains the definition of the Download Mgr Server.
+*
+*/
+
+
+#ifndef __DOWNLOADMGR_SERVER_H__
+#define __DOWNLOADMGR_SERVER_H__
+
+//  INCLUDES
+#include <HttpDownloadManagerServerEngine.h>
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CHttpClientAppInstance;
+class CHttpDownload;
+class CDownloadSubSession;
+class CDownloadMgrEventQueue;
+class CDefaultAttrib;
+class CDownloadMgrServer;
+
+// DATA TYPES
+// panic reasons
+enum TDownloadMgrSvrPanic
+	{
+	EBadRequest,
+	EBadDescriptor,
+	EDescriptorNonNumeric,
+	EMainSchedulerError,
+	ESvrCreateServer,
+	ECreateTrapCleanup,
+	EBadCounterRemove, 
+	EBadSubsessionHandle,
+    EMultipleInitDownloadEvent
+	};
+
+// CLASS DECLARATION
+/**
+*  Download manager server's shutdown timer.
+*/
+NONSHARABLE_CLASS( CDownloadMgrShutdown ) : public CActive
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CDownloadMgrShutdown* NewL( CDownloadMgrServer* aServer );
+
+        /**
+        * Destructor.
+        */
+        ~CDownloadMgrShutdown();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDownloadMgrShutdown( CDownloadMgrServer* aServer );
+
+        /**
+        * Default Symbian 2nd phase constructor .
+        */
+        void ConstructL();
+
+    public: // New functions
+
+        /**
+        * Starts the timer.
+        * @param 
+        * @return
+        */
+        void Start();
+
+    private: // From CActive
+
+        /**
+        * Cancels the timer.
+        * @param 
+        * @return
+        */
+        void DoCancel();
+        /**
+        * Handles an active object’s request completion event.
+        * @param 
+        * @return
+        */
+        void RunL();
+
+    private: // Data
+
+        RTimer              iTimer;
+        CDownloadMgrServer* iServer;
+    };
+
+/**
+*  Download manager server.
+*/
+NONSHARABLE_CLASS( CDownloadMgrServer ) : public CPolicyServer
+
+	{
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CDownloadMgrServer* NewL();
+
+        /**
+        * Destructor.
+        */
+        ~CDownloadMgrServer();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDownloadMgrServer();
+
+        /**
+        * Default Symbian 2nd phase constructor .
+        */
+        void ConstructL();
+
+    public: // From CServer2
+        
+        /**
+        * Creates a server-side client session object.
+        * @param aVersion Version information supplied by the client. 
+        * @return A pointer to the newly created server-side client session.
+        */
+        CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+
+    public: // New functions
+
+        /**
+        * Creates the object container.
+        * @param -
+        * @return A pointer to the newly created CObjectCon.
+        */
+        CObjectCon* NewContainerL();
+
+        /**
+        * Removes the specified object container from this container index 
+        * and deletes it.
+        * @param aCon A pointer to the object container to be removed.
+        * @return None.
+        */
+        void RemoveContainer( CObjectCon* aCon );
+
+        /**
+        * Create Client App Instance owned by CDownloadMgrSession.
+        * @param aAppUid app uid of the cleant
+        * @param aGetAllPendingDownloads
+        * @return A pointer to the newly created CHttpClientAppInstance.
+        */
+        CHttpClientAppInstance* CreateNewClientAppInstanceL( 
+                                        TUint32 aAppUid, 
+                                        MDownloadStateObserver& aObserver, 
+                                        TBool aGetAllPendingDownloads );
+
+        /**
+        * Closes Client App Instance owned by CDownloadMgrSession.
+        * @param aAppInst client app instance
+        * @return None.
+        */
+        void CloseClientInstance( CHttpClientAppInstance* aAppInst );
+
+        /**
+        * Keeps count of client sessions. Cancels shutdown timer.
+        * @param -
+        * @return None.
+        */
+        void IcrementSessions();
+
+        /**
+        * Keeps count of client sessions. Starts shutdown timer if needed.
+        * @param -
+        * @return None.
+        */
+        void DecrementSessions();
+        
+        /**
+        * Generates and returns a unique session id
+        */
+        TInt NextSessionId();
+
+        /**
+        * returns number of active sessions
+        */
+		TInt SessionsCount() {return iSessionCount;}
+
+    public:
+
+        /**
+        * Panics the server thread associated with this session.
+        * @param aPanic The panic number
+        * @return None.
+        */
+        static void PanicServer( TDownloadMgrSvrPanic aPanic );
+
+        /**
+        * Returns the number of active download in the engine. 
+        * @since Series 60 v2.8
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        TInt ActiveDownloads() const;
+
+    private:     // Data
+
+        // A container for object containers
+        CObjectConIx*                     iContainerIndex; ///< Owned.
+        // The Download Mgr Server Engine
+        CHttpDownloadManagerServerEngine* iDmEngine; ///< Owned.
+        // The number of sessions
+        TInt                              iSessionCount;
+        // Shutdown timer
+        CDownloadMgrShutdown*             iShutdown; ///< Owned.
+        // next unique session id
+        TInt                              iNextSessionId;
+
+    public:     // Friend classes
+
+        friend class CHttpDownloadManagerServerEngine;
+	};
+
+/**
+*  This class represents the server side client app instance.
+*/
+NONSHARABLE_CLASS( CDownloadMgrSession ) :
+                            public CSession2,
+                            public MDownloadStateObserver
+	{
+
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CDownloadMgrSession* NewL( CDownloadMgrServer* aServer );
+
+        /**
+        * Destructor.
+        */
+        ~CDownloadMgrSession();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDownloadMgrSession();
+
+        /**
+        * Default Symbian 2nd phase constructor.
+        */
+        void ConstructL( CDownloadMgrServer* aServer) ;
+
+    public: // New functions
+
+        /**
+        * Returns the subsession identified by the handle.
+        * @param aHandle the handle number that represents 
+        * the subsession in the object index.
+        * @return None.
+        */
+        CDownloadSubSession* DownloadFromHandle( TUint aHandle );
+
+        /**
+        * Dispatch request.
+        * @param aMessage The message containing the client request
+        * @return None.
+        */
+        void DispatchMessageL( const RMessage2& aMessage );
+
+        /**
+        * Sets the current message.
+        * @param aMessage The message containing the client request
+        * @return None.
+        */
+        void SetCurrentMessage( const RMessage2& aMessage );
+
+        /**
+        * Gets the current message.
+        * @param -
+        * @return The current message.
+        */
+        const RMessage2& CurrentMessage() const;
+
+        /**
+        * Creates a new download and subsession.
+        * Writes the handle of the subsession to the client's address space
+        * @param -
+        * @return None.
+        */
+        void NewDownloadL();
+
+        /**
+        * Attach this session to the client, writes the handle of the 
+        * current downloads to the client's address space.
+        * @param -
+        * @return None.
+        */
+        void DownloadMgrAttachL();
+
+        /**
+        * Attach a client to an existing download (PD download) 
+        * @param -
+        * @return None.
+        */        
+        void AttachToDownloadL();
+
+        /**
+        * Create a download subsession with CHttpDownload.
+        * @param aDownload 
+        * @param aDefAttrib - indicates if default setting attrib is needed
+        * @return None.
+        */
+        void CreateDownloadL( CHttpDownload* aDownload, TBool aDefAttrib = EFalse );
+
+        /**
+        * Attach a download subsession to the client.
+        * @param -
+        * @return None.
+        */
+        void DownloadAttachL();
+
+        /**
+        * Delete the download subsession identified by the handle.
+        * @param aHandle the handle number that represents 
+        * the subsession in the object index.
+        * @return None.
+        */
+        void DeleteDownload( TUint aHandle );
+        
+        /**
+        * Panics the client thread associated with this session.
+        * @param aPanic The panic number
+        * @return None.
+        */
+        void PanicClient( TInt aPanic ) const;
+
+		/**
+		* Pauses all download.
+		* @param -
+        * @return None.
+		*/
+        void PauseAllL();
+
+		/**
+		* Starts all download.
+		* @param -
+        * @return None.
+		*/
+        void StartAllL();
+
+		/**
+		* Resets all download.
+		* @param -
+        * @return None.
+		*/
+        void ResetAll();
+
+		/**
+		* Deletes all download.
+		* @param -
+        * @return None.
+		*/
+        void DeleteAll();
+
+        /**
+        * Disconnects the instance's connection and pauses all downloads.
+        * @since Series 60 2.8
+        * @return none
+        */
+        void Disconnect();
+
+		/**
+		* Sets the IAP to the app instance reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+        void SetIapIdL();
+
+		/**
+		* Gets the IAP from the app instace and write to the client's address space.
+		* @param -
+        * @return None.
+		*/
+        void GetIapId();
+
+		/**
+		* Copies data from an 8 bit descriptor in the server address space 
+        * to the client thread’s address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+        * @param aMessage This is the message of which param is set.
+		* @param An 8 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Write( TInt aParam, RMessage2 aMessage, TDesC8& aDes );
+
+		/**
+		* Copies data from an 8 bit descriptor in the server address space 
+        * to the client thread’s address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+        * @param aMessage This is the message of which param is set.
+		* @param A 16 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Write( TInt aParam, RMessage2 aMessage, TDesC16& aDes );
+
+		/**
+		* Copies data from the client thread’s address space into an 8 bit 
+        * descriptor in the server address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+		* @param aDes An 8 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Read( TInt aParam, TPtr8& aDes );
+
+		/**
+		* Copies data from the client thread’s address space into an 8 bit 
+        * descriptor in the server address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+		* @param aDes An 8 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Read( TInt aParam, TPtr16& aDes );
+
+		/**
+		* Creates the app instance we are representing if needed.
+		* @param aAppUid application uid
+		* @param None.
+		*/
+        void CreateClientAppInstanceL( TUint32 aAppUid );
+
+		/**
+		* Copies unique handle in the server address space
+        * to the client thread’s address space.
+		* @param aHandle the handle number that represents 
+        * the subsession in the object index.
+		* @return None.
+		*/
+        void WriteHandle( TInt aHandle );
+
+        /**
+        * Initializes the session's event handler.
+        * @param aMessage the message which should be completed.
+        * @return None.
+        */
+        void InitSessionEvent( const RMessage2& aMessage  );
+
+        /**
+        * Cancels the moved event handler.
+        * @param -
+        * @return None.
+        */
+        void CancelMovedEvent();
+
+        /**
+        * Creates a new subsession with download and send event to the client.
+        * @param -
+        * @return ETrue, if event was requested and sent.
+        */
+        TBool CreateSubSessionAndSendEventL( CHttpDownload* aDownload,
+                                             TInt32 aDownloadState,
+                                             TInt32 aProgressState,
+                                             TInt32 aMoIndex );
+
+        /**
+        * Removes download from the event queue.
+        * @param aDownload
+        * @return None.
+        */
+        void RemoveFromQueue( CHttpDownload* aDownload );
+        
+        /**
+        * Return the session Id.
+        * @return id of the session
+        */
+        TInt SessionId() const;
+
+        /**
+        * Return the client app instance.
+        * @return client app instance
+        */
+        CHttpClientAppInstance* ClientAppInstance()const;
+
+    public: // from MDownloadStateObserver
+
+        /**
+        * Indicates an event occoured by the download.
+        * @param aDownload The download object which the event occured.
+        * @return None.
+        */
+        void Event( CHttpDownload* aDownload, 
+                    THttpDownloadState aDlState,
+                    THttpProgressState aProgState,
+                    TInt32 aMoIndex );
+
+        /**
+        *
+        * @param aDownload The download object which the event occured.
+        * @return None.
+        */
+        void SetComplete( TBool aComplete );
+
+    protected:
+
+        /**
+        * Called if the event needs to be vompleted
+        * @param aErrorStatus Leave code or KErrNone
+        * @return None.
+        */
+        void EventComplete( TInt aErrorStatus );
+
+        /**
+		* Initialize the session with the parameters got from client side.
+        * Write the number of the attachable downloads to the
+        * client's address space.
+		* @param -
+        * @return None.
+		*/
+        void InitializeL();
+
+        /**
+		* Gets the value for a TInt attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetIntAttributeL();
+
+        /**
+		* Gets the value for a TBool attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetBoolAttributeL();
+
+		/**
+		* Gets the value for a string attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetStringAttributeL();
+
+		/**
+		* Gets the value for a string attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetString8AttributeL();
+
+        /**
+		* Sets the value for a TInt attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetIntAttributeL();
+        
+		/**
+		* Sets the value for a TBool attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+	    void SetBoolAttributeL();
+		
+		/**
+		* Sets the value for a string attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetStringAttributeL();
+
+		/**
+		* Sets the value for a string attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetString8AttributeL();
+
+    private:      // from CSession
+
+        /**
+        * Handles the servicing of client requests to the server..
+        * @param aMessage The message containing the client request.
+        * @return None.
+        */
+        void ServiceL( const RMessage2& aMessage );
+
+    private:     // Data
+
+        // To the current message
+        RMessage2               iCurrentMessage;
+        // Object container for this session
+        CObjectCon*             iObjectContainer;   ///< Owned.
+        // Object index which stores objects (CDownloadSubSession instances) 
+        // for this session
+        CObjectIx*              iObjectIx;          ///< Owned.
+        // Pointer to owning server
+        CDownloadMgrServer*     iDownloadMgrServer; ///< NOT Owned.
+        // The client app instance which we are representing
+        CHttpClientAppInstance* iClientAppInstance; ///< Owned.
+        // Queue the events comes from the engine.
+        CDownloadMgrEventQueue* iEventQueue;        ///< Owned.
+        // Indicates if the request may be completed
+        TBool                   iComplete;
+        // Used by moved event handler, the message which should be completed.
+        RMessage2               iEventMessage;  ///< NOT Owned.
+        // Indicates the moved event is initialized.
+        TBool                   iEvent;
+        // Initialization parameters set by the client side
+        TBool                   iIsMaster;
+        // Unique id of the session
+        TInt                    iSessionId;
+	};
+
+/**
+*  This class represents the server side download object.
+*/
+NONSHARABLE_CLASS( CDownloadSubSession ) : public CObject
+	{
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CDownloadSubSession * NewL( CDownloadMgrSession* aSession,
+                                           CHttpDownload* aDownload );
+
+        /**
+        * destructor.
+        */
+        ~CDownloadSubSession();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDownloadSubSession();
+        
+        /**
+        * Default Symbian 2nd phase constructor.
+        */
+        void ConstructL( CDownloadMgrSession *aSession,
+                         CHttpDownload* aDownload );
+
+    public:    // New functions
+
+        /**
+        * Closes the subsession.
+        * @param -
+        * @return None.
+        */
+        void CloseDownload();
+
+        /**
+        * Closes the completed subsession.
+        * @param -
+        * @return None.
+        */
+        void CloseCompletedDownload();
+
+        /**
+        * Starts the download.
+        * @param -
+        * @return None.
+        */
+        void StartL();
+
+        /**
+        * Pauses the download.
+        * @param -
+        * @return None.
+        */
+        void PauseL();
+
+        /**
+        * Resets the download.
+        * @param -
+        * @return None.
+        */
+        void Reset();
+
+        /**
+        * Deletes the download.
+        * @param -
+        * @return None.
+        */
+        void Delete();
+
+        /**
+        * Moves the downloaded content.
+        * @param -
+        * @return None.
+        */
+        void MoveL();
+
+        /**
+        * Returns the current message - gotten from session.
+        * @param  -
+        * @return RMessage2& gotten from the session.
+        */
+        const RMessage2& Message() const;
+
+        /**
+        * Initializes the download's event handler.
+        * @param aMessage the message which should be completed.
+        * @return None.
+        */
+        void InitDownloadEvent( const RMessage2& aMessage  );
+
+        /**
+        * Cancels the download's event handler.
+        * @param -
+        * @return None.
+        */
+        void CancelDownloadEvent();
+
+        /**
+        * Indicates an event occoured by the download.
+        * @param aDownloadState
+        * @param aProgressState
+        * @return TBool True if the event was sent.
+        */
+        TBool EventL( TInt32 aDownloadState, TInt32 aProgressState, TInt32 aMoIndex );
+
+        /**
+        * Called if a leave from the download is trapped
+        * @param aError Leave code
+        * @return None.
+        */
+        void OnError( TInt aError,
+                      THttpDownloadMgrError aDlError = EGeneral );
+
+        /**
+        * Called if the event needs to be vompleted
+        * @param aErrorStatus Leave code or KErrNone
+        * @return None.
+        */
+        void EventComplete( TInt aErrorStatus );
+
+        /**
+		* Gets the value for a TInt attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetIntAttributeL();
+
+        /**
+		* Gets the value for a TBool attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetBoolAttributeL();
+
+		/**
+		* Gets the value for a string attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetStringAttributeL();
+
+		/**
+		* Gets the value for a string attribute writing to the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void GetString8AttributeL();
+
+        /**
+        * Gets the file handle from the download.
+        */
+        void GetFileHandleAttributeL();
+
+        /**
+		* Sets the value for a TInt attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetIntAttributeL();
+        
+		/**
+		* Sets the value for a TBool attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+	    void SetBoolAttributeL();
+		
+		/**
+		* Sets the value for a string attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetStringAttributeL();
+
+		/**
+		* Sets the value for a string attribute reading from the client's address space.
+		* @param -
+        * @return None.
+		*/
+		void SetString8AttributeL();
+
+        /**
+        * Sets the file handle for the download.
+        */
+        void SetFileHandleAttributeL();
+        
+        /**
+        * Sets the download data (media info).
+        */
+        void SetDownloadDataAttributeL();
+        
+        /**
+        * Sets the media object data (track info).
+        */
+        void SetTrackDataAttributeL();
+        
+		/**
+		* Sets default attributes.
+		* @param -
+        * @return None.
+		*/
+        void SetDefAttributesL();
+
+		/**
+		* Copies data from an 8 bit descriptor in the server address space 
+        * to the client thread’s address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+		* @param A 16 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Write( TInt aParam, TDesC8& aDes );
+
+		/**
+		* Copies data from an 8 bit descriptor in the server address space 
+        * to the client thread’s address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+		* @param An 8 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Write( TInt aParam, TDesC16& aDes );
+
+		/**
+		* Copies data from the client thread’s address space into an 8 bit 
+        * descriptor in the server address space.
+		* @param aParam This is a value between 0 and 3 and indicates 
+        * which of the four arguments in the original client message 
+        * contains the pointer to the descriptor.
+		* @param aDes A 16 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Read( TInt aParam, TDes8& aDes );
+
+		/**
+		* Copies data from the client thread’s address space into an 8 bit 
+        * descriptor in the server address space.
+		* @param aPtr A pointer to a valid address within the client 
+        * thread’s address space.
+		* @param aDes An 8 bit descriptor in the server address space.
+        * @return None.
+		*/
+        void Read( TInt aParam, TDes16& aDes );
+
+		/**
+		* Checks the identity of the download objects.
+		* @param aDownload The download object.
+		* @return True if the specified aDownload equals with the represented one.
+		*/
+        TBool IsDownload( CHttpDownload* aDownload );
+
+		/**
+		* Returns a pointer to the download.
+		* @param .
+		* @return CHttpDownload*.
+		*/
+        CHttpDownload* Download();
+
+		/**
+		* Returns the handle number.
+		* @param -
+		* @return TUint.
+		*/
+        TUint Handle();
+
+		/**
+		* Sets the handle number.
+		* @param aHandle handle number.
+		* @return None.
+		*/
+        void SetHandle( TUint aHandle );
+
+        /**
+        * Dispatches download message
+        * @since Series v2.8 Series60
+        * @param aMessage FThe current message.
+        * @return none. Leaves on error.
+        */
+        void DispatchMessageL( const RMessage2& aMessage );
+
+		/**
+		* Buffers attributes which need when a client deletes download.
+		* @param None.
+        * @return None.
+		*/
+        void BufferAttributesL();
+
+		/**
+		* Create a package for attributes. Part of IPC optimalization.
+		* @param aBuffered - indicates that all the buffered attributes needs to be passed.
+        * @return HBufC8*.
+		*/
+        HBufC8* CreateAttribPackL( TBool aBuffered = EFalse);
+
+    protected:   // Data
+        // Session owning us.
+        CDownloadMgrSession* iSession; // NOT Owned.
+    
+    private:     // Data
+        // The download we are representing
+        CHttpDownload* iDownload; ///< NOT Owned.
+        // Used by event handler, the message which should be completed.
+        RMessage2      iMessage;  ///< NOT Owned.
+        // Indicates the event is initialized.
+        TBool          iEvent;
+        // Unique handle of the subsession
+        TUint          iHandle;
+        
+        CArrayPtrFlat< CDefaultAttrib >* iAttribs;
+	};
+
+#endif /* __DOWNLOADMGR_SERVER_H__ */
\ No newline at end of file