msg_plat/conversation_services_client_api/inc/ccsrequesthandler.h
changeset 23 238255e8b033
child 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/msg_plat/conversation_services_client_api/inc/ccsrequesthandler.h	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,519 @@
+/*
+* 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:  This is the client side server interface. This class makes 
+*               request to the server and is an interface b/w UI Engine and server.
+*
+*/
+
+#ifndef __C_CS_REQUEST_HANDLER_H__
+#define __C_CS_REQUEST_HANDLER_H__
+
+// INCLUDE FILES
+
+// SYSTEM INCLUDES
+#include <mcsplugineventobserver.h>
+
+// USER INCLUDES
+#include <rcssession.h>
+
+// FORWARD DECLARATIONS
+class CCsConversationEntry;
+class CCsClientConversation;
+class MCsConversationListChangeObserver;
+class MCsConversationChangeObserver;
+class CCsConversationChangeObserver;
+class MCsResultsObserver;
+class MCsCachingStatusObserver;
+class CCsConversationCache;
+class CCsNotificationHandler;
+
+// CLASS DECLARATION
+/**
+ * CCSRequestHandler
+ * This class handles all request and response to server and 
+ * act as a interface b/w UI engine and Conversation server
+ *
+ * @remarks Lib: CsServerClientAPI.lib
+ * @since S60 v5.0
+ */
+class CCSRequestHandler : public CActive
+    {
+    
+public: // Constructors and destructors
+
+    /**
+     * NewL.
+     * Two-phased constructor.
+     * Creates a CCSRequestHandler object using two phase construction,
+     * and return a pointer to the created object
+     *
+     * @return A pointer to the created instance of CCSRequestHandler.
+     */
+    IMPORT_C static CCSRequestHandler* NewL ();
+
+    /**
+     * NewLC.
+     * Two-phased constructor.
+     * Creates a CCSRequestHandler object using two phase construction,
+     * and return a pointer to the created object.
+     *  
+     * @return A pointer to the created instance of CCSRequestHandler.
+     */
+    IMPORT_C static CCSRequestHandler* NewLC ();
+
+    /**
+     * ~CCSRequestHandler.
+     * Destructor.
+     * Destroys the object and release all memory objects.
+     */
+    virtual ~CCSRequestHandler ();
+
+public: // New functions
+
+    /**
+     * Version.
+     * Returns the conversation server version.
+     * Synchronous.
+     * 
+     * @return The current version of conversation server.
+     */
+    IMPORT_C TVersion Version () const;     
+
+    /**
+     * RequestResultsEventL.
+     * Adds observer to handle async results from server
+     * Synchronous.
+     * 
+     * @param aObserver The object to be used to handle updates 
+     * from the server.
+     */
+    IMPORT_C void RequestResultsEventL ( MCsResultsObserver* aObserver );
+
+    /**
+     * RemoveResultsEventL.
+     * Removes observer that handle async results from server
+     * 
+     * @param aObserver The object used to handle updates from the server.
+     */
+    IMPORT_C void RemoveResultsEventL ( MCsResultsObserver* aObserver );
+
+    /**
+     * RequestConversationListChangeEventL
+     * Adds observer to handle real time conversation list 
+     * change events from server
+     * Synchronous.
+     * 
+     * @param aObserver The object The object to be notified for updates 
+     * from the server.
+     */
+    IMPORT_C void RequestConversationListChangeEventL ( 
+            MCsConversationListChangeObserver* aObserver );
+
+    /**
+     * RemoveConversationListChangeEventL
+     * Removes observer that handles real time conversation list 
+     * change events from server
+     * Synchronous.
+     * 
+     * @param aObserver The object used to handle updates from the server.
+     */
+    IMPORT_C void RemoveConversationListChangeEventL ( 
+            MCsConversationListChangeObserver* aObserver );
+
+    /**
+     * RequestConversationChangeEventL
+     * Adds observer to handle real time updates for conversation 
+     * change events from server. As of now its for Meco second view
+     * Synchronous.
+     * 
+     * @param aObserver The object to be notified for updates 
+     *                  from the server.
+     * @param aClientConversation Client conversation object
+     */
+    IMPORT_C void RequestConversationChangeEventL ( 
+            MCsConversationChangeObserver* aObserver ,
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * RemoveConversationChangeEventL
+     * Removes observer that handle async conversation 
+     * change events from server
+     * Synchronous.
+     * 
+     * @param aObserver The object used to handle updates from the server.
+     * @param aClientConversation Client conversation object
+     */
+    IMPORT_C void RemoveConversationChangeEventL ( 
+            MCsConversationChangeObserver* aObserver ,
+            CCsClientConversation* aClientConversation);
+
+    /**
+     * RequestCachingStatusEventL
+     * Adds observer to handle async caching status events from server
+     * Synchronous.
+     * 
+     * @param aObserver The object to be used to handle updates 
+     *                  from the server.
+     */
+    IMPORT_C void RequestCachingStatusEventL ( 
+            MCsCachingStatusObserver* aObserver );
+
+    /**
+     * RemoveCachingStatusEventL
+     * Removes observer that handle async caching status events from server
+     * Synchronous.
+     * 
+     * @param aObserver The object used to handle updates from the server.
+     */
+    IMPORT_C void RemoveCachingStatusEventL ( 
+            MCsCachingStatusObserver* aObserver);
+
+    /**
+     * ShutdownServerL.
+     * Shuts down the conversation server.
+     * Synchronous.
+     * 
+     * CAUTION: Shutdown of conversation server 
+     * shouldn't be done for each session.
+     * It should be done only when the conversation server
+     * needs to be completely shutdown.
+     */
+    IMPORT_C void ShutdownServerL();
+
+    /**  
+     * Get Recent Conversation Entry list with display name
+     * for all stored conversation entry IDs.
+     * This is a Async API. 
+     */
+    IMPORT_C void GetConversationListL();
+
+    /**
+     * Get Recent unread Conversation Entry list with display name
+     * for all stored conversation entry IDs.
+     * Synchronous.
+     *
+     * @param aClientConversationList Pointer to list of CCsClientConversation
+     * having only unread conversation entries.
+     * @attention Caller is owner of aClientConversationList. ResetAndDestroy(),
+     * Close() & delete needs to be called to avoid memory leaks.
+     */
+    IMPORT_C void GetConversationUnreadListL(RPointerArray<
+            CCsClientConversation>* aClientConversationList);
+
+    /**
+     * Get Conversation Entry list for given Conversation Entry ID.
+     * This is a Async API. 
+     * 
+     * @param aClientConversation - class encapsulating Conversation Entry ID 
+     */
+    IMPORT_C void GetConversationsL( 
+            CCsClientConversation* aClientConversation );
+
+    /**
+     *  Delete a conversation.
+     *  Synchronous.
+     *  
+     *  @param aConversationId The conversation id.
+     */
+    IMPORT_C void DeleteConversationL(TInt aConversationId);            
+    
+    /**
+     * GetCachingStatusL
+     * Get caching status
+     * Synchronous. 
+     * 
+     * @return  Caching Status 
+     * KCacheStatusUnknwon / KCacheStatusStarted /
+     * KCacheStatusCompleted / KCacheStatusError
+     */
+    IMPORT_C TUint8 GetCachingStatusL();
+
+    /**
+     * GetTotalUnreadCountL
+     * Get total unread conversation entries.
+     * Synchronous.
+     *
+     * @return  Total unread conversation entries.
+     */
+    IMPORT_C TUint32 GetTotalUnreadCountL();
+     
+    /**
+     * Get the conversation identifier for a contact.
+     * @param Contact Id.
+     * @return Conversation Id.
+     */
+    IMPORT_C TInt GetConversationIdL ( TInt aContactId );
+	
+	/**
+     * Get the conversation identifier for a contact.
+     * @param Contact address.
+     * @return Conversation Id.
+     */
+    IMPORT_C TInt GetConversationIdFromAddressL ( TDesC& aContactAddress );
+    
+    /**
+     * MarkConversationReadL
+     * Mark conversation as read.
+     * This is Sync API.
+     * Read status is set in the background.
+     * 
+     * @param aConversationId Conversation Id.
+     */
+    IMPORT_C void MarkConversationReadL ( TInt aConversationId );
+    
+    /**
+     * GetMessagingHistoryL.
+     * Get the messaging history for a contact.
+     * This is Async API.
+     * Data is returned via MCsResultsObserver.
+     * 
+     * @param aContactId Contact Id.
+     */
+    IMPORT_C void GetMessagingHistoryL ( TInt aContactId );
+
+    /**
+     * ClearMessagingHistoryL
+     * Clear the messaging history for a contact.
+     * This is Sync API.
+     * Delete is done in the background.
+     * 
+     * @param aContactId Contact Id.
+     */
+    IMPORT_C void ClearMessagingHistoryL ( TInt aContactId );
+    
+    /**
+     * MarkMessagingHistoryReadL
+     * Set the messaging history as read.
+     * This is Sync API.
+     * Read status is set in the background.
+     * 
+     * @param aContactId Contact Id.
+     */
+    IMPORT_C void MarkMessagingHistoryReadL ( TInt aContactId );
+    
+protected: // Functions from base classes
+
+    /**
+     * RunL
+     * From CActive, RunL.
+     * Callback function.
+     * Invoked to handle responses from the server.
+     */
+    void RunL();
+
+    /**
+     * DoCancel
+     * From CActive, DoCancel.
+     * Cancels any outstanding operation.
+     */
+    void DoCancel ();
+
+private: // Constructors and destructors
+
+    /**
+     * CCSRequestHandler.
+     * Performs the first phase of two phase construction.
+     */
+    CCSRequestHandler ();
+
+    /**
+     * ConstructL.
+     * Performs the second phase construction of a
+     * CCSRequestHandler object.
+     */
+    void ConstructL ();
+
+    /**  
+     * HandleGetConversationListResults
+     * This is for handling GetEntryList results asynchronusly
+     * from the server.
+     */
+    void HandleGetConversationListResults();
+
+    /**  
+     * HandleGetConversationResults
+     * This is for handling GetConversation results  
+     * async callback from server.
+     */
+    void HandleGetConversationResults();
+
+    /**  
+     * HandleGetConversationListOverflow.
+     * This is for handling GetEntryList results buffer 
+     * overflow error.
+     */
+    void HandleGetConversationListOverflow();
+
+    /**  
+     * HandleGetConversationOverflow.
+     * This is for handling GetConversation results buffer 
+     * overflow error.
+     */
+    void HandleGetConversationOverflow();
+
+    /**
+     * HandleErrorL.
+     * Handles error events from server.
+     * 
+     * @param aErrorCode Error code .
+     */
+    void HandleErrorL ( TInt aErrorCode );   
+
+    /**
+     * HandleAddConversationList.
+     * Handles new conversation list event.
+     */
+    void HandleAddConversationList (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleDeleteConversationList.
+     * Handles delete conversation list event.
+     */
+    void HandleDeleteConversationList (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleModifyConversationList.
+     * Handles modify conversation list event.
+     */
+    void HandleModifyConversationList (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleAddConversation.
+     * Handles add conversation event.
+     */
+    void HandleAddConversation (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleDeleteConversationEvent.
+     * Handles delete conversation event.
+     */
+    void HandleDeleteConversation (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleModifyConversationEvent.
+     * Handles modify conversation event.
+     */
+    void HandleModifyConversation (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleCachingStarted.
+     * Handles caching started event.
+     */
+    void HandleCachingStarted (HBufC8* aResultsBuffer); 
+
+    /**
+     * HandleCachingCompleted.
+     * Handles caching Completed event.
+     */
+    void HandleCachingCompleted (HBufC8* aResultsBuffer);
+
+    /**
+     * HandleCachingError
+     * Handles caching error event.
+     */
+    void HandleCachingError (HBufC8* aResultsBuffer);
+    
+    /**
+     * HandleRefreshConversationList
+     * Handles refresh list event.
+     */
+    void HandleRefreshConversationList (HBufC8* aResultsBuffer);
+    
+    /**
+     * HandleRefreshConversation
+     * Handles refresh event.
+     */
+    void HandleRefreshConversation (HBufC8* aResultsBuffer);
+
+private: // Data
+
+    friend class CCsNotificationHandler;
+    
+    /**
+     * iSession
+     * The conversation server csession.
+     * Own.  
+     */
+    RCsSession iSession;
+
+    /**
+     * iResultsObserver
+     * Observer which handles conversation event from server.
+     * Own.
+     */
+    MCsResultsObserver* iResultsObserver;
+
+    /**
+     * iConversationListChangeObserver
+     * Observer which handle conversation list changes.
+     * Own.
+     */
+    MCsConversationListChangeObserver* iConversationListChangeObserver;
+
+    /**
+     * iConversationChangeObserver
+     * Observer which handles conversation changes.
+     * Own.
+     */
+    CCsConversationChangeObserver* iConversationChangeObserver;
+
+    /**
+     * iCachingChangeObserver
+     * Observers which handle conversation change events from server.
+     * Own.
+     */
+    MCsCachingStatusObserver* iCachingStatusObserver;
+
+    /**
+     * iBuffer
+     * The buffer that holds the conversation data like contact 
+     * or conversation entry id. Required for IPC with server.
+     * Own.
+     */
+    HBufC8* iBuffer;
+
+    /**
+     * iResultsBuffer.
+     * The buffer hold the response data for IPC communication.
+	 * Use this buffer sync calls to server.
+     * Own.
+     */
+    HBufC8* iResultsBuffer;
+    
+    /**
+     * iListResultsBuffer.
+     * The buffer is used for async call to get conversation list 
+	 * from server.
+     * Own.
+     */	 
+    HBufC8* iListResultsBuffer;
+	
+    /**
+     * iConvResultsBuffer.
+ 	 * The buffer is used for async call to get conversations 
+	 * from server.
+     * Own.
+     */
+    HBufC8* iConvResultsBuffer;
+	
+    /**
+     * iNotificationHandler
+     * Own.
+     */
+    CCsNotificationHandler* iNotificationHandler;
+    
+    };
+#endif //__C_CS_REQUEST_HANDLER_H__
+
+// End of File