messagingapp/msgappfw/server/inc/ccssession.h
branchRCL_3
changeset 57 ebe688cedc25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/server/inc/ccssession.h	Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,445 @@
+/*
+ * Copyright (c) 2007 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:  CS Server Client Session class
+ *
+ */
+
+#ifndef __C_CS_SESSION_H
+#define __C_CS_SESSION_H
+
+// FORWARD DECLARATIONS
+class CCsServer;
+class CCsPluginInterface;
+class CCsClientConversation;
+class CCsConversationEvent;
+
+// CLASS DECLARATIONS
+
+/**
+ * Represents a session (version 2) for a client thread on 
+ * the server side
+ */
+class CCsSession : public CSession2
+    {
+public:
+
+    /**
+     * Two phase construction
+     * 
+     * @param aServer, instance of CsServer
+     */
+    static CCsSession* NewL(CCsServer* aServer);
+
+    /**
+     * ServiceL
+     * Handles the servicing of client requests
+     * Implements CSession2 ServiceL
+     * 
+     * @param aMessage  RMessage reference
+     */
+    void ServiceL(const RMessage2& aMessage);
+
+    /**
+     * ServiceError
+     * Handles the leaves generated by ServiceL function
+     * Implements CSession2 ServiceError
+     * 
+     * @param aMessage  RMessage instance
+     * @parea, aError the error occured during the service 
+     */
+    void ServiceError(
+            const RMessage2& aMessage, 
+            TInt aError);
+
+    /**
+     * HandleNewConversationListEventL
+     * Handles the new conversation list event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleNewConversationListEventL(
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * HandleDeleteConversationListEventL
+     * Handles the delete conversation  list event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleDeleteConversationListEventL(
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * HandleModifyConversationListEventL
+     * Handles the modify conversation modify event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleModifyConversationListEventL(
+            CCsClientConversation* aClientConversation);      
+
+	/**
+	 * HandlePartialDeleteConversationListEvent
+	 * Handles the partial delete conversation event from cache
+	 */
+    void HandlePartialDeleteConversationListEvent(
+            CCsClientConversation* aClientConversation);
+    
+    /**
+     * HandleNewConversationEventL
+     * Handles the new conversation event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleNewConversationEventL(
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * HandleDeleteConversationEventL
+     * Handles the delete conversation event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleDeleteConversationEventL(
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * HandleModifyConversationEventL
+     * Handles the modify conversation event received from cache
+     * asynchronously
+     * 
+     * @param aClientConversation the client conversation to be processed
+     */
+    void HandleModifyConversationEventL(
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * HandleChangeEventL
+     * Handle on-the-fly data changes event
+     * 
+     * @param aConversation , conversation change
+     * @param aEvent,  event for the change
+     */
+    void HandleChangeEventL(CCsClientConversation* aConversation,
+            TUint32 aEvent );
+    
+    /**
+     * HandleRefreshConversationListL.
+     * Notify client to refresh conversation list.
+     */
+    void HandleRefreshConversationListL();
+    
+    /**
+     * HandleRefreshConversationList.
+     * Notify client to refresh conversations.
+     */
+    void HandleRefreshConversationL();
+
+   
+private:
+
+    /**
+     * Second phase constructor
+     */
+    void ConstructL();
+
+    /**
+     * Constructor
+     */
+    CCsSession(CCsServer* aServer);
+
+    /**
+     *  Destructor
+     */
+    ~CCsSession();
+
+    /**
+     * DoServiceL
+     * Serve the client requests
+     * 
+     * @param aMessage, RMessage instace
+     */
+    void DoServiceL(const RMessage2& aMessage);
+
+    /**
+     * GetConversationsL
+     * Service method to get the 
+     * conversation entry list for one conversation entry ID
+     * 
+     * @param aMessage RMessage instace
+     */		
+    void GetConversationsL(const RMessage2& aMessage);
+
+    /**
+     * GetConversationListL
+     * Service method to get the 
+     * list of recent(latest) conversation entry and 
+     * list of dispalyname for all stored conversation entry ID
+     * 
+     * @param aMessage RMessage instace
+     */     
+    void GetConversationListL(const RMessage2& aMessage);
+
+    /**
+     * GetConversationUnreadListL
+     * Service method to get the
+     * list of recent(latest) unread conversation entry and
+     * list of dispalyname for all stored conversation entry ID
+     *
+     * @param aMessage RMessage instace
+     */
+    void GetConversationUnreadListL(const RMessage2& aMessage);
+
+    /**
+     * DeleteConversationL
+     * Service method to delete a conversation
+     * 
+     * @param aMessage RMessage instace
+     */     
+    void DeleteConversationL(const RMessage2& aMessage);
+
+    /**
+     * ShutdownServerL
+     * Service method to shutdown the server
+     * 
+     * @param aMessage RMessage instace
+     */
+    void ShutdownServerL(const RMessage2& aMessage);
+
+    /**
+     * RequestChangeEventL
+     * Service method to request add as observer 
+     * for on cache change events
+     * 
+     * @param aMessage RMessage instace
+     */
+    void RequestChangeEventL(const RMessage2& aMessage);
+
+    /**
+     * RemoveChangeEventL
+     * Service method to remove as observer 
+     * for on cache change events
+     * 
+     * @param aMessage RMessage instace
+     */
+    void RemoveChangeEventL(const RMessage2& aMessage);
+
+    /**
+     * GetCachingStatusL
+     * Service method to request conversation server
+     * to get caching status
+     * 
+     * @param aMessage RMessage instace
+     */
+    void GetCachingStatusL(const RMessage2& aMessage);
+
+    /**
+     * GetTotalUnreadCountL
+     * Gets total unread conversation entries.
+     *
+     * @param aMessage RMessage instace
+     */
+    void GetTotalUnreadCountL(const RMessage2& aMessage);
+
+    /**
+     * SetConversationListChangeObserverL
+     * Service method to request conversation server
+     * to set conversation list change observer flag
+     * 
+     * @param aMessage RMessage instace
+     */
+    void SetConversationListChangeObserverL(const RMessage2& aMessage);  
+
+    /**
+     * ResetConversationListChangeObserverL
+     * Service method to request conversation server
+     * to reset conversation list change observer flag
+     * 
+     * @param aMessage RMessage instace
+     */
+    void ResetConversationListChangeObserverL(const RMessage2& aMessage);  
+
+    /**
+     * SetConversationChangeObserverL
+     * Service method to request conversation server
+     * to set conversation change observer flag for given
+     * client conversation
+     * 
+     * @param aMessage RMessage instace
+     */
+    void SetConversationChangeObserverL(const RMessage2& aMessage);  
+
+    /**
+     * ResetConversationChangeObserverL
+     * Service method to request conversation server
+     * to reset conversation change observer flag for given
+     * client conversation 
+     * 
+     * @param aMessage RMessage instace
+     */
+    void ResetConversationChangeObserverL(const RMessage2& aMessage);  
+
+    /**
+     * SetCachingStatusObserverL
+     * Service method to request conversation server
+     * to set caching status observer flag
+     * 
+     * @param aMessage RMessage instace
+     */
+    void SetCachingStatusObserverL(const RMessage2& aMessage);  
+
+    /**
+     * ResetCachingStatusObserverL
+     * Service method to request conversation server
+     * to reset caching status observer flag
+     *  
+     * @param aMessage RMessage instance
+     */
+    void ResetCachingStatusObserverL(const RMessage2& aMessage);  
+
+    /**
+     * NotifyClient
+     * Notify client for cache change event
+     * 
+     * @param aConversationEvent instance of the event to be notified
+     */		
+    void NotifyClient(CCsConversationEvent* aConversationEvent);
+
+    /**
+     * GetConversationIdL
+     * Get the conversation id.
+     * 
+     * @param aMessage RMessage instance
+     */
+    void GetConversationIdL(const RMessage2& aMessage);
+    
+    /**
+     * GetConversationIdfromAddressL
+     * Get the conversation id from address
+     * 
+     * @param aMessage RMessage instance
+     */
+    void GetConversationIdfromAddressL(const RMessage2& aMessage);
+
+    void GetConversationFromConversationIdL(const RMessage2& aMessage);
+	
+	/**
+     * GetConversationFromMessageIdL
+     * Get the conversation from message-id
+     * 
+     * @param aMessage RMessage instance
+     */
+    void GetConversationFromMessageIdL(const RMessage2& aMessage);
+    
+    /**
+     * MarkConversationReadL
+     * Service method to mark a conversation as read.
+     * 
+     * @param aMessage RMessage instance
+    */
+    void MarkConversationReadL(const RMessage2& aMessage);
+    
+private:
+
+    /**
+     * iServer
+     * Reference to server (not owned)
+     */
+    CCsServer*  iServer;
+
+    /**
+     * Buf for doing IPC
+     * Own
+     */
+    HBufC8*  iDes;
+
+    /**
+     * iEventList
+     * Temp list of cache change event 
+     * Own
+     */
+    RPointerArray<CCsConversationEvent>*  iEventList;
+
+    /**
+     * iMonitoredConversation
+     * Conversation monitored for changes.
+     */
+    CCsClientConversation*  iMonitoredConversation;
+
+    /**
+     * iAsyncReqRMessage
+     * Store RMeessage received from clinet
+     * for cache change event notification
+     *  (NotOwned)
+     */
+    RMessagePtr2  iAsyncReqRMessage;
+
+    /**
+     * iBufferOverflow
+     * boolean to make if overflow has occured
+     */
+    TBool iBufferOverflow;
+
+    /**
+     * iGetConversationBufferOverflow
+     * boolean to make if overflow has occured in API GetConversation
+     */
+    TBool iGetConversationBufferOverflow;
+
+    /**
+     * iNotifyHandling
+     * iAsyncReqRMessage is valid or not for
+     * notification handling
+     * Owned
+     */
+    TBool iNotifyHandling;
+
+    /**
+     * iConversationListChangeObserver
+     * It will true if observer
+     * registered for conversation List change event
+     * Owned
+     */        
+    TBool  iConversationListChangeObserver;
+
+    /**
+     * iConversationChangeObserver
+     * It will true if observer
+     * registered for conversation change observer
+     * Owned
+     */
+    TBool  iConversationChangeObserver;
+
+    /**
+     * iCachingChangeObserver
+     * It will true if observer
+     * registered for caching status change observer
+     * Owned
+     */
+    TBool  iCachingChangeObserver;
+
+    /**
+     * iReqCnt
+     * Maintains the count of requests which are being served
+     */
+    TInt iReqCnt;
+    };
+
+#endif // __C_CS_SESSION_H
+