ccservices/cmsservices/cmsengine/Server/inc/cmsserversession.h
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ccservices/cmsservices/cmsengine/Server/inc/cmsserversession.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,225 @@
+/*
+* 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: 
+*       
+*
+*/
+
+
+#ifndef __CMSSESSION_H__
+#define __CMSSESSION_H__
+
+// FORWARD DECLARATIONS
+class CCmsServer;
+class CCmsPhoneBookProxy;
+class MCmsContactInterface;
+
+/**
+ * CCmsServerSession represents a session for a client thread on the
+ * server side.
+ */ 
+NONSHARABLE_CLASS( CCmsServerSession ) : public CSession2
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Creates new server session
+        *
+        * @param CCmsServer* The main server object
+        * @return CCmsSession* New session
+        */ 
+        static CCmsServerSession* NewL( CCmsServer* aServer );
+
+        /**
+        * Service an incoming request
+        * @param RMessage2& Kernel message with client's data
+        *
+        * @return void
+        */ 
+        void ServiceL( const RMessage2& aMessage );
+        
+        /**
+        * Destructor.
+        */      
+        ~CCmsServerSession();
+    
+    public: // Public methods
+        
+        /**
+        * Notifies session that stores open is complete.
+        */           
+        void StoreOpenComplete();
+        
+        /**
+        * Notifies session that contact retrieving is done.
+        * 
+        * @param aError Operation completion status
+        */
+        void CmsSingleContactOperationComplete( TInt aError );
+    
+    private:
+        
+        /**
+        * Symbian OS second-phase constructor
+        */ 
+        void ConstructL();
+
+        /**
+        * C++ default constructor is private.
+        *
+        * @param CCmsServer* The main server object
+        */      
+        CCmsServerSession( CCmsServer* aServer );
+        
+        /**
+        * Panic the client
+        *
+        * @param TInt Panic code
+        */ 
+        void PanicClient( TInt aPanic );
+        
+        /**
+        * Creates new CCmsServerContact and fetches contact info
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void CreateContactL( const RMessage2& aMessage );
+        
+        /**
+        * Fetches list of enabled (i.e. with some content) fields
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void EnabledFieldsL( const RMessage2& aMessage );
+
+        /**
+        * Fetches contact field
+        * 
+        * @param aMessage Kernel message with client's data
+        */
+        void FetchDataL( const RMessage2& aMessage );
+
+        /**
+        * Fetches contact identifier (ID)
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void FetchContactIdentifierL( const RMessage2& aMessage );
+                        
+        /**
+        * Cancels ongoing async operation
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void CancelOperation( const RMessage2& aMessage );
+        
+        /**
+        * Activates notifications
+        *
+        * @param aMessage Kernel message with client's data
+        * @param aAskMore If ETrue, returns current presence status imemdiately
+        *   from the presence cache and notify later about any changes
+        */
+        void OrderNotifyL( const RMessage2& aMessage, TBool aAskMore );  
+         
+        /**
+        * Cancels notifications
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void CompleteNotify( const RMessage2& aMessage );
+        
+        /**
+        * Finds services (IM, Voip, etc) availability
+        *
+        * @param aMessage Kernel message with client's data
+        * @return 0 if not available, 1 otherwise
+        */
+        TInt FindServiceAvailabilityL( const RMessage2& aMessage );
+        
+        /**
+        * Returns current contact's store
+        *
+        * @param aMessage Kernel message with client's data
+        * @return Contact store, see TCmsContactStore from CCmsServerContact
+        */
+        TInt FindParentStoreL( const RMessage2& aMessage );
+        
+        /**
+        * Finds a contact from xSP store
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void FindXSPContactL( const RMessage2& aMessage );
+        
+        /**
+        * Cancels xSP contact search
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void CancelXSPContactFindL( const RMessage2& aMessage );
+        
+        /**
+        * Fetches contact information
+        *
+        * @param aMessage Kernel message with client's data
+        * @param aContactInterface Observer to be notified about
+        *                          operation completion
+        */
+        void FetchContactL( const RMessage2& aMessage,
+                            MCmsContactInterface* aContactInterface );
+        
+        /**
+         * Gets contact action field count.
+         */
+        TInt GetContacActionFieldCountL( const RMessage2& aMessage );
+        
+        /**
+        * Handles clients requests
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void DoServiceL( const RMessage2& aMessage );
+        
+        /**
+     	* Checks whether the Current contact is top contact.
+        *
+        * @param aMessage Kernel message with client's data
+        */
+        void IsTopContactL( const RMessage2& aMessage );
+
+    private: //Data
+        
+        /// CMS server instance. Not owned.
+        CCmsServer*                             iCmsServer;
+        
+        // CCmsServerContact instance. Owned.
+        CCmsServerContact*                      iServerContact;
+        
+        /// Service message to fetch a contact. Completed when contact 
+        /// retrieving operation is done.
+        RMessage2                               iCmsContactRetrieveMessage;
+        
+        /// Pointer for delayed processing if stores are not opened yet.
+        /// Must be pointer, Message status is not updated if a copy is done !                
+        const RMessage2*                        iServiceMessage;
+        
+        /// ETrue, if FeatureManager library was initialized.
+        TBool                                   iFeatureManagerInitialized;
+    };
+
+
+#endif
+
+// End of File